Нет буквы М в чеке ФФД 1.2 молочная продукция

1. Serega-artem 17 12.03.22 21:56 Сейчас в теме
Доброй ночи коллеги! Который день не могу победить перевод самописной на базе БПО на работу с молочной маркировкой под 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>
Показать


Насколько корректно? Еще момент на испытуемой кассе после прошивки проблемы с передачей данных в ОФД может быть в этом причина? Я так понимаю, что если марку проверить вообще не удалось (нет связи) то должна быть М, если проверка не прошла М-, если прошла М+ Но независимо от обмена с ОФД буква М быть должна? Или нет? Всё что можно уже на ИС и в интернете вообще перечитал, но там в основном про обувь....
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. namazi74 5 13.03.22 22:39 Сейчас в теме
(1)
Насколько корректно? Еще момент на испытуемой кассе после прошивки проблемы с передачей данных в ОФД может быть в этом причина? Я так понимаю, что если марку проверить вообще не удалось (нет связи) то должна быть М, если проверка не прошла М-, если прошла М+ Но независимо от обмена с ОФД буква М быть должна? Или нет? Всё что можно уже на ИС и в интернете вообще перечитал, но там в основном про обувь....

если ещё актуально, то могу выдернуть логи с атола30. у клиента недавно тренировались. там правда типовая конфа была
по буквам - все верно. они до этого убрали обязательность буквы М, с 1.2 вернули снова, чтобы себя контролировать видимо
4. Serega-artem 17 14.03.22 07:48 Сейчас в теме
(3) Добрый день! Да, актуально! Если есть возможность выдернуть что-то буду очень рад. Особенно бы XML, которую 1с формирует.
23. namazi74 5 17.03.22 09:23 Сейчас в теме
(4)
Добрый день! Да, актуально! Если есть возможность выдернуть что-то буду очень рад. Особенно бы XML, которую 1с формирует.


если поможет. там чек с успешной маркой (М+) молока (без ВЕТИС). Вчера пробивали.
Кусок лога - 1С передает на Атол
Прикрепленные файлы:
новый 1.txt
24. Serega-artem 17 17.03.22 11:38 Сейчас в теме
(23) Спасибо вам большое! ЦТО вчера возились с кассой, признали, что был какой-то косяк. Вроде всё исправили. Сегодня буду тестить дальше и ваш лог будет полезным. Потом отпишусь о результатах.
2. mixa4 13.03.22 17:57 Сейчас в теме
https://forum.infostart.ru/forum28/topic278132/
На вскидку: марку передавать в MarkingCode (полный код с разделителями в BASE64), CashierName левый, PaymentMethod не указан, CalculationSubject отсутствует.
Про букву М - да, должна быть.
Я БПО именно для маркировки не настраивал, там что совсем нет формирования xml для ККМ? Я бы тогда посоветовал подсмотреть в типовых: взять, например, Розницу, несколько минут делов - настроить ККМ, добавить и попробовать пробить пробный товар, отладчиком пройтись по формированию xml (найти глобальным поиском по "CheckPackage").
5. Serega-artem 17 14.03.22 07:58 Сейчас в теме
(2) Добый день! За наводку спасибо. Но, MarkingCode это же тег 1162, а нам надо 1163 на ФФД 1.2 т.е.

Раньше было вот так:

<GoodCodeData MarkingCode="RE0EMHcZcDZpVDNXTyU7QUI+OCAg"/>

А теперь надо вот так:

<GoodCodeData GS1.M="MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1POTNTOXBs"/>

Во втором варианте (из этой темы) это BASE64. Поясните, что понимается под разделителями? Первый вариант работал на 1.05 и всё было ок, но на 1.2 там идет другое заполнение XML. В типовых смотрел код, и вроде как всё также. Должно быть

<GoodCodeData GS1.M="Код марки в base64"/>
7. mixa4 14.03.22 09:48 Сейчас в теме
(5) Не было так, смотрите внимательнее описание структуры CheckPackage, GoodCodeData это код товара, а код марки это MarkingCode.
"<GoodCodeData MarkingCode=" - вообще нет такого.
Разделители это символы GS, его нет в "MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1POTNTOXBs", должно быть "MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1PHTkzUzlwbA==".
8. mixa4 14.03.22 10:00 Сейчас в теме
(7) поправлюсь: в некоторых версиях был MarkingCode в GoodCodeData, в последних (3.5, 3.4) нету, нужно смотреть какую версию поддерживает драйвер ККТ.
6. wladimirpav 2 14.03.22 08:29 Сейчас в теме
(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>

Показать
9. Serega-artem 17 14.03.22 11:36 Сейчас в теме
(8)(6) Спасибо большое!!! Примерно понял в какую сторону можно "копать". Про разделители еще хотелось уточнить. Вот я сканирую код на марке, кодирую его в BASE64 и добавляю справа "==" ? Или сначала добавляю, а потом всё в BASE64? Или вообще не просто добавляю символы "==", а как-то более хитро? Спасибо еще раз за помощь!
10. Serega-artem 17 14.03.22 20:51 Сейчас в теме
Доработал формирование 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>


Но при попытке печати чека "Контрольная марка не проверена". Причем это ошибка кассы судя по всему, ибо перед этим сообщением система замирает на несколько секунд, явно идет какой-то обмен. Поискал и просмотрел процедуры и функции связанные с проверкой КМ и однозначного места проблемы не нашел. Такое чувство, что идет запрос к драйверу. получается ошибка и всё улетает в исключение....
14. mixa4 15.03.22 09:27 Сейчас в теме
(10) все то же самое что я писал в (2): PaymentMethod не указан, CalculationSubject отсутствует, MarkingCode неправильный.
MarkingCode в вашем примере должен быть Base64Строка(ПолучитьДвоичныеДанныеИзСтроки("01046006050156502151x2mO" + Символ(29) + "93S9pl")), но - на всякий случай - не нужно самому разделители добавлять, нужно закодировать марку с разделителями поступившую со сканера (проверьте что сканер разделители GS передает, настройте его если нет).
Проверку КМ вообще выполняете перед пробитием чека?
15. Serega-artem 17 15.03.22 09:46 Сейчас в теме
(14)
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 как бы вообще не было (для конечного пользователя) не в этом ли причина....

Спасибо, что помогаете!
17. mixa4 15.03.22 12:18 Сейчас в теме
(15)
Проверка марки может по нескольким причинам не проходить, причем одновременно, с неправильной маркой (в частности - без разделителей GS) проверка не пройдет независимо от версии прошивки, драйвера, настроек ИСМ и т.п.
Если с маркой разобрались, то смотрим дальше.
"но при этом верся 5.8.1" это где смотрите? Версию прошивки смотреть еще уметь нужно, 5.8.1 это скорее всего версия загрузчика а не прошивки, распечатайте на ККМ из теста драйвера отчет "Информация о ККТ".
И повторю вопрос: проверку КМ вообще выполняете перед пробитием чека?
Через тест драйвера проверка КМ проходит? Или через тест в БПО, например?
18. Serega-artem 17 15.03.22 13:45 Сейчас в теме
(17) Так, давайте по пунктам:

1. Что подразумевается под проверки марки? Мы сканируем марку с упаковки, упаковываем в base64, передаем её в параметрах чека далее 1с при попытке фискализации выполняет запрос к КМ, на котором (я так понимаю) всё и валится. А надо как-то отдельно проверять марку? Говоря проще: никакой отдельной ручной проверки КМ нет, но входе пробития чека марка проверяется (и на этом всё заканчивается).

2. Когда тестируем связь с ККТ выдает Атол 30Ф фискальный, рег номер ххххх, версия 5.8.1. Если делаем чек информация о ККТ получаем:

ID Серии (5.8.20):
1 5.8.1
3 5.8.20

Эту проверку делал уже после написания ответа, задал вопрос ЦТО так какая всё же версия 1 или 20 точно ответить не смогли, взяли паузу.

3. Пост этот видел. В БПО пробовал пробивать чек, он проходит но ничего не пишет в чеке (М нет). Другое дело, что там как-то вообще не очевидно в тестовой базе по поводу маркировки. Сегодня планирую взять Розницу последних релизов и там проверить.
19. mixa4 15.03.22 20:43 Сейчас в теме
(18) Прошивка у вас 5.8.20.
Насчет проверки, вы говорите если у вас ссылки не открываются:
Проверка маркированного товара на ККТ реализована по следующему сценарию:

Проверка КМ осуществляется в рамкам сессий.
• Открытие новой сессии проверки марок на ККТ в явном виде осуществляется методом ОткрытьСессиюРегистрацииКМ().
• Закрытие сессии проверки марок в явном виде осуществляется методом ЗакрытьСессиюРегистрацииКМ()
• При фискализации чека методом СформироватьЧек() открытая ранее сессия проверки марок будет автоматически закрыта.
Запрос на проверку КМ на ККТ.
• Формирование запроса на проверку КМ осуществляется методом ЗапросКМ().
• Поле «MarkingCode» заполняется значением полной КМ в BASE64. Передача в BASE64 обусловлена тем, что в составе КМ могут присутствовать спецсимволы разделители GS1.
• Метод сразу же возвращает результаты локальной проверки КМ, формирует запрос в ОИСМ, и переводить ККТ в режим ожидание получения ответа от ОИСМ.
• Если нет необходимости ждать ответа от ОИСМ – в атрибутах метода ЗапросКМ() можно указать «WaitForResult= False», тогда статусы проверки КМ можно получить без ожидания ответа от ОИСМ.
Получение результат проверки КМ.
• После формирования запроса на проверку КМ на ККТ нужно в обязательном порядке получить статут КМ методом ПолучитьРезультатыЗапросаКМ(). Даже есть запрос ЗапросКМ() выполнялся с атрибутом «WaitForResult= False».
• Получение результата проверки происходит циклическим вызовом метода ПолучитьРезультатыЗапросаКМ() пока он не вернет статут что результат получены или не может быть получен. Вызов метода должен осуществляться через временной интервал.
• Пока метод в параметре «СтатусЗапроса» не вернет статус «0–результат получен» или «2–результата не может быть получен» другие операции невозможны.
Подтверждение КМ для последующего включения в чек.
• После получения результата проверки КМ, можно отобразить на экране статус проверки.
• Если пользователь соглашается купить товар маркированный проверяемой КМ – необходимо подтвердить методом ПодтвердитьКМ() с параметром «ТипПодтверждения=0».
• Если пользователь отказывается от покупки товара маркированный проверяемой КМ – необходимо отклонить методом ПодтвердитьКМ() с параметром «ТипПодтверждения=1».
Фискализация чека
• Если КМ была проверена методом ЗапросКМ() и получен результат методом ПолучитьРезультатыЗапросаКМ() и подтверждена к выбытию методом ПодтвердитьКМ() – такую КМ можно включать в фискальный чек.
• Необходимо заполнить для фискальной сроки атрибут «MarkingCode» - полной КМ в BASE64.
• ККТ после фискализации чека формирует документ «Уведомлении о реализации МТ» и отправляет его в ОФД.
Отмена чека
• При отмене чека вызывается метод ЗакрытьСессиюРегистрацииКМ().
Показать
20. mixa4 15.03.22 20:44 Сейчас в теме
(19) от Атола:
Если марки нет в буфере проверки ФНа, чек с маркой не закроется
21. Serega-artem 17 15.03.22 21:00 Сейчас в теме
(20) Спасибо Вам еще раз, за то что помогаете. ССылки открываются, я их читал. Да, механизм проверки запускается и вываливается. И кажется я понял почему: ЦТО забыли при регистрации поставить галку "Торговля маркированными товарами". Во всяком случае в параметрах кассы считываемых в 1с стоит "нет". Завтра буду пытать (утюгом) ЦТО.... Обязательно отпишусь чем дело кончилось.
22. mixa4 15.03.22 21:04 Сейчас в теме
(21) ну поставьте и выполните перерегистрацию, делов то
11. wladimirpav 2 15.03.22 08:13 Сейчас в теме
12. Serega-artem 17 15.03.22 08:29 Сейчас в теме
(11) Действительно, кассу то не написал. Атол 30 Ф Драйвер 10.9.0.8
13. wladimirpav 2 15.03.22 08:33 Сейчас в теме
(12) Атолами не пользуемся, но при регистрации указали верно адрес ОИСМ? И вроде у Атола лог ведется, можно посмотреть
16. Serega-artem 17 15.03.22 09:50 Сейчас в теме
(13) У нас Астрал, еще раз проверил вроде адрес и порт указан. Он совпадает с ОФД. Но такой вопрос: ведь чек должен печататься даже если ККМ не на связи (интернет отключили, к примеру) в таком случае чек должен пробиваться, но с М- Или я не прав?

Спасибо за помощь!
25. Serega-artem 17 20.03.22 20:56 Сейчас в теме
Добрый вечер всем! Что имеем на данный момент:

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? Ибо в описании это есть, а на практике терзают смутные сомнения.
28. mixa4 20.03.22 23:49 Сейчас в теме
(25)
Должна ли марка проверяться до попадания в ОбъектДрайвера.СформироватьЧек()
после всего вышесказанного я, честно говоря, не понимаю этого вопроса

Брали логи из Розницы (там где чек с М пробивался) и подсовывали
посмотрите там же и цикл проверки КМ
29. mixa4 21.03.22 00:02 Сейчас в теме
(25)
Способна ли БПО ветки 2.1 вообще работать с маркировкой под ффд 1.2?
Глянул конфу БПО - там есть все то же что работает в Рознице, в частности - функция ЗапросКМ() модуля ПодключаемоеОборудованиеУниверсальныйДрайверКлиент,
разберитесь почему в Рознице она отрабатывает а у вас не вызывается.
30. Serega-artem 17 21.03.22 07:48 Сейчас в теме
(29)
(29)

Добрый день! Как всегда, спасибо за участие и неравнодушие!

Да, я тоже пошел путем сравнения работы Розницы и БПО. Получилось следующее: необходимый функционал в библиотеке есть, но в демо-чеке он не используется. Если честно, мне кажется это недоработка со стороны 1с, не в включить код работы с КМ в демо-чек, что вводит в некоторое заблуждение разработчиков. Но это философия. Буду копать Розницу (но там БПО ветки 3 и есть различия) и скорее всего УТ 10.3 (там должно быть БПО ветки 2) и смотреть как там это реализовано. Обязательно отпишусь.
26. Serega-artem 17 20.03.22 21:05 Сейчас в теме
Ну и до кучи лог атола еще

Скрытый текст
27. Serega-artem 17 20.03.22 21:45 Сейчас в теме
А вот 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>
Показать


Та же ошибка "Контрольная марка не проверена"
31. m_o 54 20.01.24 11:42 Сейчас в теме
(27) здравствуйте, удалось ли решить вопрос, полную марку пакую в base64, рельзльтат -Контрольная марка не проверена
32. Serega-artem 17 20.01.24 18:34 Сейчас в теме
(31) Доброго дня! Давно это было) Там в итоге история закончилась тем, что проблема была в ОФД (Астарал). Они получали КМ от кассы, но не отправляли её в ЧЗ т.к. (цитирую тех. поддержку астрала) "не считали это контрольной маркой".
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот