Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > КИС Lack & УС Land

Программа вывода из оборота маркированной молочной продукции : КИС Lack & УС Land

03.12.2024 20:07


16.11.2022 15:58
Так получилось, что и мне приходится этим заниматься, но это первые мои разработки, которые ведутся не по некой концепции, внутреннему ТЗ, какого-нибудь проекту, а "шлёпаются" програмки кусочно, закрывающие текущие задачи. Самая последняя и как всегда "надо вчера" - вывод из оборота. Конечно и раньше пытался вникать в задачку, но перебивали более срочные задачи и ... радость - появилось 2 дня свободного времени. Написал ориентируясь на документацию ЧЗ и исследования специалистов с форума: https://olegon.ru/showthread.php?t=33719&page=17, за что им большое спасибо. Попытался закачать в ЛК, получил очень лаконичное сообщение об ошибке:




Начал теребить службу ТП. Отмечу, что контакты с ЧЗ, в отличии от ФСРАР вызывают удовлетворение - отвечают довольно быстро, по делу, давая дополнительную полезную информацию. Диалог приведу в конце сообщения.

Мой нюанс данного бизнес-процесса. Есть оптовка, где неким хитрым образом, который когда-то описывал в рамках учетной системы ведут 2 розничных ИП с кучей торговых точек, т.е. в программе нужно вести вывод из оборота от лица всех трех бизнес-объектов, а данные необходимые для полной автоматизации пока не требуются для маркировки молочки. Сделал программу, т.ч. она абсолютно независима от объекта автоматизации, т.е. может быть полезна всем, выводящим из оборота марки! Презентую программу с картинками, копируя в сообщения фрагменты из прилагаемой инструкции.

Целью данной программы подготовки данных для вывода из оборота в рознице является облегчение операций по «списаниям» марок в срезе различных причин списания, а так же «скрытие» от пользователей неочевидных техник доработки данных.

Программа и технология позволяет работать по требованиям от «ЧЗ», не используя перенастройки кассовых аппаратов, обучения продавцов работе с новым для них оборудованием, обхождение проблем с марками и непонятной диагностикой. Как пример операция «фасовка» - разделение головки сыра и продажа частей на развес, при этом марки списываются после проведения операции и их не нужно отправлять из кассы, что так же удобно когда несколько торговых точек обслуживаются с одного «оптового» склада. Таким образом – эта программа для мелких ларьков и точек на рынках.

Замечание. Списание при поэкземлярном учете, т.е. на оптовках производится в личном кабинете «ЧЗ» и пока не известны техники их автоматизации.

Установка, запуск программы интеграции zV

Программа не устанавливается и не настраивается. Создайте любой каталог на любом носителе и распакуйте в него весь набор приложенных файлов, а именно: zV.exe, clea_mus.bat. Остальные файлы – исходный код и программные инструкции для сборки программы zV.exe.

Программа zV вызывается либо напрямую zV.exe , либо zV.exe ИНН, что можно сделать из ярлыка вызова программы и освобождает от необходимости при каждом запуске вводить ИНН, обслуживаемого предприятия. При создании акта вывода из оборота программа проводит Вас через несколько шагов на каждом из которых Вы можете прервать процесс, нажав кнопку Esc. В силу возможностей программа контролирует логичность, вводимых Вами значений. Шаги:


1 Задаём общие атрибуты операции:

- ИНН предприятия 10 или 12 цифр;
- Дата операции и документа вывода из оборота;
- Номер документа. Лучше соглашайтесь с предложением программы. Программа автоматически ведёт уникальную нумерацию, независимо для каждого ИНН. После ручного изменения номера следующий номер будет предлагаться на единицу больше, т.е. можно начать нумерацию не с №1, а № 1000. Для ведения автонумерации программа создаёт и изменяет файл Number.zv – это обычный текстовый файл;

- Причина вывода из оборота. Для разных причин последующие формы ввода информации, структура и наполнение создаваемого XML файла сильно различаются. 1. «Фасовка» - разрезание головки сыра или другого весового товара. На кассе «куски» будут продаваться без отсылки кодов марок. 2 (или не 1). Списание – так называемое «уничтожение», т.е. предполагается, что данный товар (марка) в дальнейшем не будет продаваться




2 Вводим информацию в режиме потокового ввода, набор которой и структура её отображения зависит от причины вывода из оборота. Сканируем 2d сканером или вводим «копипастом» марки «ЧЗ», или правильную часть марки (24/26 первых знаков) – смотрите ниже.

Последние ошибочные введенные значения из таблицы, списка отражаемые выше форм ввода можно последовательно удалять, нажатием кнопки F9. После ввода всего необходимого числа марок для вывода из оборота нажимаем кнопку Esc для завершения процесса.




3 Программа запрашивает дальнейшие действия. Для создания и сохранения полученного XML файла для загрузки в ЛК «ЧЗ» ответьте «Да» на запрос. В каталоге программы, который «запоминает» режим загрузки документов «ЧЗ» будет создан файл с уникальным в каталоге именем «XMLчисло.XML» структуры, соответствующий «причине» и формата, требуемого для загрузки, версии №8, т.е. в дальнейшем формат может измениться. После чего программа завершит свою работу. Время «жизни» программы – один акт вывода из оборота.

После выхода из программы Вы можете загрузить созданный XML файл в «ЧЗ» или создать ещё пачку необходимых файлов для вывода продукции из оборота, например по другим причинам, а только затем эту пачку файлов загружать по одному в ЛК «ЧЗ».

Замечание. Созданный XML файл кодировки UTF-8 можно редактировать любым редактором, умеющим определять кодировку файла, например NotePad++. Структура и наполнение файла довольно понятное. В дальнейшем это может сильно понадобиться при появлении ошибок при загрузке файлов в ЛК «ЧЗ» - о неприятном ниже


Загрузка подготовленных файлов в ЛК «ЧЗ» zV

В принципе есть множество подробных и с картинками инструкций от «Честного знака» с подробным иллюстрированным описанием данного процесса, о посему ограничусь лишь кратким изложением:

1. Зайдите в ЛК «ЧЗ», выберите сертификат ЮЛ (ИП) и войдите в личный кабинет от имени которого делаем вывод из оборота, предполагаю, что на одном ПК работаете от лица многих предприятий;
2. Выберите группу «Молочная продукция»;
3. Выберите пункт меню «Документы» и нажмите кнопку со стрелкой «Загрузить». Затем из списка «загрузок» выберите пункт «Вывод из оборота»;




4. Затем «обычным образом» найдите каталог куда сохранили программу и покажется список, созданных Вами XML файлов, выберите его;




5. Если это правильный файл, то он загрузится на платформу и его текст отразиться на экране с кнопками «подписать и отправить» и «отменить»;




6. Подпишите его. В списке появится строка с новым документов и статусом «обрабатывается». Подождите пару минут, можно нажимать значок обновления страницы. Появится статус «обработан успешно», если нет косяков в документе или на платформе или «обработан с ошибками».





Самая неприятная ошибка при загрузке файлов XML. Сейчас и до 2025 года, принадлежность марки предприятию не контролируется, т.е. конкретную марку может вывести из оборота, например по чеку любое другое предприятие, а так же при плохом сканере марка может неправильно считываться. Тогда при загрузке документа платформа выдаст ошибку загрузки и в блоке «Доп.сведения» проявиться ошибка «14. Недопустимый статус кода идентификации: сами коды», т.е. весь документ, содержащий сотни марок забракуется из-за одной марки… Что делать?

Самое простое – открыть созданный файл XML редактором, понимающим кодировки файлов и удалить из него целиком блок. Для причины «уничтожения» строка с «cost» (цена в копейках) отсутствует:

<product>
<cis>01048102230312642123PylZbh</cis>
<cost>137800</cost>
</product>

Затем сохранить файл и попробовать его загрузить заново.


Утилита clea_mus.bat предназначена для удаления ненужных файлов, создаваемых в процессе работы, в частности файлы XML, загружаемые в ЛК «ЧЗ». Эти файлы переносятся в подкаталог Mus, который создаётся при его отсутствии.


Структура кода марки

Одна из проблем процедуры вывода из оборота. Марка – набор символов считанных сканером состоит из 3 или 4 блоков, но списывается в «ЧЗ», указывая только первые два блока, длины которых зависят от страны производства продукции. Пока программа обрабатывает марки России и Беларуси. Для понимания, а мне для запоминания, опишу структуру марки:

1 Идентифицируется идентификатором применения AI="01", состоит из 14 цифр и содержит код товара, а точнее GTIN – ШК товара, дополненный в начале нулями до 14 знаков;
2 Идентифицируется идентификатором применения AI="21", состоит из 6 символов для Российского товара или 8 символов для товара Буларусь – это набор цифр, строчных и прописных букв латинского алфавита, а также специальных символов. Содержит индивидуальный серийный номер упаковки молочной продукции и завершается символом-разделителем FNC1 (ASCII 29);
3 Идентифицируется идентификатором применения AI="93", состоит из 4 символов (цифр, строчных и прописных букв латинского алфавита, а также специальных символов) и содержит код проверки;
4 Согласно постановления правительства РФ от 15 декабря 2020 г. № 2099, пункт 46 был дополнен пунктом «г» с 1 марта 2022 года. Дополнительно на усмотрение участника оборота молочной продукции после третьей группы данных в средство идентификации может быть включена дополнительная группа данных, которая содержит вес молочной продукции (в случае если он может различаться у разных единиц молочной продукции с одним кодом товара), дополнительная группа данных идентифицируется идентификатором применения AI = '3103', состоит из 6 символов и содержит вес молочной продукции в килограммах. В процессе оборота товаров, при усыхании молочной продукции, вес молочной продукции может быть изменен (уменьшен), при этом состав кода маркировки должен оставаться неизменным.

Примеры марок:

Российский товар: 01 04678599571056 21 5r5ERr 93ZrE2 (0104678599571056215r5ERr93ZrE2);

Молочка Беларусь: 01 04810268044595 21 232QCQ3Y 933hnp (010481026804459521232QCQ3Y933hnp).


Совместное использование программ

Пока данная программа полностью независима от других программ, что обусловлено отсутствием необходимости «складского учета» марок, отсутствием контроля за «владельцем» списываемой марки и предположением, что розница для которой предназначена данная программа не ведется с системе комплексного автоматизированного учета.


P.S. Программа абсолютно бесплатная, предоставляемая по лицензии (приложена) GNU (OpenSource), не имеет никаких ограничений по распространению, использованию и доработкам. Конечно и старые программисты хотят кушать, а по сему не буду возражать от финансовой благодарности, если данная программа будет Вам полезна. Как? Можно по описанному в: https://olegon.ru/showthread.php?t=23281


Ответ ЧЗ на моё обращение:
На обращение в ЛК «ЧЗ» 14.11.2022 получен ответ… Обращение: Добрый день. Слишком лаконичное сообщение при загрузке после подписания документа "29 недопустимый формат" , но он кажется соответствует схеме и даваемому примеру. В чём может быть у меня ошибка?

Ваше Обращение под № INC1501017 было разрешено. Мы подготовили ответ на Ваше обращение: Ошибка 29: Недопустимый формат передаваемого файла XML возникает так в предосталенных файлах некорректно указан атрибут версия, Version="8" корректно должно быть указано version="8" без использования первой прописной буквы.

В случае если в параметре "primary_document_type" ("Тип первичного документа") равно "OTHER" ("Прочее"), должен быть указан параметр primary_document_custom_name с названием документа в свободной форме. Так же обращаем внимания при причине вывода из оборота "PACKING" ("Фасовка") данные первичного документа могут не указываться полностью.

В предоставленных файлах указаны полные коды маркировки, при выводе из оборота указывается код идентификации (КИ) - две первых группы данных полного кода маркировки. Коды из предоставленных файлов для корректного вывода из оборота будут выглядеть как:

0104678599571049215kcUY

0104678599571056215F*o9N

01048102230312642123PylZbh


Постановление Правительства Российской Федерации от 15.12.2020 № 2099 "Об утверждении Правил маркировки молочной продукции средствами идентификации и особенностях внедрения государственной информационной системы мониторинга за оборотом товаров, подлежащих обязательной маркировке средствами идентификации, в отношении молочной продукции" (пункт 46):

Средство идентификации потребительской упаковки, групповой упаковки, набора товаров содержит код маркировки, включающий в себя 3 группы данных, идентифицирующихся атрибутами (идентификаторами применения - AI), предусмотренными стандартом GS1 Data Matrix. В начале строки кода маркировки должен присутствовать признак символики GS1 Data Matrix FNC1 (ASCII 232):

а) первая группа идентифицируется идентификатором применения AI="01", состоит из 14 цифр и содержит код товара;
б) вторая группа идентифицируется идентификатором применения AI="21", состоит из 6 символов (цифр, строчных и прописных букв латинского алфавита, а также специальных символов) и содержит индивидуальный серийный номер упаковки молочной продукции и завершается символом-разделителем FNC1 (ASCII 29);

Обратите внимание: Для кодов эмитированных в республике Беларусь данная группа будет состоять из 8 символов.

в) третья группа идентифицируется идентификатором применения AI="93", состоит из 4 символов (цифр, строчных и прописных букв латинского алфавита, а также специальных символов) и содержит код проверки.

В соответствии с Постановлением Правительства Российской Федерации от 30.11.2021 № 2100 "О внесении изменении в постановление Правительства Российской Федерации от 15 декабря 2020 г. № 2099". Пункт 46 Постановления Правительства Российской Федерации от 15.12.2020 № 2099 был дополнен пунктом "г" с 1 марта 2022 года:

г) дополнительно на усмотрение участника оборота молочной продукции после третьей группы данных в средство идентификации может быть включена дополнительная группа данных, которая содержит вес молочной продукции (в случае если он может различаться у разных единиц молочной продукции с одним кодом товара), дополнительная группа данных идентифицируется идентификатором применения AI = '3103', состоит из 6 символов и содержит вес молочной продукции в килограммах. В процессе оборота товаров, при усыхании молочной продукции, вес молочной продукции может быть изменен (уменьшен), при этом состав кода маркировки должен оставаться неизменным.


Как показали последующие обсуждения - нет на свете совершенства, а посему в данном сообщении будут размещаться

В сообщении размещаются новые версии приложения
Вложения
Тип файла: 7z zV_23112022.7z (450.9 Кб, 44 просмотров)
Тип файла: 7z zV_07012023.7z (452.8 Кб, 51 просмотров)
25.11.2022 15:41
Попробовал.

Код марки
01048107010132322123aXAAsg93seG5

Код:
<?xml version="1.0" encoding="UTF-8"?>
<withdrawal version="8">
   <trade_participant_inn>1234567890</trade_participant_inn>
   <withdrawal_type>PACKING</withdrawal_type>
   <withdrawal_date>2022-11-25</withdrawal_date>
   <primary_document_type>OTHER</primary_document_type>
   <primary_document_number>1001</primary_document_number>
   <primary_document_date>2022-11-25</primary_document_date>
   <primary_document_custom_name>Акт</primary_document_custom_name>
   <products_list>
      <product>
         <cis>93seG507010132322123aXAA</cis>
         <cost>999</cost>
      </product>
   </products_list>
</withdrawal>
Копипастом все ОК , а вот со сканера такая вот чушь..
Проблема моего сканера?
26.11.2022 08:47
Цитата:
plvn24 Копипастом все ОК , а вот со сканера такая вот чушь.. Проблема моего сканера?
В принципе в данное поле просто сохраняется инфа со сканера... как и в егаисной программе, т.е. если в блокнот открытый со шрифтом terminal всё нормально сканируется, то и в программу будет всё нормально. Сканер предполагается kbd/usb и раскладка на клавиатуре должна быть латинская... Хотя при таких особенностях, просто был кривой набор знаков, а на пример как будто они сдвигаются. Возможно проблема с нечитаемыми марками - вчера, правда алкогольные на нормальном сканере одна марка давала при каждом скане разное значение... глупость, но оттерли её сухой тряпкой и всё стало стабильно читаться... По данной программе - уже более неделе её активно используют в реале и вывели из оборота более 200 марок... и проблем со считыванием пока не возникало
26.11.2022 11:58
со сканера алкогольная
197300231775261120001JG42ZT2C4TLVMHCL6HNYJ3HLLQAZ4L2VCKKUWMCXLZD5G7AD5PZSRBDP7A7SHHOVFMKAGFBRY6HVSCV3FHD243UABOEKF4SCYSWMKZLWBEQ7PKI2VKUREQ23E2RHK4UEQ

на выходе
Код:
<products_list>
      <product>
         <cis>197300231775261120001JG4</cis>
         <cost>57577632</cost>
      </product>
      <product>
         <cis>43UABOEKF4SCYSWMKZLWBEQ7</cis>
         <cost>57577632</cost>
в УСЕГа все нормально этим сканером
Чертовщина какая-то...
сканер datalogic qd2430
26.11.2022 12:23
с алкогольной маркой это я так, можно забыть..
а вот насчет молочки все-таки интересно - сдвиг идет после символа GS1 почему-то
26.11.2022 17:03
Цитата:
plvn24 с алкогольной маркой это я так, можно забыть.. а вот насчет молочки все-таки интересно - сдвиг идет после символа GS1 почему-то
С позиции банальной эрудиции необходимо понять:

1. Криво читается одна марка или все по молочке?
1.1. Если все, то попытаться сделать скан в блокнот при шрифте terminal
1.2. Если одна марка, то в ней есть символ, управляющий сканером

2. Самое конструктивное - обратиться в разделе: https://olegon.ru/forumdisplay.php?f=55, приложив фото марки, где спецы могут отсканировать код с фото на других сканерах.

Из этого можно понять - где копать... У меня нет под рукой сканеров и прога проходила альфа отладку используя копипаст, но в реале используется, где пока е встречалась ситуация кривого считывания марки, как с "живой" марки, так и с её фото на мобильнике... продавцы часть товара сфоткали и прислали для вывода из оборота
26.11.2022 17:54
Цитата:
AndreyZh сдвиг идет после символа GS1
поправлюсь, имел ввиду ASCII 29 (GS) - разделитель групп данных, непечатный
Марки любые молочные (какие нашел в холодильнике :) )
28.11.2022 10:01
Цитата:
plvn24 поправлюсь, имел ввиду ASCII 29 (GS) - разделитель групп данных, непечатный
Марки любые молочные (какие нашел в холодильнике :) )
Пользуясь случаем хочу...

Думаю проблему надо разрешать через сканер и это подробно перетирают в теме: https://olegon.ru/showthread.php?t=35162

Что по мну... Сейчас по удаленке попросил просканить ряд товаров и параллельно в notepad+, который отражает спецсимволы. Нормальная ситуация на картинке, следовательно сканер игнорит спецсимволы?


28.11.2022 15:19
Спасибо что не забыли о проблеме.
Я со сканером в клавиатурном режиме в боевом контуре не работаю, поэтому возьму паузу..
Будем довольствоваться копипастом пока.
30.12.2022 10:31
Шо, опять?... Звонок с единственной проблемой программы вывода из оборота... В очередной раз не сменили раскладку клавиатуры на латынь и со сканера прилетели непонятные символы вместо кода марок, а мне вопрос-замечание - почему документ отвергается ЧЗ? Может быть поучить (поискать) средства программные смены раскладки, но тогда нужно понимать, что не вводят ручками, а сканируют марки сканером... а как это определять?
Часовой пояс GMT +3, время: 20:07.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.