Нет буквы М в чеке ФФД 1.2 молочная продукция
Доброй ночи коллеги! Который день не могу победить перевод самописной на базе БПО на работу с молочной маркировкой под 1.2. Всё работает, но буква М в чеке не вылазит. 1с формирует вот такой xml
Насколько корректно? Еще момент на испытуемой кассе после прошивки проблемы с передачей данных в ОФД может быть в этом причина? Я так понимаю, что если марку проверить вообще не удалось (нет связи) то должна быть М, если проверка не прошла М-, если прошла М+ Но независимо от обмена с ОФД буква М быть должна? Или нет? Всё что можно уже на ИС и в интернете вообще перечитал, но там в основном про обувь....
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters CashierName=" .*****" OperationType="1" TaxationSystem="5" CustomerEmail="" CustomerPhone="">
<AgentData/>
<VendorData/>
<CustomerDetail/>
<OperationalAttribute/>
<IndustryAttribute/>
</Parameters>
<Positions>
<FiscalString Name="Тест маркировки МП" Quantity="1" PriceWithDiscount="0.1" AmountWithDiscount="0.1" DiscountAmount="0" Department="0" VATRate="none" VATAmount="" PaymentMethod="" MeasureOfQuantity="255">
<GoodCodeData GS1.M="MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1POTNTOXBs"/>
<AgentData/>
<VendorData/>
<IndustryAttribute/>
</FiscalString>
</Positions>
<Payments Cash="0.1" ElectronicPayment="0" PrePayment="0" PostPayment="0" Barter="0"/>
</CheckPackage>
ПоказатьНасколько корректно? Еще момент на испытуемой кассе после прошивки проблемы с передачей данных в ОФД может быть в этом причина? Я так понимаю, что если марку проверить вообще не удалось (нет связи) то должна быть М, если проверка не прошла М-, если прошла М+ Но независимо от обмена с ОФД буква М быть должна? Или нет? Всё что можно уже на ИС и в интернете вообще перечитал, но там в основном про обувь....
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
если ещё актуально, то могу выдернуть логи с атола30. у клиента недавно тренировались. там правда типовая конфа была
по буквам - все верно. они до этого убрали обязательность буквы М, с 1.2 вернули снова, чтобы себя контролировать видимо
Насколько корректно? Еще момент на испытуемой кассе после прошивки проблемы с передачей данных в ОФД может быть в этом причина? Я так понимаю, что если марку проверить вообще не удалось (нет связи) то должна быть М, если проверка не прошла М-, если прошла М+ Но независимо от обмена с ОФД буква М быть должна? Или нет? Всё что можно уже на ИС и в интернете вообще перечитал, но там в основном про обувь....
если ещё актуально, то могу выдернуть логи с атола30. у клиента недавно тренировались. там правда типовая конфа была
по буквам - все верно. они до этого убрали обязательность буквы М, с 1.2 вернули снова, чтобы себя контролировать видимо
(4)
если поможет. там чек с успешной маркой (М+) молока (без ВЕТИС). Вчера пробивали.
Кусок лога - 1С передает на Атол
Добрый день! Да, актуально! Если есть возможность выдернуть что-то буду очень рад. Особенно бы XML, которую 1с формирует.
если поможет. там чек с успешной маркой (М+) молока (без ВЕТИС). Вчера пробивали.
Кусок лога - 1С передает на Атол
Прикрепленные файлы:
новый 1.txt
На вскидку: марку передавать в MarkingCode (полный код с разделителями в BASE64), CashierName левый, PaymentMethod не указан, CalculationSubject отсутствует.
Про букву М - да, должна быть.
Я БПО именно для маркировки не настраивал, там что совсем нет формирования xml для ККМ? Я бы тогда посоветовал подсмотреть в типовых: взять, например, Розницу, несколько минут делов - настроить ККМ, добавить и попробовать пробить пробный товар, отладчиком пройтись по формированию xml (найти глобальным поиском по "CheckPackage").
(2) Добый день! За наводку спасибо. Но, MarkingCode это же тег 1162, а нам надо 1163 на ФФД 1.2 т.е.
Раньше было вот так:
<GoodCodeData MarkingCode="RE0EMHcZcDZpVDNXTyU7QUI+OCAg"/>
А теперь надо вот так:
<GoodCodeData GS1.M="MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1POTNTOXBs"/>
Во втором варианте (из этой темы) это BASE64. Поясните, что понимается под разделителями? Первый вариант работал на 1.05 и всё было ок, но на 1.2 там идет другое заполнение XML. В типовых смотрел код, и вроде как всё также. Должно быть
<GoodCodeData GS1.M="Код марки в base64"/>
Раньше было вот так:
<GoodCodeData MarkingCode="RE0EMHcZcDZpVDNXTyU7QUI+OCAg"/>
А теперь надо вот так:
<GoodCodeData GS1.M="MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1POTNTOXBs"/>
Во втором варианте (из этой темы) это BASE64. Поясните, что понимается под разделителями? Первый вариант работал на 1.05 и всё было ок, но на 1.2 там идет другое заполнение XML. В типовых смотрел код, и вроде как всё также. Должно быть
<GoodCodeData GS1.M="Код марки в base64"/>
(5) Не было так, смотрите внимательнее описание структуры CheckPackage, GoodCodeData это код товара, а код марки это MarkingCode.
"<GoodCodeData MarkingCode=" - вообщенет такого .
Разделители это символы GS, его нет в "MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1POTNTOXBs", должно быть "MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1PHTkzUzlwbA==".
"<GoodCodeData MarkingCode=" - вообще
Разделители это символы GS, его нет в "MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1POTNTOXBs", должно быть "MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1PHTkzUzlwbA==".
(1) Вот кусок xml чека из Розницы, касса на ффд 1.2, буква М в чеке печатается
<FiscalString Name="Сметана ВОЖГАЛЫ 15% 250 г"
Quantity="1"
PriceWithDiscount="53"
AmountWithDiscount="53"
DiscountAmount="0"
Department="1"
VATRate="none"
VATAmount="0"
PaymentMethod="4"
CalculationSubject="1"
MeasurementUnit=""
MarkingCode="MDEwNDYwNzA4NjU1MDczMTIxNUInO1JJHTkzZjhnYg=="
MeasureOfQuantity="0">
<AgentData/>
<VendorData/>
<IndustryAttribute/>
</FiscalString>
Показать
(8)(6) Спасибо большое!!! Примерно понял в какую сторону можно "копать". Про разделители еще хотелось уточнить. Вот я сканирую код на марке, кодирую его в BASE64 и добавляю справа "==" ? Или сначала добавляю, а потом всё в BASE64? Или вообще не просто добавляю символы "==", а как-то более хитро? Спасибо еще раз за помощь!
Доработал формирование XML теперь формируется вот так
Но при попытке печати чека "Контрольная марка не проверена". Причем это ошибка кассы судя по всему, ибо перед этим сообщением система замирает на несколько секунд, явно идет какой-то обмен. Поискал и просмотрел процедуры и функции связанные с проверкой КМ и однозначного места проблемы не нашел. Такое чувство, что идет запрос к драйверу. получается ошибка и всё улетает в исключение....
<Positions>
<FiscalString Name="Тест маркировки МП" Quantity="1" PriceWithDiscount="0.1" AmountWithDiscount="0.1" DiscountAmount="0" Department="0" VATRate="none" VATAmount="" PaymentMethod="" MeasureOfQuantity="255" MarkingCode="MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1POTNTOXBsHR0=">
<AgentData/>
<VendorData/>
<IndustryAttribute/>
</FiscalString>
</Positions>
Но при попытке печати чека "Контрольная марка не проверена". Причем это ошибка кассы судя по всему, ибо перед этим сообщением система замирает на несколько секунд, явно идет какой-то обмен. Поискал и просмотрел процедуры и функции связанные с проверкой КМ и однозначного места проблемы не нашел. Такое чувство, что идет запрос к драйверу. получается ошибка и всё улетает в исключение....
(10) все то же самое что я писал в (2): PaymentMethod не указан, CalculationSubject отсутствует, MarkingCode неправильный.
MarkingCode в вашем примере должен быть Base64Строка(ПолучитьДвоичныеДанныеИзСтроки("01046006050156502151x2mO" + Символ(29) + "93S9pl")), но - на всякий случай - не нужно самому разделители добавлять, нужно закодировать марку с разделителями поступившую со сканера (проверьте что сканер разделители GS передает, настройте его если нет).
Проверку КМ вообще выполняете перед пробитием чека?
MarkingCode в вашем примере должен быть Base64Строка(ПолучитьДвоичныеДанныеИзСтроки("01046006050156502151x2mO" + Символ(29) + "93S9pl")), но - на всякий случай - не нужно самому разделители добавлять, нужно закодировать марку с разделителями поступившую со сканера (проверьте что сканер разделители GS передает, настройте его если нет).
Проверку КМ вообще выполняете перед пробитием чека?
(14)
Попробовал вот прямо ваш пример передать на кассу, получил
Но ошибка та же - Контрольная марка не проверена. По поводу не заполненных полей проблема то явно не в них, хотя спасибо, что обратили внимание - разберемся. Тут еще другой момент вылез любопытный ЦТО говорит, что касса на последнем релизе прошивки (шили неделю назад) но при этом верся 5.8.1, а первая версия с поддержкой ФФД 1.2 согласно истории релизов атола 5.8.3, а версии 5.8.1 как бы вообще не было (для конечного пользователя) не в этом ли причина....
Спасибо, что помогаете!
Base64Строка(ПолучитьДвоичныеДанныеИзСтроки("01046006050156502151x2mO" + Символ(29) + "93S9pl"))
Попробовал вот прямо ваш пример передать на кассу, получил
<FiscalString Name="Тест маркировки МП" Quantity="1" PriceWithDiscount="0.1" AmountWithDiscount="0.1" DiscountAmount="0" Department="0" VATRate="none" VATAmount="" PaymentMethod="" MeasureOfQuantity="255" MarkingCode="MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1PHTkzUzlwbA==">
<AgentData/>
<VendorData/>
<IndustryAttribute/>
</FiscalString>
Но ошибка та же - Контрольная марка не проверена. По поводу не заполненных полей проблема то явно не в них, хотя спасибо, что обратили внимание - разберемся. Тут еще другой момент вылез любопытный ЦТО говорит, что касса на последнем релизе прошивки (шили неделю назад) но при этом верся 5.8.1, а первая версия с поддержкой ФФД 1.2 согласно истории релизов атола 5.8.3, а версии 5.8.1 как бы вообще не было (для конечного пользователя) не в этом ли причина....
Спасибо, что помогаете!
(15)
Проверка марки может по нескольким причинам не проходить, причем одновременно, с неправильной маркой (в частности - без разделителей GS) проверка не пройдет независимо от версии прошивки, драйвера, настроек ИСМ и т.п.
Если с маркой разобрались, то смотрим дальше.
"но при этом верся 5.8.1" это где смотрите? Версию прошивки смотреть еще уметь нужно, 5.8.1 это скорее всего версия загрузчика а не прошивки, распечатайте на ККМ из теста драйвера отчет "Информация о ККТ".
И повторю вопрос:проверку КМ вообще выполняете перед пробитием чека?
Через тест драйвера проверка КМ проходит? Или через тест в БПО,например ?
Проверка марки может по нескольким причинам не проходить, причем одновременно, с неправильной маркой (в частности - без разделителей GS) проверка не пройдет независимо от версии прошивки, драйвера, настроек ИСМ и т.п.
Если с маркой разобрались, то смотрим дальше.
"но при этом верся 5.8.1" это где смотрите? Версию прошивки смотреть еще уметь нужно, 5.8.1 это скорее всего версия загрузчика а не прошивки, распечатайте на ККМ из теста драйвера отчет "Информация о ККТ".
И повторю вопрос:
Через тест драйвера проверка КМ проходит? Или через тест в БПО,
(17) Так, давайте по пунктам:
1. Что подразумевается под проверки марки? Мы сканируем марку с упаковки, упаковываем в base64, передаем её в параметрах чека далее 1с при попытке фискализации выполняет запрос к КМ, на котором (я так понимаю) всё и валится. А надо как-то отдельно проверять марку? Говоря проще: никакой отдельной ручной проверки КМ нет, но входе пробития чека марка проверяется (и на этом всё заканчивается).
2. Когда тестируем связь с ККТ выдает Атол 30Ф фискальный, рег номер ххххх, версия 5.8.1. Если делаем чек информация о ККТ получаем:
ID Серии (5.8.20):
1 5.8.1
3 5.8.20
Эту проверку делал уже после написания ответа, задал вопрос ЦТО так какая всё же версия 1 или 20 точно ответить не смогли, взяли паузу.
3. Пост этот видел. В БПО пробовал пробивать чек, он проходит но ничего не пишет в чеке (М нет). Другое дело, что там как-то вообще не очевидно в тестовой базе по поводу маркировки. Сегодня планирую взять Розницу последних релизов и там проверить.
1. Что подразумевается под проверки марки? Мы сканируем марку с упаковки, упаковываем в base64, передаем её в параметрах чека далее 1с при попытке фискализации выполняет запрос к КМ, на котором (я так понимаю) всё и валится. А надо как-то отдельно проверять марку? Говоря проще: никакой отдельной ручной проверки КМ нет, но входе пробития чека марка проверяется (и на этом всё заканчивается).
2. Когда тестируем связь с ККТ выдает Атол 30Ф фискальный, рег номер ххххх, версия 5.8.1. Если делаем чек информация о ККТ получаем:
ID Серии (5.8.20):
1 5.8.1
3 5.8.20
Эту проверку делал уже после написания ответа, задал вопрос ЦТО так какая всё же версия 1 или 20 точно ответить не смогли, взяли паузу.
3. Пост этот видел. В БПО пробовал пробивать чек, он проходит но ничего не пишет в чеке (М нет). Другое дело, что там как-то вообще не очевидно в тестовой базе по поводу маркировки. Сегодня планирую взять Розницу последних релизов и там проверить.
(18) Прошивка у вас 5.8.20.
Насчет проверки, вы говорите если у васссылки не открываются:
Насчет проверки, вы говорите если у вас
Проверка маркированного товара на ККТ реализована по следующему сценарию:
Проверка КМ осуществляется в рамкам сессий.
• Открытие новой сессии проверки марок на ККТ в явном виде осуществляется методом ОткрытьСессиюРегистрацииКМ().
• Закрытие сессии проверки марок в явном виде осуществляется методом ЗакрытьСессиюРегистрацииКМ()
• При фискализации чека методом СформироватьЧек() открытая ранее сессия проверки марок будет автоматически закрыта.
Запрос на проверку КМ на ККТ.
• Формирование запроса на проверку КМ осуществляется методом ЗапросКМ().
• Поле «MarkingCode» заполняется значением полной КМ в BASE64. Передача в BASE64 обусловлена тем, что в составе КМ могут присутствовать спецсимволы разделители GS1.
• Метод сразу же возвращает результаты локальной проверки КМ, формирует запрос в ОИСМ, и переводить ККТ в режим ожидание получения ответа от ОИСМ.
• Если нет необходимости ждать ответа от ОИСМ – в атрибутах метода ЗапросКМ() можно указать «WaitForResult= False», тогда статусы проверки КМ можно получить без ожидания ответа от ОИСМ.
Получение результат проверки КМ.
• После формирования запроса на проверку КМ на ККТ нужно в обязательном порядке получить статут КМ методом ПолучитьРезультатыЗапросаКМ(). Даже есть запрос ЗапросКМ() выполнялся с атрибутом «WaitForResult= False».
• Получение результата проверки происходит циклическим вызовом метода ПолучитьРезультатыЗапросаКМ() пока он не вернет статут что результат получены или не может быть получен. Вызов метода должен осуществляться через временной интервал.
• Пока метод в параметре «СтатусЗапроса» не вернет статус «0–результат получен» или «2–результата не может быть получен» другие операции невозможны.
Подтверждение КМ для последующего включения в чек.
• После получения результата проверки КМ, можно отобразить на экране статус проверки.
• Если пользователь соглашается купить товар маркированный проверяемой КМ – необходимо подтвердить методом ПодтвердитьКМ() с параметром «ТипПодтверждения=0».
• Если пользователь отказывается от покупки товара маркированный проверяемой КМ – необходимо отклонить методом ПодтвердитьКМ() с параметром «ТипПодтверждения=1».
Фискализация чека
• Если КМ была проверена методом ЗапросКМ() и получен результат методом ПолучитьРезультатыЗапросаКМ() и подтверждена к выбытию методом ПодтвердитьКМ() – такую КМ можно включать в фискальный чек.
• Необходимо заполнить для фискальной сроки атрибут «MarkingCode» - полной КМ в BASE64.
• ККТ после фискализации чека формирует документ «Уведомлении о реализации МТ» и отправляет его в ОФД.
Отмена чека
• При отмене чека вызывается метод ЗакрытьСессиюРегистрацииКМ().
ПоказатьПроверка КМ осуществляется в рамкам сессий.
• Открытие новой сессии проверки марок на ККТ в явном виде осуществляется методом ОткрытьСессиюРегистрацииКМ().
• Закрытие сессии проверки марок в явном виде осуществляется методом ЗакрытьСессиюРегистрацииКМ()
• При фискализации чека методом СформироватьЧек() открытая ранее сессия проверки марок будет автоматически закрыта.
Запрос на проверку КМ на ККТ.
• Формирование запроса на проверку КМ осуществляется методом ЗапросКМ().
• Поле «MarkingCode» заполняется значением полной КМ в BASE64. Передача в BASE64 обусловлена тем, что в составе КМ могут присутствовать спецсимволы разделители GS1.
• Метод сразу же возвращает результаты локальной проверки КМ, формирует запрос в ОИСМ, и переводить ККТ в режим ожидание получения ответа от ОИСМ.
• Если нет необходимости ждать ответа от ОИСМ – в атрибутах метода ЗапросКМ() можно указать «WaitForResult= False», тогда статусы проверки КМ можно получить без ожидания ответа от ОИСМ.
Получение результат проверки КМ.
• После формирования запроса на проверку КМ на ККТ нужно в обязательном порядке получить статут КМ методом ПолучитьРезультатыЗапросаКМ(). Даже есть запрос ЗапросКМ() выполнялся с атрибутом «WaitForResult= False».
• Получение результата проверки происходит циклическим вызовом метода ПолучитьРезультатыЗапросаКМ() пока он не вернет статут что результат получены или не может быть получен. Вызов метода должен осуществляться через временной интервал.
• Пока метод в параметре «СтатусЗапроса» не вернет статус «0–результат получен» или «2–результата не может быть получен» другие операции невозможны.
Подтверждение КМ для последующего включения в чек.
• После получения результата проверки КМ, можно отобразить на экране статус проверки.
• Если пользователь соглашается купить товар маркированный проверяемой КМ – необходимо подтвердить методом ПодтвердитьКМ() с параметром «ТипПодтверждения=0».
• Если пользователь отказывается от покупки товара маркированный проверяемой КМ – необходимо отклонить методом ПодтвердитьКМ() с параметром «ТипПодтверждения=1».
Фискализация чека
• Если КМ была проверена методом ЗапросКМ() и получен результат методом ПолучитьРезультатыЗапросаКМ() и подтверждена к выбытию методом ПодтвердитьКМ() – такую КМ можно включать в фискальный чек.
• Необходимо заполнить для фискальной сроки атрибут «MarkingCode» - полной КМ в BASE64.
• ККТ после фискализации чека формирует документ «Уведомлении о реализации МТ» и отправляет его в ОФД.
Отмена чека
• При отмене чека вызывается метод ЗакрытьСессиюРегистрацииКМ().
(20) Спасибо Вам еще раз, за то что помогаете. ССылки открываются, я их читал. Да, механизм проверки запускается и вываливается. И кажется я понял почему: ЦТО забыли при регистрации поставить галку "Торговля маркированными товарами". Во всяком случае в параметрах кассы считываемых в 1с стоит "нет". Завтра буду пытать (утюгом) ЦТО.... Обязательно отпишусь чем дело кончилось.
(13) У нас Астрал, еще раз проверил вроде адрес и порт указан. Он совпадает с ОФД. Но такой вопрос: ведь чек должен печататься даже если ККМ не на связи (интернет отключили, к примеру) в таком случае чек должен пробиваться, но с М- Или я не прав?
Спасибо за помощь!
Спасибо за помощь!
Добрый вечер всем! Что имеем на данный момент:
1. ЦТО что-то долго шаманили с кассой, сказали, что теперь всё ок. В подтверждении своих слов предоставили чек с буквой М (без +-). Просто с М.
2. В ЛК ОФД (Астрал) чеки пробитые ЦТО есть, но в разделе "Маркировка" их нет. Зато там появились (внезапно) тестовые чеки, которые у нас ранее выходили без буквы М на бумаге. А в ОФД они с отметкой М.
3. На Рознице последнего релиза чек с М (опять же без +-) но данные перестали уходить в ОФД вообще. После буквы М пишет какие то цифры 7457 (к примеру) на пробном чеке из ЦТО так же, но цифры другие.
4. На БПО 2.1.6.22 (который и интегрировали в самописку) чек пробивается, но тоже без буквы М. Но тут еще интереснее. По-умолчанию, там штрих-код кодируется и отправляется в параметр
тогда чек печатается и получается
Посмотрел формирование данных для чека в Рознице там
В таком случае получается
И сообщение о том, что КМ не проверена.
Были мысли, что КМ криво формируется. Брали логи из Розницы (там где чек с М пробивался) и подсовывали в БПО и код марки и сами ДанныеXML на вход процедуры
Упрямо сообщение про непроверенную КМ,
В связи с чем родилась мысль, что БПО просто не запускается проверку КМ. А раз марки нет в памяти ФН, то и чек не пробъется (выше была ссылка на форму Атола)
Собственно изучение кода с отладчиком эти мысли укрепило. Собственно может ли кто-то подсказать:
- Должна ли марка проверяться до попадания в ОбъектДрайвера.СформироватьЧек() (а именно тут возвращается ошибка про непроверенность марки) ?
- Способна ли БПО ветки 2.1 вообще работать с маркировкой под ффд 1.2? Ибо в описании это есть, а на практике терзают смутные сомнения.
1. ЦТО что-то долго шаманили с кассой, сказали, что теперь всё ок. В подтверждении своих слов предоставили чек с буквой М (без +-). Просто с М.
2. В ЛК ОФД (Астрал) чеки пробитые ЦТО есть, но в разделе "Маркировка" их нет. Зато там появились (внезапно) тестовые чеки, которые у нас ранее выходили без буквы М на бумаге. А в ОФД они с отметкой М.
3. На Рознице последнего релиза чек с М (опять же без +-) но данные перестали уходить в ОФД вообще. После буквы М пишет какие то цифры 7457 (к примеру) на пробном чеке из ЦТО так же, но цифры другие.
4. На БПО 2.1.6.22 (который и интегрировали в самописку) чек пробивается, но тоже без буквы М. Но тут еще интереснее. По-умолчанию, там штрих-код кодируется и отправляется в параметр
СтрокаПозицииЧека.ШтрихкодBase64 = ШтрихкодВBase64
тогда чек печатается и получается
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters CashierName="Казакова Н.А." OperationType="1" TaxationSystem="5" SaleAddress="г.Москва, Дмитровское ш. д.9" SaleLocation="Торговый островок на 1 этаже" CustomerEmail="" CustomerPhone="">
<CorrectionData Type="0" Date="2022-03-20T00:00:00"/>
<AgentData/>
<VendorData/>
<CustomerDetail/>
<OperationalAttribute/>
<IndustryAttribute/>
</Parameters>
<Positions>
<FiscalString Name="Тест МП" Quantity="1" PriceWithDiscount="0.1" AmountWithDiscount="0.1" DiscountAmount="0" Department="0" VATRate="none" VATAmount="0" PaymentMethod="4" CalculationSubject="33" MeasurementUnit="Штука" MeasureOfQuantity="255">
<GoodCodeData GS1.M="MDEwNDYwNzEyNjcyMTc3MDIxNVlGUGVEOTNUeU5C"/>
<AgentData/>
<VendorData/>
<IndustryAttribute/>
</FiscalString>
</Positions>
<Payments Cash="0.1" ElectronicPayment="0" PrePayment="0" PostPayment="0" Barter="0"/>
</CheckPackage>
ПоказатьПосмотрел формирование данных для чека в Рознице там
СтрокаПозицииЧека.ШтрихкодBase64 = ШтрихкодВBase64;
СтрокаПозицииЧека.КонтрольнаяМарка = ШтрихкодВBase64;
В таком случае получается
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters CashierName="Казакова Н.А." OperationType="1" TaxationSystem="5" SaleAddress="г.Москва, Дмитровское ш. д.9" SaleLocation="Торговый островок на 1 этаже" CustomerEmail="" CustomerPhone="">
<CorrectionData Type="0" Date="2022-03-20T00:00:00"/>
<AgentData/>
<VendorData/>
<CustomerDetail/>
<OperationalAttribute/>
<IndustryAttribute/>
</Parameters>
<Positions>
<FiscalString Name="Тест МП" Quantity="1" PriceWithDiscount="0.1" AmountWithDiscount="0.1" DiscountAmount="0" Department="0" VATRate="none" VATAmount="0" PaymentMethod="4" CalculationSubject="33" MeasurementUnit="Штука" MarkingCode="MDEwNDYwNzEyNjcyMTc3MDIxNVlGUGVEOTNUeU5C" MeasureOfQuantity="255">
<AgentData/>
<VendorData/>
ПоказатьИ сообщение о том, что КМ не проверена.
Были мысли, что КМ криво формируется. Брали логи из Розницы (там где чек с М пробивался) и подсовывали в БПО и код марки и сами ДанныеXML на вход процедуры
ОбъектДрайвера.СформироватьЧек()
Упрямо сообщение про непроверенную КМ,
В связи с чем родилась мысль, что БПО просто не запускается проверку КМ. А раз марки нет в памяти ФН, то и чек не пробъется (выше была ссылка на форму Атола)
Как раз тут вы ошибаетесь.
Если марки нет в буфере проверки ФНа, чек с маркой не закроется
Если марки нет в буфере проверки ФНа, чек с маркой не закроется
Собственно изучение кода с отладчиком эти мысли укрепило. Собственно может ли кто-то подсказать:
- Должна ли марка проверяться до попадания в ОбъектДрайвера.СформироватьЧек() (а именно тут возвращается ошибка про непроверенность марки) ?
- Способна ли БПО ветки 2.1 вообще работать с маркировкой под ффд 1.2? Ибо в описании это есть, а на практике терзают смутные сомнения.
(25)
разберитесь почему в Рознице она отрабатывает а у вас не вызывается.
Способна ли БПО ветки 2.1 вообще работать с маркировкой под ффд 1.2?
Глянул конфу БПО - там есть все то же что работает в Рознице, в частности - функция ЗапросКМ() модуля ПодключаемоеОборудованиеУниверсальныйДрайверКлиент,
разберитесь почему в Рознице она отрабатывает а у вас не вызывается.
(29)
(29)
Добрый день! Как всегда, спасибо за участие и неравнодушие!
Да, я тоже пошел путем сравнения работы Розницы и БПО. Получилось следующее: необходимый функционал в библиотеке есть, но в демо-чеке он не используется. Если честно, мне кажется это недоработка со стороны 1с, не в включить код работы с КМ в демо-чек, что вводит в некоторое заблуждение разработчиков. Но это философия. Буду копать Розницу (но там БПО ветки 3 и есть различия) и скорее всего УТ 10.3 (там должно быть БПО ветки 2) и смотреть как там это реализовано. Обязательно отпишусь.
(29)
Добрый день! Как всегда, спасибо за участие и неравнодушие!
Да, я тоже пошел путем сравнения работы Розницы и БПО. Получилось следующее: необходимый функционал в библиотеке есть, но в демо-чеке он не используется. Если честно, мне кажется это недоработка со стороны 1с, не в включить код работы с КМ в демо-чек, что вводит в некоторое заблуждение разработчиков. Но это философия. Буду копать Розницу (но там БПО ветки 3 и есть различия) и скорее всего УТ 10.3 (там должно быть БПО ветки 2) и смотреть как там это реализовано. Обязательно отпишусь.
Ну и до кучи лог атола еще
Скрытый текст |
---|
2022.03.20 22:17:50.972 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8]
2022.03.20 22:17:50.972 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.972 T:00001EE0 INFO [1C] [EquipmentType] = [ККТ] (VTYPE = 22) 2022.03.20 22:17:50.977 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.977 T:00001EE0 INFO [1C] GetInterfaceRevision 2022.03.20 22:17:50.978 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.978 T:00001EE0 INFO [1C] GetDescription 2022.03.20 22:17:50.978 T:00001EE0 INFO [1C] ОписаниеДрайвера - [<?xml version="1.0" encoding="UTF-8"?> <DriverDescription Name="АТОЛ:ККТ с передачей данных в ОФД 10.x (ФФД 1.2)" Description="АТОЛ: Драйвер ККТ – программный компонент (драйвер), предназначенный для работы с ККТ АТОЛ." EquipmentType="ККТ" IntegrationComponent="true" MainDriverInstalled="true" DriverVersion="10.9.0.8" IntegrationComponentVersion="10.9.0.8" DownloadURL="http://files.atol.ru/temp/1C-installer/dKKT_10.ZIP" LogIsEnabled="true" LogPath="C:\Users\serg\AppData\Roaming\ATOL\drivers10\"/> ] 2022.03.20 22:17:50.984 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.984 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.984 T:00001EE0 INFO [1C] [Model] = [500] (VTYPE = 22) 2022.03.20 22:17:50.984 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.984 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.984 T:00001EE0 INFO [1C] [AccessPassword] = [] (VTYPE = 22) 2022.03.20 22:17:50.984 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.984 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.984 T:00001EE0 INFO [1C] [UserPassword] = [] (VTYPE = 22) 2022.03.20 22:17:50.985 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.985 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.985 T:00001EE0 INFO [1C] [RemoteServerAddr] = [] (VTYPE = 22) 2022.03.20 22:17:50.985 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.985 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.985 T:00001EE0 INFO [1C] [RemoteServerConnectionTimeout] = [10000] (VTYPE = 3) 2022.03.20 22:17:50.986 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.986 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.986 T:00001EE0 INFO [1C] [Port] = [1] (VTYPE = 22) 2022.03.20 22:17:50.986 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.986 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.986 T:00001EE0 INFO [1C] [ComFile] = [1] (VTYPE = 22) 2022.03.20 22:17:50.986 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.986 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.986 T:00001EE0 INFO [1C] [BaudRate] = [115200] (VTYPE = 22) 2022.03.20 22:17:50.987 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.987 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.987 T:00001EE0 INFO [1C] [IPAddress] = [192.168.1.10] (VTYPE = 22) 2022.03.20 22:17:50.987 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.987 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.987 T:00001EE0 INFO [1C] [IPPort] = [5555] (VTYPE = 3) 2022.03.20 22:17:50.988 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.988 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.988 T:00001EE0 INFO [1C] [MACAddress] = [FF:FF:FF:FF:FF:FF] (VTYPE = 22) 2022.03.20 22:17:50.988 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.988 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.988 T:00001EE0 INFO [1C] [OfdChannel] = [2] (VTYPE = 22) 2022.03.20 22:17:50.988 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.988 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.989 T:00001EE0 INFO [1C] [DisconnectIfEOT] = [false] (VTYPE = 11) 2022.03.20 22:17:50.989 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.989 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.989 T:00001EE0 INFO [1C] [PrintBarcodeText] = [false] (VTYPE = 11) 2022.03.20 22:17:50.989 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.989 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.990 T:00001EE0 INFO [1C] [Ean8BarcodeScale] = [1] (VTYPE = 3) 2022.03.20 22:17:50.990 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.990 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.990 T:00001EE0 INFO [1C] [Ean13BarcodeScale] = [1] (VTYPE = 3) 2022.03.20 22:17:50.990 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.990 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.990 T:00001EE0 INFO [1C] [LineBarcodeScale] = [1] (VTYPE = 3) 2022.03.20 22:17:50.990 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.990 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.990 T:00001EE0 INFO [1C] [QRBarcodeScale] = [5] (VTYPE = 3) 2022.03.20 22:17:50.991 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.991 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.991 T:00001EE0 INFO [1C] [PrintNonFiscalFooter] = [true] (VTYPE = 11) 2022.03.20 22:17:50.991 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.991 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.991 T:00001EE0 INFO [1C] [PrintUserAttribute] = [true] (VTYPE = 11) 2022.03.20 22:17:50.991 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.991 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.991 T:00001EE0 INFO [1C] [PrintAdditionalAttribute] = [true] (VTYPE = 11) 2022.03.20 22:17:50.991 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] [PrintPositionAdditionalAttribute] = [true] (VTYPE = 11) 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] [DeviceOfdHost] = [] (VTYPE = 22) 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] [DeviceOfdPort] = [0] (VTYPE = 3) 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.992 T:00001EE0 INFO [1C] [DeviceOfdChannel] = [0] (VTYPE = 3) 2022.03.20 22:17:50.993 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.993 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.993 T:00001EE0 INFO [1C] [DeviceIsmHost] = [] (VTYPE = 22) 2022.03.20 22:17:50.993 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.993 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.993 T:00001EE0 INFO [1C] [DeviceIsmPort] = [0] (VTYPE = 3) 2022.03.20 22:17:50.993 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.993 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.993 T:00001EE0 INFO [1C] [DeviceOkpHost] = [] (VTYPE = 22) 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] [DeviceOkpPort] = [0] (VTYPE = 3) 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] [MarkingNumberRetries] = [3] (VTYPE = 3) 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] [MarkingConnectionOpeningTime] = [10] (VTYPE = 3) 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.994 T:00001EE0 INFO [1C] [MarkingResponseWaitingTime] = [30] (VTYPE = 3) 2022.03.20 22:17:50.995 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.995 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.995 T:00001EE0 INFO [1C] [MarkingDelayTimeBeforeReplay] = [5] (VTYPE = 3) 2022.03.20 22:17:50.995 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.995 T:00001EE0 INFO [1C] SetParameter 2022.03.20 22:17:50.995 T:00001EE0 INFO [1C] [MarkingOpenConnectionTime] = [120] (VTYPE = 3) 2022.03.20 22:17:50.995 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:50.995 T:00001EE0 INFO [1C] Open 2022.03.20 22:17:51.080 T:00001EE0 INFO [1C] ИДУстройства - [ATOL_KKT_1C_V10#0] 2022.03.20 22:17:51.080 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:51.081 T:00001EE0 INFO [1C] GetLineLength 2022.03.20 22:17:51.081 T:00001EE0 INFO [1C] ИДУстройства - [ATOL_KKT_1C_V10#0] 2022.03.20 22:17:51.081 T:00001EE0 INFO [1C] ШиринаСтроки - [42] 2022.03.20 22:17:51.195 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:51.195 T:00001EE0 INFO [1C] ProcessCheck 2022.03.20 22:17:51.195 T:00001EE0 INFO [1C] ИДУстройства - [ATOL_KKT_1C_V10#0] 2022.03.20 22:17:51.195 T:00001EE0 INFO [1C] Электронно - [нет] 2022.03.20 22:17:51.195 T:00001EE0 INFO [1C] Данные чека - [<?xml version="1.0" encoding="UTF-8"?> <CheckPackage> <Parameters CashierName="Казакова Н.А." OperationType="1" TaxationSystem="5" SaleAddress="г.Москва, Дмитровское ш. д.9" SaleLocation="Торговый островок на 1 этаже" CustomerEmail="" CustomerPhone=""> <CorrectionData Type="0" Date="2022-03-20T00:00:00"/> <AgentData/> <VendorData/> <CustomerDetail/> <OperationalAttribute/> <IndustryAttribute/> </Parameters> <Positions> <FiscalString Name="Тест МП" Quantity="1" PriceWithDiscount="0.1" AmountWithDiscount="0.1" DiscountAmount="0" Department="0" VATRate="none" VATAmount="0" PaymentMethod="4" CalculationSubject="33" MeasurementUnit="Штука" MarkingCode="MDEwNDYwNzEyNjcyMTc3MDIxNVlGUGVEOTNUeU5C" MeasureOfQuantity="255"> <AgentData/> <VendorData/> <IndustryAttribute/> </FiscalString> </Positions> <Payments Cash="0.1" ElectronicPayment="0" PrePayment="0" PostPayment="0" Barter="0"/> </CheckPackage>] 2022.03.20 22:17:51.242 T:00001EE0 ERROR [1C] [420] Контрольная марка не проверена 2022.03.20 22:17:51.242 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:51.242 T:00001EE0 INFO [1C] GetLastError 2022.03.20 22:17:51.242 T:00001EE0 INFO [1C] ОписаниеОшибки - [Контрольная марка не проверена] 2022.03.20 22:17:51.322 T:00001EE0 INFO [1C] Версия компонента: [10.9.0.8] 2022.03.20 22:17:51.322 T:00001EE0 INFO [1C] Close 2022.03.20 22:17:51.322 T:00001EE0 INFO [1C] ИДУстройства - [ATOL_KKT_1C_V10#0] |
А вот XML с подсунутой закодированной маркой, которая в Рознице пробивается.
Та же ошибка "Контрольная марка не проверена"
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters CashierName="Казакова Н.А." OperationType="1" TaxationSystem="5" SaleAddress="г.Москва, Дмитровское ш. д.9" SaleLocation="Торговый островок на 1 этаже" CustomerEmail="" CustomerPhone="">
<CorrectionData Type="0" Date="2022-03-20T00:00:00"/>
<AgentData/>
<VendorData/>
<CustomerDetail/>
<OperationalAttribute/>
<IndustryAttribute/>
</Parameters>
<Positions>
<FiscalString Name="Тест МП" Quantity="1" PriceWithDiscount="0.1" AmountWithDiscount="0.1" DiscountAmount="0" Department="0" VATRate="none" VATAmount="0" PaymentMethod="4" CalculationSubject="33" MeasurementUnit="Штука" MarkingCode="MDEwNDYwNzEyNjcyMTc3MDIxNVlGUGVEHTkzVHlOQg==" MeasureOfQuantity="255">
<AgentData/>
<VendorData/>
<IndustryAttribute/>
</FiscalString>
</Positions>
<Payments Cash="0.1" ElectronicPayment="0" PrePayment="0" PostPayment="0" Barter="0"/>
</CheckPackage>
ПоказатьТа же ошибка "Контрольная марка не проверена"
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот