Имя: Пароль:
1C
1С v8
проверка КМ Честного Знака при печати чека "отсутствует полный код маркировки"
0 zinzillya
 
04.10.24
14:33
БП 3.0 последняя

очень нужна консультация по загрузке КонтрольныхМарок (КМ) ЧестногоЗнака (ЧЗ) из внешней программы в документ Розничные продажи (чек). посмотрите пожалуйста кусочек кода загрузки, насколько он корректен с точки зрения добавления элементов в систему.


    спрШУТ = Справочники.ШтрихкодыУпаковокТоваров;
...

            //заполнение кодов ЧЗ
            Шк64 = РезультатЗаполнения[Количество-1].Штрихкод;
            Шк32 = ШтрихкодированиеИСКлиентСервер.ШтрихкодВФорматеGS1(ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.Base64ВШтрихкод(Шк64));
            //Шк28 = Лев(Шк32,28);
            НовСтр.Штрихкод = Шк32;
            НовСтр.КодАкцизнойМарки = Шк32;//Шк64;
            ссСпрШУТ = СпрШУТ.ПолучитьПоЗначениюШтрихкода(Шк32);//(Шк28);
            Если ссСпрШУТ = Неопределено Тогда
                ДанныеШтрихкода = СпрШУТ.СтруктураСозданияШтрихкодаУпаковки();
                ДанныеШтрихкода.ТипУпаковки = Перечисления.ТипыУпаковок.МаркированныйТовар;
                ДанныеШтрихкода.Номенклатура = НовСтр.Номенклатура;
                ДанныеШтрихкода.Количество = 1;
                ДанныеШтрихкода.ТипШтрихкода = Перечисления.ТипыШтрихкодов.GS1_DataMatrix;
                ДанныеШтрихкода.Штрихкод = Шк32;
                //ДанныеШтрихкода.ХешСуммаНормализации = ИнтеграцияИС.ХешированиеДанныхSHA256(ШтрихкодыУпаковокКлиентСервер.ШтрихкодGS1(Шк32));
                
                НовСтр.АкцизнаяМарка = СпрШУТ.СоздатьШтрихкодУпаковки(ДанныеШтрихкода);
                сообщить("создан штрихкод"+Шк32+".");
            Иначе
                НовСтр.АкцизнаяМарка = ссСпрШУТ;
            КонецЕсли;

визуально, создаваемые этим алгоритмом загрузки Розничные продажи (чек) элементы Справочника "ШтрихкодыУпаковокТоваров" выглядят однообразно с создаваемыми через ранее работающий алгоритм загрузки РеализацииТиУ, но при попытке отправки чеков
происходит ошибка  "отсутствует полный код маркировки" выскакивает при попытке печати чека в Результаты проверки штрихкодов.


хелп плз!
1 zinzillya
 
04.10.24
16:52
попробовал ещё так:
            //Шк32 = ШтрихкодированиеИСКлиентСервер.ШтрихкодВФорматеGS1(ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.Base64ВШтрихкод(Шк64));
            Шк32 = ИнтерфейсИСМП.РазобратьИНормализоватьКодМаркировки(ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.Base64ВШтрихкод(Шк64));

то же самое, ещё перестал открываться список спрШУТ - ругается на непечатаемый символ.
2 НаборДанных
 
04.10.24
20:37
"отсутствует полный код маркировки" - никакие мысли не возникают? Например о том, что в твоей конфе некорректно обрабатывается КМ без криптохвоста.
3 Звездец
 
04.10.24
20:22
ты когда марки записываешь в справочник штрихкоды упаковок, или как там он в БСП называется, у кода маркировки потерял скобки и возможно еще указал не верный тип кода.
4 zinzillya
 
09.10.24
13:05
попробовал вариант с МонотоварнаяУпаковка и ТипыШтрихкодов.GS1_128


            //заполнение кодов ЧЗ
            Шк64 = РезультатЗаполнения[Количество-1].Штрихкод;
            Шк32 = ШтрихкодированиеИСКлиентСервер.ШтрихкодВФорматеGS1(ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.Base64ВШтрихкод(Шк64));
            НовСтр.Штрихкод = Шк32;
            НовСтр.КодАкцизнойМарки = Шк32;
            ссСпрШУТ = СпрШУТ.ПолучитьПоЗначениюШтрихкода(Шк32);
            Если ссСпрШУТ = Неопределено Тогда
                ДанныеШтрихкода = СпрШУТ.СтруктураСозданияШтрихкодаУпаковки();
                ДанныеШтрихкода.ТипУпаковки = Перечисления.ТипыУпаковок.МонотоварнаяУпаковка;
                ДанныеШтрихкода.Номенклатура = НовСтр.Номенклатура;
                        ДанныеШтрихкода.Количество = 1;
                ДанныеШтрихкода.ДатаУпаковки = Док.Дата;
                ДанныеШтрихкода.ТипШтрихкода = Перечисления.ТипыШтрихкодов.GS1_128;
                ДанныеШтрихкода.Штрихкод = Шк32;
                
                НовСтр.АкцизнаяМарка = СпрШУТ.СоздатьШтрихкодУпаковки(ДанныеШтрихкода);
                сообщить("создан штрихкод"+Шк32+".");
            Иначе
                НовСтр.АкцизнаяМарка = ссСпрШУТ;
            КонецЕсли;


получается создавать длинные Штрихкоды, вида (01)04600680014005(21)5Geh3X(93)sGQg. нормально открывается, но при попытке печати система печати вообще не реагирует. просто игнор команды.


есть у меня вариант получать Штрихкод из формы документа Розничная продажа(чек) и передавать в Команду Формы ОбработатьКодМаркировки(ИсходныеДанные, ДополнительныеПараметры) Экспорт.
В этом случае ЗначениеШтрихкода - короткое (вида (01)04600680014005(21)5Geh3X), но происходит сцепление с регистром "Пул кодов маркировки СУЗ (Регистр)".

ошибка при печати в этом случае:

Поле объекта не обнаружено (ИдентификаторЗапросаГИСМТ)
{Документ.РозничнаяПродажа.Форма.ФормаДокументаОбщая.Форма(2237)}:РезультатРаспределения.РазрешительныйРежимИдентификаторЗапросаГИСМТ = ЭлементПроверки.ИдентификаторЗапросаГИСМТ;
{Документ.РозничнаяПродажа.Форма.ФормаДокументаОбщая.Форма(2252)}:Если РезультатПроверки <> Неопределено
{EF_00_00641180_2 ОбщийМодуль.ШтрихкодированиеОбщегоНазначенияИСМПКлиент.Модуль(231)}:ВыполнитьОбработкуОповещения(ПараметрыПроверки.ОповещениеОЗавершении, ПараметрыПроверки.Результат);
{ОбщийМодуль.ШтрихкодированиеОбщегоНазначенияИСМПКлиент.Модуль(1466)}:ОбработкаРезультатаПроверкиСредствамиККТ(ПараметрыПроверки);
{ОбщийМодуль.ОбщегоНазначенияБПОКлиент.Модуль(845)}:ВыполнитьОбработкуОповещения(КонтекстЗамера.ПользовательскоеОповещение, Результат);
{ОбщийМодуль.МенеджерОборудованияКлиент.Модуль(4190)}:ВыполнитьОбработкуОповещения(ПараметрыВыполнениеКоманды.ОповещениеПриЗавершении, РезультатОперации);
{ОбщийМодуль.МенеджерОборудованияКлиент.Модуль(2410)}:ЗавершениеВыполнениеКоманды(РезультатОперации, ПараметрыВыполнениеКоманды);
{ОбщийМодуль.МенеджерОборудованияКлиент.Модуль(2376)}:ОтключитьОборудованиеПослеВыполнениеКоманды_ОтключитьПечатающееУстройствоЗавершение(Неопределено, КонтекстВыполнения);
{ОбщийМодуль.МенеджерОборудованияКлиент.Модуль(2110)}:ОтключитьОборудованиеПослеВыполнениеКоманды(ПараметрыВыполнениеКоманды, РезультатВыполнения);
{ОбщийМодуль.МенеджерОборудованияМаркировкаКлиент.Модуль(663)}:ВыполнитьОбработкуОповещения(Оповещение, РезультатПакета);
{ОбщийМодуль.МенеджерОборудованияМаркировкаКлиент.Модуль(646)}:ЗавершитьВыполнениеВсехОпераций(КонтекстОперации);
{ОбщийМодуль.МенеджерОборудованияМаркировкаКлиент.Модуль(616)}:ЗавершитьВыполнениеОперации(КонтекстОперации);
{ОбщийМодуль.МенеджерОборудованияМаркировкаКлиент.Модуль(427)}:СледующаяОперация(КонтекстОперации);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
5 zinzillya
 
09.10.24
14:34
получилось натянуть сову на глобус с ПуломМаркировки при создании же спрШУТ

            //заполнение кодов ЧЗ
            Шк64 = РезультатЗаполнения[Количество-1].Штрихкод;
            Шк32 = ШтрихкодированиеИСКлиентСервер.ШтрихкодВФорматеGS1(ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.Base64ВШтрихкод(Шк64));
            //Шк32 = ИнтерфейсИСМП.РазобратьИНормализоватьКодМаркировки(ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.Base64ВШтрихкод(Шк64));// может так...
            НовСтр.Штрихкод = Шк32;
            НовСтр.КодАкцизнойМарки = Шк64;
            ссСпрШУТ = СпрШУТ.ПолучитьПоЗначениюШтрихкода(Шк32);
            Если ссСпрШУТ = Неопределено Тогда
                ДанныеШтрихкода = СпрШУТ.СтруктураСозданияШтрихкодаУпаковки();
                ДанныеШтрихкода.ТипУпаковки = Перечисления.ТипыУпаковок.МаркированныйТовар;
                ДанныеШтрихкода.Номенклатура = НовСтр.Номенклатура;
                ДанныеШтрихкода.Количество = 1;
                ДанныеШтрихкода.ДатаУпаковки = Док.Дата;
                ДанныеШтрихкода.ТипШтрихкода = Перечисления.ТипыШтрихкодов.GS1_DataMatrix;
                ДанныеШтрихкода.Штрихкод = Шк32;
                
                НовСтр.АкцизнаяМарка = СпрШУТ.СоздатьШтрихкодУпаковки(ДанныеШтрихкода);
                сообщить("создан штрихкод"+Шк32+".");
                
                //пул СУЗ

                ПараметрыСканирования = ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.БазовыеПараметрыСканирования();
                ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.ЗаполнитьБазовыеПараметрыСканирования(ПараметрыСканирования, Док);
                ШтрихкодированиеОбщегоНазначенияИСМПКлиентСервер.ЗаполнитьПараметрыСканирования(Док,Перечисления.ВидыПродукцииИС.ПустаяСсылка(),ПараметрыСканирования,Неопределено);
                
                ДанныеШтрихкодаПолные = ШтрихкодированиеОбщегоНазначенияИС.ИнициализироватьДанныеШтрихкода(ПараметрыСканирования);
                ДанныеШтрихкодаПолные.Штрихкод       = Шк32;
                ДанныеШтрихкодаПолные.ШтрихкодBase64 = Шк64;
                ДанныеШтрихкодаПолные.МаркируемаяПродукция = Истина;
                ДанныеШтрихкодаПолные.ТипУпаковки = Перечисления.ТипыУпаковок.МаркированныйТовар;
                ДанныеШтрихкодаПолные.ТипШтрихкода = Перечисления.ТипыШтрихкодов.GS1_DataMatrix;
                ДанныеШтрихкодаПолные.Номенклатура = НовСтр.Номенклатура;
                ДанныеШтрихкодаПолные.Вставить("ЕстьВПулеКодовМаркировки", Ложь); //иначе ошибка...
                ДанныеШтрихкодаПолные.Вставить("ПолныйКодМаркировки", ""); //иначе ошибка...
                
                РегистрыСведений.ПулКодовМаркировкиСУЗ.ЗаписатьДанныеКодаМаркировки(ДанныеШтрихкодаПолные,ПараметрыСканирования);
                
            Иначе
                НовСтр.АкцизнаяМарка = ссСпрШУТ;
            КонецЕсли;


но ошибка та же "Поле объекта не обнаружено (ИдентификаторЗапросаГИСМТ)" сохраняется при попытке печати.
6 Максим Нижегородец
 
10.10.24
12:20
Вложи скан DataMatrix. У разных типов товаров он отличается.
7 zinzillya
 
11.10.24
16:13
(6) да блин у меня нет доступа к ТСД склада. только по хттп-сервису прилетает ШК
8 zinzillya
 
27.10.24
05:34
UPD!

после установки БП 3.0.162.22, обновления драйвера АТОЛ 10.10.5.0 и подгрузки в драйвер оборудования свежей компоненты из 10.10.5.0  (ATOL_KKT_10.zip)

заработало! на Честный знак данные о выбытии передались, статус разрешительного режима "Пройден".
но появилась новая говня - касса печатает только чеки не больше 2 позиций с ЧЗ. Иначе сброс связи.