В некоторых случаях необходимо получить коды идентификации пачек (КИ) по блокам. К примеру, для наполнения расходной накладной при оптовой продаже.
В обработке используются типовые процедуры и функции общих модулей конфигурации Бухгалтерия Предприятия 3, имена модулей:
- ИнтерфейсАвторизацииИСМПСлужебный;
- ИнтерфейсМОТПКлиентСервер;
- ИнтеграцияИСМП;
- ИнтерфейсМОТПСлужебный.
Для работы обработки необходимо подключить и настроить двухмерный сканер, а также настроить электронную подпись для организации. После открытия обработки необходимо выбрать организацию, для которой доступна электронная подпись. Далее отсканировать коды маркировок блоков и нажать кнопку "Запросить информацию".
Откроется табличный документ со списком КИ пачек блока по данным ИС МОТП.
Проверено на платформе 8.3.15.1830, конфигурации Бухгалтерия предприятия 3.0.80.40. Код модуля формы обработки ниже.
&НаСервере
Процедура ЗапроситьИнформациюНаСервере(ТабДок)
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Макет = ОбработкаОбъект.ПолучитьМакет("Макет");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
Для каждого СтрокаКодыБлоков из КодыБлоков Цикл
Штрихкод = СтрокаКодыБлоков.Значение;
КлючСессии = ИнтерфейсАвторизацииИСМПСлужебный.ПроверитьОбновитьКлючСессии(
ИнтерфейсМОТПКлиентСервер.ПараметрыЗапросаКлючаСессии(Организация));
ВозвращаемоеЗначение = Новый Структура;
ВозвращаемоеЗначение.Вставить("ТребуетсяОбновлениеКлючаСессии", КлючСессии = Неопределено);
ВозвращаемоеЗначение.Вставить("РезультатОтправкиЗапроса", Неопределено);
ВозвращаемоеЗначение.Вставить("ТекстОшибки", "");
ВозвращаемоеЗначение.Вставить("ДанныеОбАгрегации", Неопределено);
ВозвращаемоеЗначение.Вставить("СодержимоеНедоступно", Ложь);
Если ВозвращаемоеЗначение.ТребуетсяОбновлениеКлючаСессии Тогда
Сообщить("Не удалось получить данные из ИС МОТП. Требуется обновление ключа сессии.");
Возврат;
КонецЕсли;
URLЗапроса = СтрШаблон(
"v3/cises/%1/aggregated",
КодироватьСтроку(
Штрихкод,
СпособКодированияСтроки.КодировкаURL));
РезультатЗапроса = ИнтеграцияИСМП.ПолучитьДанныеИзСервиса(URLЗапроса, КлючСессии, ИнтерфейсМОТПКлиентСервер.ПараметрыОтправкиHTTPЗапросов());
РезультатОтправкиЗапроса = ИнтерфейсМОТПСлужебный.ОбработатьРезультатОтправкиHTTPЗапросаКакJSON(РезультатЗапроса);
ВозвращаемоеЗначение.РезультатОтправкиЗапроса = РезультатОтправкиЗапроса;
Если РезультатОтправкиЗапроса.ОтветПолучен Тогда
Если РезультатОтправкиЗапроса.КодСостояния = 200 Тогда
ДанныеОбработки = ИнтерфейсМОТПСлужебный.ТекстJSONВОбъект(РезультатОтправкиЗапроса.ТекстВходящегоСообщенияJSON, Истина);
Для каждого СтрокаДанных из ДанныеОбработки Цикл
ОбластьДетальныхЗаписей.Параметры.КодБлока = Штрихкод;
ОбластьДетальныхЗаписей.Параметры.КодПачки = СтрокаДанных.Ключ;
ТабДок.Вывести(ОбластьДетальныхЗаписей);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЗапроситьИнформацию(Команда)
ТабДок = Новый ТабличныйДокумент;
ЗапроситьИнформациюНаСервере(ТабДок);
ТабДок.Показать();
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//КодыБлоков.Добавить("(01)04660077310165(21)0000A=""");
ИспользоватьПодключаемоеОборудование = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Штрихкод = Данные;
//Штрихкод = "0104660077310165210000A=""800507500093S+Uc";
Штрихкод = "("+Лев(Штрихкод,2)+")"+
Сред(Штрихкод,3,14) +
"("+Сред(Штрихкод,17,2)+")"+
Сред(Штрихкод,19,7);
КодыБлоков.Добавить(Штрихкод);
//Сообщить(Штрихкод);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Попробуем подключить сканер штрихкода
МенеджерОборудованияКлиентПереопределяемый.НачатьПодключениеОборудованиеПриОткрытииФормы(ЭтотОбъект, "СканерШтрихкода");
КонецПроцедуры