Имя: Пароль:
1C
1С v8
Честный знак + БП3.0, коды маркировки чз из внешней БД.
0 zinzillya
 
20.10.22
13:19
Надо передавать в чек для выбытия кодов маркировки ЧЗ. Товарищи маузеры, кто сталкивался, ваше мнение куда впихивать код.
Есть вроде Обработка.ПроверкаИПодборПродукцииИСМП из Реализации, а с другой стороны пробовать в чек при формировании СформироватьXMLПакетДляФискализацияЧека (ЗаписьXML.ЗаписатьАтрибут("MarkingCode", XMLСтрока(ТекущаяПозиция.КонтрольнаяМарка));)
Но и там и там столько накулябано, да и с обновами могут перекрывающие патчи заходить. В общем, кто чем может...
1 zinzillya
 
20.10.22
15:51
ап
2 zinzillya
 
28.10.22
13:45
Какие-то замороки с требуемым Символ(29) - не сериализуется, следовательно в общие модули не передаётся. как пристраивать непонятно.
3 OldCondom
 
28.10.22
15:10
Протрезвей. Куда и для чего ЧЗ ты в курсе?
4 zinzillya
 
31.10.22
08:18
(3) Как стекло. Молочка.
5 zinzillya
 
02.11.22
19:07
Схема на сегодня такая. Есть Складская программа ВМС, в которой есть КИЗы (контрольно-идентификационный знак). Синхронизация с нашей базой по номеру документа.
В ВМС организован http-сервис, который по запросу с входящими параметрами (ИдБазы, НомерДокумента) отдаёт xml-пакет с КИЗами номенклатуры.
Соответственно Оператор из 1С открывает док. Реализация с маркированным товаром и через форму Обработка.ПроверкаИПодборПродукцииИСМП.Форма.ПроверкаИПодбор
(гиперссылка на форме документа Реализация) нажимает добавленную Кнопку(Команду)  "ЗаполнениеИзВМС_21". Программа делает запрос в сервис:

    СоединениеHTTP = Новый HTTPСоединение(стрСоединения,,"Ex****","a******6",,,);
    
    //НомерДокументаРеализация = СокрП(Сред(ЭтотОбъект.ПроверяемыйДокумент.Номер,2)); не тот номер...
    ДС_НомерВКампании = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "_НомерВКампании_7fdc219e29ba4b1f9a2f786b8c5bfdef");
    зн_НомерВКампании = УправлениеСвойствами.ЗначениеСвойства(ЭтотОбъект.ПроверяемыйДокумент, ДС_НомерВКампании);
    
    // Получение текста главной страницы через запрос.
    ЗапросHTTP = Новый HTTPЗапрос("?BaseID=92&KizList&DocType=001&DocNumber="+СокрЛП(зн_НомерВКампании)); //?BaseID=92&KizList&DocType=001&DocNumber=348684,352032,
    Ответ = СоединениеHTTP.ВызватьHTTPМетод("POST",ЗапросHTTP);

    ТекстХМЛ = Ответ.ПолучитьТелоКакСтроку(); //получим xml-пакет


После этого перебор структур пакета:

...      

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

напихали соответствующий требованиям массив структур и после отдаём в типовой модуль нашей обработки Обработка.ПроверкаИПодборПродукцииИСМП.Форма.ПроверкаИПодбор

     ПараметрыОбработкиТСД = НовыеПараметрыОбработкиТСД();
   // Формат загрузки из внешнего файла полностью соответствует формату загрузки из ТСД
    Подключаемый_ПолученыДанныеИзТСД(РезультатЗаполнения, ПараметрыОбработкиТСД);

всё.

дальше программа сама фрагментирует полученные КИЗы и запускает сервис проверок Чистого знака. (пока всё отключили, т.к. не проходим проверки, но вроде и нормально пока - по молочке только сериальный учёт).

Ну и печать чека, по идее надо обновить прошивку кассы, после чего она умеет передать КИЗы в ОФД, а он отправляет данные в ЧЗ на списание КИЗов.

Пока это не проверили - касса что-то не проходит в ОФД - разбираемся.
6 zinzillya
 
11.11.22
13:23
Всё-таки Символ(29) долбил мозг.
    Шк = СокрЛП(ДокументРеализациямKiz_list);
    Шк = СтрЗаменить(Шк,"(93)",""+Символ(29)+"(93)");
    Шк = СтрЗаменить(Шк,"(","");
    Шк = СтрЗаменить(Шк,")","");              
    ПоляСтроки = Новый Структура;
    ПоляСтроки.Вставить("Штрихкод",                          ШтрихкодированиеИСКлиентСервер.ШтрихкодВBase64(Шк));
    ПоляСтроки.Вставить("Количество",                        1);
    ПоляСтроки.Вставить("ШтрихкодМаркиАлкогольнойПродукции", "");
    ПоляСтроки.Вставить("ШтрихкодУпаковки",                  "");
    ПоляСтроки.Вставить("ФорматBase64",                      Истина);
    Результат.Добавить(ПоляСтроки);
7 lucbak
 
11.11.22
13:40
(0) слишком много всего написано (вникать не стал), но раз конфа БП то скорее всего используется БПО а там в чеке есть КиЗ - вот в него код маркировки и устанавливай, дальше система сама отработает. По поводу символа(29) - заменяй на какой нибудь другой (для передачи между клиент\сервером) а при установке в чек возвращай его на место.
8 zinzillya
 
14.11.22
11:19
(7) да не хотел я лезть в формирование чека. вроде есть же функционал приёма КиЗов - туда запихал. да и с редактированием и прочими проверками именно там работает Обработка.ПроверкаИПодборПродукцииИСМП.Форма.ПроверкаИПодбор.
для передачи м-ду клиент-сервером 1С использует перегонку в ШтрихкодированиеИСКлиентСервер.ШтрихкодВBase64 и обратно.
но тоже косяки разнообразные лезут. например если подгрузились в документ КиЗы, перезаписать уже не получается - бред какой-то.