У меня, вроде, ваша. Работает нормально. После предыдущих комментариев присмотрелся сегодня - действительно есть "двоение". Только не на всех чеках. И ещё. Есть подозрение, что с самой обработкой это не связано. Так как раньше такого не наблюдалось. Что приводит к появлению двойников не понятно.
Допилю на днях эту
фичу
баг, вчера только нашел причину.
Исправленную версию с автозагрузкой выложу тут же.
Для начала давайте действительно примем тот факт, что версий данного расширения у нас две.
1) "Типовая" версия, выложенная здесь её автором Астахов Петр (ООО ИК Каскад, Наро-Фоминск)
2) "НЕтиповая" версия - то же самое расширение, но доработанное мной для автоматической загрузки (делал исключительно для себя, но мне не жалко
наносить добро и причинять справедливость этому миру
поделиться со всеми :-)).
Фича
Косяк, приводящий к задвоению в следующем. Изначально в комментарий складывалась информация где параметр "ФД" так и записывался кирилицей. Позже (я заметил, что это изменилось где-то 24.04.2018) этот же самый параметр начал записываться в комментарий на латинице символом "i". В этом и суть ошибки. Обработка при загрузке списка чеков не может сопоставить существующий документ в БД (База Данных, если кто не в теме) с тем, что этот вот наш чек уже заведён и:
1) Типовая просто отображает пользователю, что вот на этот чек нужно завести документ (Шо?! Опять?!)
2) НЕтиповая при ручной загрузке делает также как и типовая, а при автоматической загрузке создаёт документ. При этом она создаёт его при КАЖДОЙ итерации (раз в 300 секунд) (Прямо таки восстание машин).
Исправляется это путём доработки запроса и его параметров, вот так сделал я (смотри комментарии //Ў):
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 2
| Расход.Ссылка КАК Документ,
| Расход.Проведен Как Проведен
|ИЗ
| Документ.Расход КАК Расход
|ГДЕ
| ВЫБОР
| Когда Расход.СуммаОплаты > &СуммаРасхода
| тогда Расход.СуммаОплаты - &СуммаРасхода
| иначе &СуммаРасхода - Расход.СуммаОплаты
| КОНЕЦ < 1
| И НАЧАЛОПЕРИОДА(Расход.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(&ДатаДокумента, ДЕНЬ)
| //УчитыватьКомментарий И (Расход.Комментарий ПОДОБНО &Комментарий
//Ў+
| //УчитыватьКомментарий ИЛИ Расход.Комментарий ПОДОБНО &Комментарий_2)
//Ў-
|
|УПОРЯДОЧИТЬ ПО
| ВЫБОР
| КОГДА &ДатаДокумента > Расход.Дата
| ТОГДА -РАЗНОСТЬДАТ(&ДатаДокумента, Расход.Дата, СЕКУНДА)
| ИНАЧЕ РАЗНОСТЬДАТ(&ДатаДокумента, Расход.Дата, СЕКУНДА)
| КОНЕЦ";
Запрос.УстановитьПараметр("СуммаРасхода", СтрокаЧеков.СуммаДокумента);
Запрос.УстановитьПараметр("ДатаДокумента", СтрокаЧеков.Дата);
Запрос.УстановитьПараметр("Комментарий", "%ФД="+СтрокаЧеков.ФД+"%"); //БСА. Вставка
Запрос.УстановитьПараметр("Комментарий_2", "%i="+СтрокаЧеков.ФД+"%"); //Ў+-
Данную ошибку в НЕтиповой версии исправил.
Также в свою версию добавил на закладку "Настройки" галочку "Автозагрузка" (т.к. выше многие жалуются на самоуправство программы, хе-хе-хе). По умолчанию (при открытии) она не установлена и автоматическая загрузка с созданием документов не будет производится. Если нужно, то ставим галочку руками и программа будет грузить и создавать всё автоматом (раз в 300 секунд).
Попозже если будет желание и время, то сделаю нормальную настройку расписания, пока - лень :-)
Просто совет, а не руководство к действию: можно создать отдельный кошелёк для автозагрузки, например у меня - это кошелёк с названием "робот". Данный кошелек ставим в форме обработки загрузки (закладка "Загрузка чека" реквизит "Кошелек:") и именно на него она будет кидать всё сама - далее уже перебрасывать руками.
Что приводит к появлению двойников не понятно.
Причины двойников я описал в предыдущем своём сообщении. Если у вас в этот (условно) день два документа в БД с одинаковой суммой, то обработка не может понять какой из этих документов конкретно относится к текущему чеку и выдаёт пусто. Методы исправления также описал. В случае, когда в течении одной даты суммы всегда разные, то всё будет происходить нормально и штатно, т.е. не будет двоить.
Найден ещё один баг в ответах сервера ФНС. Иногда в ответе дублируются данные по чеку. Проверял в приложении - один чек, делаю запрос из 1С и вижу в ответе дважды один и тот же чек. Странная фигня, но способ её победить нашел.
В 4й версии НЕтипового расширения исправил (АП_ЗагрузкаЧеков_НЕтиповая_Ўv4.cfe).
Чтобы исправить самостоятельно нужно добавить в процедуру ЗагрузитьСписокНаСервере():
Инд = 0; //Ў+-
Для Каждого Чек из СписокДокументов Цикл
ПолныйЧек = Чек.document.receipt;
//Ў+
Если НЕ Инд = СписокДокументов.ВГраница() Тогда
Если ПолныйЧек.dateTime = СписокДокументов[Инд + 1].document.receipt.dateTime //Дата и время равны до секунды
И ПолныйЧек.kktRegId = СписокДокументов[Инд + 1].document.receipt.kktRegId //Рег. номер кассы одинаковый
И ПолныйЧек.totalSum = СписокДокументов[Инд + 1].document.receipt.totalSum //Итого в чеке одинаково
И ПолныйЧек.userInn = СписокДокументов[Инд + 1].document.receipt.userInn Тогда //ИНН продавца одинаковый
//это глючный ответ сервера ФНС, опять двоит данные.
//т.к. следующий чек у нас 100% такой же, то текущий просто пропускаем
Инд = Инд + 1;
//не забыть еще в конце цикла установить повышение !!!-=<Инд>=-!!!
Продолжить;
КонецЕсли;
КонецЕсли;
//Ў-
СтрокаЧеков = СписокЧеков.Добавить();
СтрокаЧеков.Дата = ПолучитьДату(ПолныйЧек.dateTime);
СтрокаЧеков.ИНН = СокрЛП(ПолныйЧек.userInn); //БСА. Вставил СокрЛП
Если ПолныйЧек.Свойство("user") Тогда
СтрокаЧеков.Магазин = СокрЛП(ПолныйЧек.user); //БСА. Вставил СокрЛП
КонецЕсли;
ВАЖНО - не забываем добавлять увеличение переменной "Инд" в конце цикла.
Если у вас НЕтиповое расширение, то нужно еще не забыть сделать тоже самое в процедуре ЗагрузитьСписокНаСервереАвтоматически()
Если вам вообще всё лень, то качаем 4ю версию и устанавливаем её.
Надеюсь эта информация будет полезна всем.
ФНС России сделала некоторые разъяснения по использованию электронных чеков.
1. ВАЖНО! Срок хранения кассового чека в электронной форме на сайте ФНС России, а также срок доступа к получению кассового чека через приложение "Проверка чеков" НЕ УСТАНОВЛЕН.
На практике это значит, что если вы понадеетесь на возможность скачать чек потом, чек можно не получить. Если есть возможность - лучше не затягивать.
2. Если кто не в курсе. Во многих магазинах сегодня можно получить копию чека на мобильный телефон (в СМС) или на e-mail, если вы попросили об этом заранее, ДО МОМЕНТА расчёта на кассе! Многие не пользуются этой возможностью, так как диктовать номер телефона кассиру - долго. Адрес эл. почты - взбесит всю очередь. Однако в приложении "Проверка чеков" есть меню "Моя визитная карточка" (самый верхний пункт). Там есть QR-коды, которые кассир может считать сканером. Во многих торговых сетях сканеры считывают уверенно.
3. ФНС также подтвердила, что на сайтах ОФД можно проверить, в том числе факт выдачи чека покупателю, правда не указала как именно.
4. Что касается порядка использования копии эл. чека, распечатанной на бытовом принтере для подачи обращения в Роспотребнадзор, например, в случае продажи некачественного товара, то это вопрос, пока в стадии изучения.
До 14.12.2018 все чеки загружались через мобильное приложение https://itunes.apple.com/ru/app/%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D0%BA%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE-%D1%87%D0%B5%D0%BA%D0%B0-%D0%B2-%D1%84%D0%BD%D1%81-%D1%80%D0%BE%D1%81%D1%81%D0%B8%D0%B8/id1169353005?mt=8
Неделю уже приложение скачивает данные чека, но номенклатуру не подгружает. Вышла из приложения - зайти не могу "Сервер не отвечает, проверьте соединение". У меня всё нормально соединением. Значит... И что делать?
Если начинаю вручную через внешнюю обработку загружать по ФП ФН ФД, то выдает ошибки (в скринах)
Что делать? Куда бежать, писать?
Столько чеков уже зависло - перед новым годом то столько трат(((
Найден ещё один баг в ответах сервера ФНС. Иногда в ответе дублируются данные по чеку. Проверял в приложении - один чек, делаю запрос из 1С и вижу в ответе дважды один и тот же чек. Странная фигня, но способ её победить нашел.
В 4й версии НЕтипового расширения исправил (АП_ЗагрузкаЧеков_НЕтиповая_Ўv4.cfe).
Чтобы исправить самостоятельно нужно добавить в процедуру ЗагрузитьСписокНаСервере():
Инд = 0; //Ў+-
Для Каждого Чек из СписокДокументов Цикл
ПолныйЧек = Чек.document.receipt;
//Ў+
Если НЕ Инд = СписокДокументов.ВГраница() Тогда
Если ПолныйЧек.dateTime = СписокДокументов[Инд + 1].document.receipt.dateTime //Дата и время равны до секунды
И ПолныйЧек.kktRegId = СписокДокументов[Инд + 1].document.receipt.kktRegId //Рег. номер кассы одинаковый
И ПолныйЧек.totalSum = СписокДокументов[Инд + 1].document.receipt.totalSum //Итого в чеке одинаково
И ПолныйЧек.userInn = СписокДокументов[Инд + 1].document.receipt.userInn Тогда //ИНН продавца одинаковый
//это глючный ответ сервера ФНС, опять двоит данные.
//т.к. следующий чек у нас 100% такой же, то текущий просто пропускаем
Инд = Инд + 1;
//не забыть еще в конце цикла установить повышение !!!-=<Инд>=-!!!
Продолжить;
КонецЕсли;
КонецЕсли;
//Ў-
СтрокаЧеков = СписокЧеков.Добавить();
СтрокаЧеков.Дата = ПолучитьДату(ПолныйЧек.dateTime);
СтрокаЧеков.ИНН = СокрЛП(ПолныйЧек.userInn); //БСА. Вставил СокрЛП
Если ПолныйЧек.Свойство("user") Тогда
СтрокаЧеков.Магазин = СокрЛП(ПолныйЧек.user); //БСА. Вставил СокрЛП
КонецЕсли;
ВАЖНО - не забываем добавлять увеличение переменной "Инд" в конце цикла.
Если у вас НЕтиповое расширение, то нужно еще не забыть сделать тоже самое в процедуре ЗагрузитьСписокНаСервереАвтоматически()
Если вам вообще всё лень, то качаем 4ю версию и устанавливаем её.
Эта обработка тоже не работает. Не входит в группу "файлы 1С". Когда выбираешь "Все файлы" - открывается билибирда какая то
Так а вы чего творите то? :-)
Это не обработка, а расширение для конфигурации. Порядок его подключения описан в начале этой темы :-)
https://forum.1c.ru/money/topic/11348