![]() |
![]() |
![]() |
|
Программное списание кодов маркировки в честном знаке ↓ (Волшебник 22.08.2025 21:54) | ☑ | ||
---|---|---|---|---|
0
Nikqwe
22.08.25
✎
17:34
|
Кто-нибудь занимался интеграцией с честным знаком, подскажите с чего начать? Мне нужно сделать обработку списания кодов маркировки. На инфостарте есть много примеров как взаимодействовать с ЧЗ, но примеров как именно списывать что то совсем нет.
|
|||
1
mikecool
22.08.25
✎
17:32
|
взять типовую и посмотреть предлагать?
|
|||
2
Nikqwe
22.08.25
✎
17:35
|
(1) как вариант можно, но хотелось бы не лазить в коде типовой конфы)
|
|||
3
Волшебник
22.08.25
✎
17:36
|
(2) А хотите почитать документацию на API Честный Знак?
|
|||
4
MWWRuza
гуру
22.08.25
✎
18:17
|
(0) Под клюшки код тоже не предлагать? :-)
Процедура ОтправитьЧерезАПИ()Процедура ОтправитьЧерезАПИ() Если ПроверитьПолучитьТокен() = 0 Тогда Если Вопрос("Отсутствует токен авторизации. Если это рабочее место имеет доступ к ЭЦП, нажмите ""Да"", иначе нажмите ""Нет"" и выполните проверку связи с ЦРПТ с рабочего места, имеющего доступ к ЭЦП.", 4, 15) = 6 Тогда СтрОшибка = ""; ТекТокен = ПолучитьТокенЦРПТ(глПользователь.ЭЦП, ПрефиксВерсии, СтрОшибка); Иначе Записать(); СтатусВозврата(0); Возврат; КонецЕсли; КонецЕсли; ВремКат = КаталогВременныхФайлов(); СзЗаг = СоздатьОбъект("СписокЗначений"); СзТов = СоздатьОбъект("СписокЗначений"); ТзТов = СоздатьОбъект("ТаблицаЗначений"); СзЗаг.ДобавитьЗначение(СокрЛП(ВыделитьИНН(ЮрЛицо.ИНН)), "inn"); Если ПричВыб = Перечисление.ПричВыбМарки.Развес Тогда СзЗаг.ДобавитьЗначение("PACKING", "action"); Иначе СзЗаг.ДобавитьЗначение("EXPIRATION", "action"); КонецЕсли; СзЗаг.ДобавитьЗначение(ПреобразоватьДатуВСтрХМЛ(ТекущаяДата()), "action_date"); // Если ПричВыб = Перечисление.ПричВыбМарки.Развес Тогда СзЗаг.ДобавитьЗначение("OTHER", "document_type"); // Иначе // СзЗаг.ДобавитьЗначение("OTHER", "document_type"); // КонецЕсли; СзЗаг.ДобавитьЗначение(СокрЛП(Число(НомерДок)), "document_number"); СзЗаг.ДобавитьЗначение(ПреобразоватьДатуВСтрХМЛ(ДатаДок),"document_date"); Если ПричВыб = Перечисление.ПричВыбМарки.Развес Тогда СзЗаг.ДобавитьЗначение("Акт фасовки товара", "primary_document_custom_name"); Иначе СзЗаг.ДобавитьЗначение("Акт списания товара", "primary_document_custom_name"); КонецЕсли; ВыбратьСтроки(); Если ПричВыб = Перечисление.ПричВыбМарки.Развес Тогда ТзТов.НоваяКолонка("cis"); ТзТов.НоваяКолонка("product_cost");; Иначе Если СпосУч = Перечисление.СпособУчета.ОСУ Тогда ТзТов.НоваяКолонка("gtin"); ТзТов.НоваяКолонка("gtin_quantity"); Иначе ТзТов.НоваяКолонка("cis"); КонецЕсли; КонецЕсли; Пока ПолучитьСтроку() = 1 Цикл ТзТов.НоваяСтрока(); Марк = СокрЛП(Марка); Если ПричВыб = Перечисление.ПричВыбМарки.Развес Тогда ТзТов.cis = Марк; Иначе Если СпосУч = Перечисление.СпособУчета.ОСУ Тогда Если СтрДлина(Марк) > 14 Тогда ПозРазд = Найти(Марк, "21"); НачМарки = Лев(Марк, ПозРазд - 1); GTIN = Прав(НачМарки, 14); Иначе GTIN = Марк; КонецЕсли; ТзТов.gtin = GTIN; Иначе ТзТов.cis = ПолучитьКИЗ(СтрЗаменить(Марка, "<GS1>", Симв(29))); КонецЕсли; КонецЕсли; Если ПричВыб = Перечисление.ПричВыбМарки.Развес Тогда ТзТов.product_cost = ЦенаЕд * 100; Иначе Если СпГрупп.ТекущаяСтрока() = 1 Тогда Если СпосУч = Перечисление.СпособУчета.ОСУ Тогда ТзТов.gtin_quantity = Количество; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; СзЗаг.ДобавитьЗначение(ТзТов, "products"); Если Сервис = 0 Тогда Ош = ИзмСпосВывода(1); СтатусВозврата(0); Возврат; КонецЕсли; СтрДжейсон = Сервис.DecodeToUTF8(ЗначениеВJSON(СзЗаг)); // Тхт = СоздатьОбъект("Текст"); // Тхт.ДобавитьСтроку(СтрДжейсон); // Тхт.Записать("C:\Temp\Spis.txt"); Кодировка = "base64"; Стр = Кодировать(СтрДжейсон, Кодировка); Тхт = СоздатьОбъект("Текст"); Тхт.ДобавитьСтроку(СтрДжейсон); ИсхФайл = ВремКат + "DocJSON.json"; Тхт.Записать(ИсхФайл); Стр = СтрЗаменить(Стр, Симв(10), ""); СтрДок64 = СтрЗаменить(Стр, Симв(13), ""); ПодпФайл = ВремКат + "DocJSON.json.sig"; Серт = ПолучитьСертификатПоОтпечатку(СокрЛП(глПользователь.ЭЦП.Отпечаток)); ПодписатьФайл(ИсхФайл, Серт, ПодпФайл, 1); СтрЭЦП = УбратьПереносыСтрок(ПодпФайл); сзJSONЗапрос = СоздатьОбъект("СписокЗначений"); сзJSONЗапрос.ДобавитьЗначение("MANUAL", "document_format"); сзJSONЗапрос.ДобавитьЗначение(СтрДок64, "product_document"); сзJSONЗапрос.ДобавитьЗначение(СокрЛП(СтрЭЦП), "signature"); Если Причвыб = Перечисление.ПричВыбМарки.Развес Тогда сзJSONЗапрос.ДобавитьЗначение("LK_RECEIPT", "type"); Иначе Если СпосУч = Перечисление.СпособУчета.Поэкземплярный Тогда сзJSONЗапрос.ДобавитьЗначение("LK_RECEIPT", "type"); Иначе сзJSONЗапрос.ДобавитьЗначение("LK_GTIN_RECEIPT","type"); КонецЕсли; КонецЕсли; сзЗаголовки = СоздатьОбъект("СписокЗначений"); сзЗаголовки.ДобавитьЗначение("application/json;charset=utf-8", "Content-Type"); сзЗаголовки.ДобавитьЗначение("no-cache", "cache-control"); сзЗаголовки.ДобавитьЗначение("application/json", "Accept"); СтрОшибка = ""; Url = АдресСервераМОТП + "/" + ПрефиксВерсии + "/lk/documents/create?pg=" + ВернутьГруппуТовара(); // "milk"; Ответ = глКарлик_ВыполнитьЗапрос("POST", Url, ТекТокен, сзЗаголовки, СтрОшибка, сзJSONЗапрос); УинДокаЦРПТ = СокрЛП(Ответ); Записать(); ДоступностьКнопкиОтправить(); Форма.кнОтправить.Доступность(0); // На тот случай, если ID из ЧЗ еще не прилетел, заблокируем принудительно от повторных отправок Если СокрЛП(Ответ) <> "" Тогда Пока Вопрос("Ожидание проверки статуса документа(~10 сек)......."+РазделительСтрок + "ОК - Проверить статус, Отмена - Прервать", 1,10) <> 2 Цикл ПроверитьСтатус(); Если СокрЛП(Статус) <> "" Тогда Провести(); Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
5
Волшебник
22.08.25
✎
18:18
|
(4) За применение 7.7 в 2025 году надо ввести штрафы :)
|
|||
6
MWWRuza
гуру
22.08.25
✎
20:10
|
(5) За что??? :-))) Нииинадааа!!! Ведь, как ни странно, но все работает👍
|
|||
7
Волшебник
22.08.25
✎
20:11
|
(6) "Работает — не трогай!" (у меня именно такая наклейка под монитором на рабочем месте). Если нужен пруф, я сделаю в понедельник :)
|
|||
8
MWWRuza
гуру
22.08.25
✎
20:12
|
(3) почитать документацию на API Честный Знак?
Выложить? А то вдруг у него нет... |
|||
9
Волшебник
22.08.25
✎
20:18
|
(8) Я ожидал ответа типа "не хочу". Ну не хочет он ничего читать/смотреть, кроме готовых примеров. Сегодня зарегился и хочет всё и сразу.
|
|||
10
Nikqwe
22.08.25
✎
20:29
|
(9) Я так понимаю ты тут, самый прожжённый токсик )))
|
|||
11
Волшебник
модератор
22.08.25
✎
20:34
|
(10) Да, Вы правильно поняли. Я тут главный.
А вот Вы поставили лишнюю запятую после "тут". Видите, я замечаю. |
|||
12
Nikqwe
22.08.25
✎
20:37
|
(11) умница, увидел, ошибку, возьми, пирожок, с, полки, )))
|
|||
13
Nikqwe
22.08.25
✎
20:37
|
Короче, тема закрыта, ну вас нафиг )))
|
|||
14
Волшебник
22.08.25
✎
20:56
|
Ха! Я смеюсь над вами!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |