Интеграция «Склада 15 с МДЛП» и конфигурации «1С: Управление аптечной сетью 1.4»
Установка расширения для УАС
Актуально для релиза 11.4.12.71/ 1.4.12.14, на более поздних не проверялось!
Функции расширения:
- Исправление поведения УАС при записи элементов справочника «Штрихкоды упаковок товаров» в случае, когда уровень вложенности упаковок больше 1. В этом случае УАС записывает в справочник информацию об упаковках самого верхнего уровня и самого нижнего уровня, игнорируя промежуточные упаковки. Расширение исправляет это поведение, восстанавливая иерархию вложенности групповых упаковок.
- Включение функциональности работы с сериями в уведомлениях МДЛП — генерация элементов справочника «Серии номенклатуры», заполнения серий в табличных частях. В УАС по умолчанию отключена кнопка генерации серий в «Уведомлении о приемке МДЛП», соответственно при записи в справочник «Штрихкоды упаковок товаров» не заносится информация о серии.
Расширение вносит изменения в следующие процедуры и функции:
- Общий модуль УАС_МДЛП: ЗаполнитьСсылкиШтрихкодовУпаковок, МДЛП_ИспользоватьСерииНоменклатуры, МДЛП_ЗаполнитьСгенерироватьСерии, ОбработкаЗаполнения_ДобавитьТовар, ОбработкаЗаполнения_Отгрузка_Реализация
- Общий модуль УАС_Сервер: ЗаполнитьГоденДо
Выгрузка справочников
Интеграционная обработка УАС 1.4
Макет «Номенклатура» — текст запроса, строк а 29. Реквизиты номенклатуры «ТабачнаяПродукция» и «ОбувнаяПродукция» удалены в релизе 11.4.12.71/1.4.12.14, удаляем их из запроса. Если этого не сделать, выгрузка справочника «Номенклатура» из 1С будет вызывать ошибку.
Меняем
ВЫБОР КОГДА Номенклатура.ВидНоменклатуры.УАС\_МДЛП ИЛИ Номенклатура.ТабачнаяПродукция ИЛИ Номенклатура.ОбувнаяПродукция ТОГДА ИСТИНАИНАЧЕ ЛОЖЬКОНЕЦКАК Маркируемый,
на
ВЫБОР КОГДА Номенклатура.ВидНоменклатуры.УАС\_МДЛП ТОГДА ИСТИНАИНАЧЕ ЛОЖЬКОНЕЦКАК Маркируемый,
Включаем выгрузку справочника «Транспортные упаковки».
Информация о штрихкодах упаковок
Одна из основных проблем при настройке обмена 1С УАС со «Складом 15» — это различие форматов штрихкодов упаковок, точнее то, в каком формате в текстовом виде хранятся эти номера в базах и как воспринимаются алгоритмами.
Штрихкод упаковки имеет следующий вид:
1С УАС хранит номера упаковок в справочник ШтрихкодыУпаковокТоваров без идентификатора применения (00), т. е. в виде
212345678912345678
«Склад 15» правильно обрабатывает информацию о номерах упаковок, если в таблице «ТранспортныеУпаковки» и в документах в полях ИдКоробки и ШтрихкодРодителя эти номера записаны в формате GS1, т. е. в виде
(00)212345678912345678
В случае же, когда документ обрабатывается на ТСД по заданию, т. е. по выгруженному из 1С документу, при сканировании штрихкода палеты «Склад 15» правильно определяет наличие кода этой паллеты в документе, только если в поле SSCC этот код занесен в формате GS1, но без скобок, т. е. в виде
00112345678912345678
Соответственно, при выгрузке и загрузке данных приходится проводить преобразование между этими видами представления номеров упаковок.
Интеграционная обработка — макет ТранспортныеУпаковки.
Исходя из вышесказанного (см. «Информация о штрихкодах упаковок»), вносим изменения в текст запроса — для номера упаковки добавляем префикс (00).
Меняем
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
ШтрихкодыУпаковокТоваров.ЗначениеШтрихкода КАК ШтрихкодТранспортнойУпаковки,
на
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
ВЫБОР КОГДА ПОДСТРОКА(ШтрихкодыУпаковокТоваров.ЗначениеШтрихкода, 1, 4) = "(00)" ТОГДА ШтрихкодыУпаковокТоваров.ЗначениеШтрихкода
ИНАЧЕ
"(00)" + ШтрихкодыУпаковокТоваров.ЗначениеШтрихкода
КОНЕЦ КАК ШтрихкодТранспортнойУпаковки,
Настройка бизнес-процессов
Уведомление о приемке МДЛП
Копируем типовой бизнес-процесс для внесения изменений. Настраиваем отбор документов для нового БП.
БП — выгрузка табличной части — ТЧ «МаркировкаЛекарств» — имя приемника — SSCC — меняем произвольный код ШтрихкодПалетыHRI на следующий (убираем скобки из префикса, см. «Информация о штрихкодах упаковок выше»):
ШтрихкодПалеты = СтрокаТЧДокумента1С.ШтрихкодПалеты;
Если ЗначениеЗаполнено(ШтрихкодПалеты) И Лев(ШтрихкодПалеты, 4) = "(00)" Тогда
ШтрихкодПалеты = "00" + Сред(ШтрихкодПалеты, 5);
КонецЕсли;
Если ЗначениеЗаполнено(ШтрихкодПалеты) И НЕ Лев(ШтрихкодПалеты, 4) = "00" Тогда
ШтрихкодПалеты = "00" + ШтрихкодПалеты;
КонецЕсли;
Результат = ШтрихкодПалеты;
БП — загрузка табличных частей — «НомераУпаковок» — реквизит НомерРодительскойУпаковки— при обратной загрузке в 1С обрезаем префикс (00) (см. «Информация о штрихкодах упаковок»).
Меняем на произвольный код:
НомерРодительскойУпаковки = СтрокаТабличнойЧастиДокументаТСД.SSCC;
Если СтрокаТабличнойЧастиДокументаТСД.Свойство("ШтрихкодРодителя") Тогда
НомерРодительскойУпаковки = СтрокаТабличнойЧастиДокументаТСД.ШтрихкодРодителя;
ИначеЕсли СтрокаТабличнойЧастиДокументаТСД.Свойство("ИдКоробки") Тогда
НомерРодительскойУпаковки = СтрокаТабличнойЧастиДокументаТСД.ИдКоробки;
КонецЕсли;
Если ЗначениеЗаполнено(НомерРодительскойУпаковки) И Лев(НомерРодительскойУпаковки, 1) = "(" Тогда
ПозицияСкобки2 = СтрНайти(НомерРодительскойУпаковки, ")");
Если ПозицияСкобки2 > 0 Тогда
НомерРодительскойУпаковки = Сред(НомерРодительскойУпаковки, ПозицияСкобки2 + 1, 18);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(НомерРодительскойУпаковки) и (СтрДлина(НомерРодительскойУпаковки) = 20) и (Лев(НомерРодительскойУпаковки, 2) = "00") Тогда
НомерРодительскойУпаковки = Сред(НомерРодительскойУпаковки, 3, 18);
КонецЕсли;
Результат = НомерРодительскойУпаковки;
БП — Загрузка табличных частей — «ТранспортныеУпаковки» — реквизит НомерУпаковки — произвольный код «Получить SSCC» (палета в приоритете) — к стандартной обрезке лидирующего префикса (00) добавляем обрезку префикса без скобок 00, т.к. мы изменили в выгрузке выше (см. «Информация о штрихкодах упаковок»).
Меняем на следующий код:
SSCC = СтрокаТабличнойЧастиДокументаТСД.SSCC;
Если НЕ ЗначениеЗаполнено(SSCC)
И СтрокаТабличнойЧастиДокументаТСД.Свойство("ИдКоробки") Тогда
SSCC = СтрокаТабличнойЧастиДокументаТСД.ИдКоробки;
КонецЕсли;
Если ЗначениеЗаполнено(SSCC) И Лев(SSCC, 1) = "(" Тогда
ПозицияСкобки2 = СтрНайти(SSCC, ")");
Если ПозицияСкобки2 > 0 Тогда
SSCC = Сред(SSCC, ПозицияСкобки2 + 1, 18);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(SSCC) и (СтрДлина(SSCC) = 20) и (Лев(SSCC, 2) = "00") Тогда
SSCC = Сред(SSCC, 3, 18);
КонецЕсли;
Результат = SSCC;
БП — загрузка табличных частей — «СоставТранспортныхУпа ковок» — реквизит ИдентификаторСтроки— произвольный код «ПолучитьИдентификаторСтрокиТУ» (палета в приоритете) — к стандартной обрезке лидирующего префикса (00) добавляем обрезку префикса без скобок 00, т.к. мы изменили в выгрузке выше (см. «Информация о штрихкодах упаковок»).
Меняем на следующий:
ИдентификаторСтроки = "";
SSCC = СтрокаТабличнойЧастиДокументаТСД.SSCC;
Если Не ЗначениеЗаполнено(SSCC)
И СтрокаТабличнойЧастиДокументаТСД.Свойство("ИдКоробки") Тогда
SSCC = СтрокаТабличнойЧастиДокументаТСД.ИдКоробки;
КонецЕсли;
Если ЗначениеЗаполнено(SSCC) И Лев(SSCC, 1) = "(" Тогда
ПозицияСкобки2 = СтрНайти(SSCC, ")");
Если ПозицияСкобки2 > 0 Тогда
SSCC = Сред(SSCC, ПозицияСкобки2 + 1, 18);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(SSCC) и (СтрДлина(SSCC) = 20) и (Лев(SSCC, 2) = "00") Тогда
SSCC = Сред(SSCC, 3, 18);
КонецЕсли;
Если ЗначениеЗаполнено(SSCC) Тогда
НайденнаяСтрокаТранспортнойУпаковки =
ОбъектДокумент1С.ТранспортныеУпаковки.НайтиСтроки(
Новый Структура("НомерУпаковки", SSCC));
Если НайденнаяСтрокаТранспортнойУпаковки.Количество() > 0 Тогда
ИдентификаторСтроки =
НайденнаяСтрокаТранспортнойУпаковки[0].ИдентификаторСтроки;
КонецЕсли;
КонецЕсли;
Результат = ИдентификаторСтроки;
Интеграционная обработка — вносим изменения в процедуру УАС_1_4_УведомлениеОПриемкеМДЛП_ПослеЗаполненияСтрокиТЧ_СоставТранспортныхУпаковок. Правка исправляет в некоторых случаях неправильное поведение загрузки — сбивается иерархия вложенности групповых упаковок при уровне вложенности более одного.
Меняем
СтрокаНомерУпаковки = Док1СРезультат.НомераУпаковок.Найти(SGTIN, "НомерКИЗ");
Если НЕ СтрокаНомерУпаковки = Неопределено Тогда
СтрокаНомерУпаковки.ИдентификаторСтроки = СтрокаДокумента.ИдентификаторСтрокиУпаковки; СтрокаНомерУпаковки.НомерРодительскойУпаковки = НомерУпаковки;
КонецЕсли;
на
СтрокаНомерУпаковки = Док1СРезультат.НомераУпаковок.Найти(SGTIN, "НомерКИЗ");
Если НЕ СтрокаНомерУпаковки = Неопределено Тогда
СтрокаНомерУпаковки.ИдентификаторСтроки = СтрокаДокумента.ИдентификаторСтрокиУпаковки;
Если НЕ ЗначениеЗаполнено(СтрокаНомерУпаковки.НомерРодительскойУпаковки) Тогда
СтрокаНомерУпаковки.НомерРодительскойУпаковки = НомерУпаковки;
КонецЕсли;
КонецЕсли;
Функция УАС_1_4_ОбработатьSSCC — к стандартной обрезке лидирующего префикса (00) добавляем обрезку префикса без скобок 00, т.к. мы изменили в выгрузке выше (см. «Информация о штрихкодах упаковок»).
Добавляем код:
Если ЗначениеЗаполнено(SSCC) и (СтрДлина(SSCC) = 20) и (Лев(SSCC, 2) = "00") Тогда
SSCC = Сред(SSCC, 3, 18);
КонецЕсли;
Разагрегация (на основании документа ТСД «Агрегация»)
Создаем бизнес-процесс «Расформирование упаковок (созданный на ТСД «Агрегация»)».
Настройка загрузки шапки.
Интеграционная обработка — модуль объекта. Так как в библиотеке МДЛП используется один вид документа и для агрегирования, и для расформирования упаковок, в обработчик ПередЗа полнениемД окумента добавляем следующий код, чтобы при открытии формы нового документа, загруженного с ТСД, система правильно выбирала вид формы.
Процедура УАС_1_4_УведомлениеОбАгрегированииИТрансформацииУпаковокМДЛП_ ПередЗаполнениемДокумента_Расформирование(СтруктураПараметров) Экспорт УАС_1_4_Общий_ПередЗаполнениемДокумента(СтруктураПараметров) СтруктураПараметров.Вставить("ПараметрыОткрытияФормы",
Новый Структура("ЗначенияЗаполнения", Новый Структура("Операция", Перечисления.ОперацииАгрегированияИТрансформацииУпаковокМДЛП.Расформирование)));
КонецПроцедуры
Настройка загрузки табличной части:
В документе ТСД «Агрегация» в таблице «Разагрегировать» содержатся штрихкоды упаковок, подлежащих расформированию. Загружаем их в табличную часть документа «Уведомление об агрегировании и трансформации упаковок» с видом операции «Расформирование», предварительно удалив префикс штрихкода, поскольку в 1С все номера упаковок хранятся без префиксов (см. «Информация о штрихкодах упаковок»).
Ид = СтрокаТабличнойЧастиДокументаТСД.Ид;
Если НЕ ЗначениеЗаполнено(Ид) Тогда
Ид = СтрокаТабличнойЧастиДокументаТСД.id;
КонецЕсли;
Если ЗначениеЗаполнено(Ид) И Лев(Ид, 1) = "(" Тогда
ПозицияСкобки2 = СтрНайти(Ид, ")");
Если ПозицияСкобки2 > 0 Тогда
Ид = Сред(Ид, ПозицияСкобки2 + 1, 18);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Ид) и (СтрДлина(Ид) = 20) и (Лев(Ид, 2) = "00") Тогда
Ид = Сред(Ид, 3, 18);
КонецЕсли;
Результат = Ид;
Агрегация— уведомление об агрегировании и трансформации упаковок МДЛП
Создаем бизнес-процесс «Агрегация упаковок (созданный на ТСД «Агрегация»)».
Настройка загрузки шапки:
Произвольный код ВложеныПотребительскиеУпаковки — определяет вид документа «Агрегация» — товары в коробки или коробки в палеты. Таблица «СтрокиФакт» документа «Агрегация» содержит коды только потребительских упаковок. Так как в обработке обмена таблица «ДокументТСД.СтрокиФакт» в сегда содержит хотя бы одну строку со служебными данными, проверяется условие «Количество строк > 1».
Результат = Ложь;
Если ДокументТСД.СтрокиФакт.Количество() > 1 Тогда
Результат = Истина;
КонецЕсли;
Интеграционная обработка — модуль объекта. Так как в библи отеке МДЛП используется один вид документа и для агрегирования, и для расформирования упаковок, в обработчик ПередЗ аполнениемД окумента добавляем следующий код, чтобы при открытии формы нового документа, загруженного с ТСД, система правильно выбирала вид формы.
Процедура УАС_1_4_УведомлениеОбАгрегированииИТрансформацииУпаковокМДЛП_ ПередЗаполнениемДокумента_Агрегация(СтруктураПараметров) Экспорт УАС_1_4_Общий_ПередЗаполнениемДокумента(СтруктураПараметров);
СтруктураПараметров.Вставить("ПараметрыОткрытияФормы",
Новый Структура("ЗначенияЗаполнения", Новый Структура("Операция", Перечисления.ОперацииАгрегированияИТрансформацииУпаковокМДЛП.Агрегирование)));
КонецПроцедуры
Модуль формы — в обработчике ПослеО ткрытияФ ормыД окумента в зависимости от вида документа агрегации — товары в коробки или коробки в палеты (определяется значением реквизита ВложеныПотребительскиеУпаковки) настраиваем вид формы документа.
НаКлиенте
Процедура УАС_1_4_УведомлениеОбАгрегированииИТрансформацииУпаковокМДЛП_ПослеОткрытияФормыДокумента (СтруктураПараметров) Экспорт
УАС_1_4_Общий_ПослеОткрытияФормыДокумента(СтруктураПараметров);
Форма = СтруктураПараметров.ФормаДокумента;
Форма.НастроитьФормуПоОперации();
ВложеныПотребительскиеУпаковки = Форма.Объект.ВложеныПотребительскиеУпаковки;
Если ВложеныПотребительскиеУпаковки Тогда
Форма.ВложеныПотребительскиеУпаковки = 1;
ТекущаяСтраница = Форма.Элементы.ГруппаТовары;
Для Каждого СтрокаТЧ Из Форма.Объект.Товары Цикл
ПараметрыОтбора = Новый Структура("ИдентификаторСтроки",
СтрокаТЧ.ИдентификаторСтроки);
СтрокиНомеров = Форма.Объект.НомераУпаковок.НайтиСтроки(ПараметрыОтбора);
Если СтрокиНомеров.Количество() = СтрокаТЧ.Количество Тогда
СтрокаТЧ.СтатусЗаполненияУпаковок = 1;
Иначе
СтрокаТЧ.СтатусЗаполненияУпаковок = 0;
КонецЕсли;
КонецЦикла;
Иначе
Форма.ВложеныПотребительскиеУпаковки = 0;
ТекущаяСтраница = Форма.Элементы.ГруппаТранспортныеУпаковки;
КонецЕсли;
Если Форма.Элементы.ГруппаВложенныеУпаковки.ТекущаяСтраница <> ТекущаяСтраница Тогда Форма.Элементы.ГруппаВложенныеУпаковки.ТекущаяСтраница = ТекущаяСтраница;
КонецЕсли;
КонецПроцедуры
Настройка загрузки табличных частей:
ТЧ «Группировочные упаковки»:
Интеграционная обработка — модуль объекта. Заполняем поле ИдентификаторСтроки сгенерированным ГУИД для связи с табличной частью «ТранспортныеУпаковки» и «Товары».
Процедура УАС_1_4_УведомлениеОбАгрегированииИТрансформацииУпаковокМДЛП_ ПослеЗаполненияСтрокиТЧ_ГруппировочныеУпак овки(СтруктураПараметров) Экспорт УАС_1_4_Общий_ПослеЗаполненияСтрокиТЧ(СтруктураПараметров);
Док1СРезультат = СтруктураПараметров.Док1СРезультат;
СтрокаДокумента = СтруктураПараметров.СтрокаДокумента;
ДобавленаНоваяСтрока = СтруктураПараметров.СтруктураПоискаКлючаСвязи.ЭтоНоваяСтрока1С;
Если ДобавленаНоваяСтрока Тогда
СтрокаДокумента.ИдентификаторСтроки = Строка(Новый УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
Произвольный код «Номер группировочной упаковки» — если тип агрегации — товары в коробки, то таблица «КоробкиПалеты» содержит номера коробок, в которые агрегируем потребительские упаковки, загружаем их в табличную часть «Группировочные упаковки». Если тип агрегации — коробки в палеты, то по значению свойства ЭтоРодитель отбираем палеты, в которые агрегируем коробки и загружаем в табличную часть только коды палет.
Результат = "";
Если ДокументТСД.СтрокиФакт.Количество() > 1 Тогда
Если СтрокаТабличнойЧастиДокументаТСД.Свойство("СерийныйНомер") Тогда
Результат = СтрокаТабличнойЧастиДокументаТСД.СерийныйНомер;
ИначеЕсли СтрокаТабличнойЧастиДокументаТСД.Свойство("serijnyjNomer") Тогда
Результат = СтрокаТабличнойЧастиДокументаТСД.serijnyjNomer;
КонецЕсли;
Иначе
Если СтрокаТабличнойЧастиДокументаТСД.Свойство("ЭтоРодитель") Тогда
Если СтрокаТабличнойЧастиДокументаТСД.ЭтоРодитель Тогда
Если СтрокаТабличнойЧастиДокументаТСД.Свойство("СерийныйНомер") Тогда
Результат = СтрокаТабличнойЧастиДокументаТСД.СерийныйНомер;
ИначеЕсли СтрокаТабличнойЧастиДокументаТСД.Свойство("serijnyjNomer") Тогда
Результат = СтрокаТабличнойЧастиДокументаТСД.serijnyjNomer;
КонецЕсли;
КонецЕсли;
ИначеЕсли СтрокаТабличнойЧастиДокументаТСД.Свойство("etoRoditel") Тогда
Если СтрокаТабличнойЧастиДокументаТСД.etoRoditel Тогда
Если СтрокаТабличнойЧастиДокументаТСД.Свойство("СерийныйНомер") Тогда
Результат = СтрокаТабличнойЧастиДокументаТСД.СерийныйНомер;
ИначеЕсли СтрокаТабличнойЧастиДокументаТСД.Свойство("serijnyjNomer") Тогда
Результат = СтрокаТабличнойЧастиДокументаТСД.serijnyjNomer;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ТЧ «Транспортные упаковки»:
Интеграционная обработка — модуль объекта. Находим в табличной части «Группировочные упаковки» номер упаковки, в которую вложена текущая транспортная упаковка, и заполняем поле ИдентификаторГрупповойУпаковки для хранения иерархии вложенности.
Процедура УАС_1_4_УведомлениеОбАгрегированииИТрансформацииУпаковокМДЛП_ ПослеЗаполненияСтрокиТЧ_ТранспортныеУпаковки(СтруктураПараметров) Экспорт УАС_1_4_Общий_ПослеЗаполненияСтрокиТЧ(СтруктураПараметров);
Док1СРезул ьтат = СтруктураПараметров.Док1СРезультат;
ГруппировочныеУпаковки = Док1СРезультат.ГруппировочныеУпаковки;
СтрокаДокумента = СтруктураПараметров.СтрокаДокумента;
СтрокаТСД = СтруктураПараметров.СтрокаТабличнойЧастиДокументаТСД;
Если НЕ ЗначениеЗаполнено(СтрокаДокумента.ИдентификаторГрупповойУпаковки) Тогда
Если СтрокаТСД.Свойство("Родитель") Тогда
НомерУпаковки = УАС_1_4_ОбработатьSSCC(СтрокаТСД.Родитель);
ИначеЕсли СтрокаТСД.Свойство("Roditel") Тогда
НомерУпаковки = УАС_1_4_ОбработатьSSCC(СтрокаТСД.Roditel);
КонецЕсли;
Если ЗначениеЗаполнено(НомерУпаковки) Тогда
НайденнаяСтрокаГруппировочнойУпаковки =
ГруппировочныеУпаковки.НайтиСтроки(Новый Структура("НомерУпаковки",
НомерУпаковки));
Если НайденнаяСтрокаГруппировочнойУпаковки.Количество() > 0 Тогда
СтрокаДокумента.ИдентификаторГрупповойУпаковки =
НайденнаяСтрокаГруппировочнойУпаковки[0].ИдентификаторСтроки;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Произвольный код «Номер транспортной упаковки». Номера упаковок загружаются из таблицы «КоробкиПаллеты» в табличную часть «ТранспортныеУпаковки» только в случае вида агрегации коробки в паллеты (пустая таблица «СтрокиФакт»). Загружаются только номера коробок, которые агрегируем в паллеты (заполнено свойство Родитель).
Результат = "";
Если ДокументТСД.СтрокиФакт.Количество() <= 1 Тогда
Если СтрокаТабличнойЧастиДокументаТСД.Свойство("Родитель") и
ЗначениеЗаполнено(СтрокаТабличнойЧастиДокументаТСД.Родитель) Тогда
Если СтрокаТабличнойЧастиДокумента ТСД.Свойство("СерийныйНомер") Тогда
Результат = СтрокаТабличнойЧастиДокументаТСД.СерийныйНомер;
ИначеЕсли СтрокаТабличнойЧастиДокументаТСД.Свойство("serijnyjNomer") Тогда
Результат = СтрокаТабличнойЧастиДокументаТСД.serijnyjNomer;
КонецЕсли;
ИначеЕсли СтрокаТабличнойЧастиДокументаТСД.Свойство("Roditel") и
ЗначениеЗаполнено(СтрокаТабличнойЧастиДокументаТСД.Roditel) Тогда
Если СтрокаТабличнойЧастиДокументаТСД.Свойство("СерийныйНомер") Тогда
Результат = СтрокаТабличнойЧастиДокументаТСД.СерийныйНомер;
ИначеЕсли СтрокаТабличнойЧастиДокументаТСД.Свойство("serijnyjNomer") Тогда
Результат = СтрокаТабличнойЧастиДокументаТСД.serijnyjNomer;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ТЧ «Товары»:
Интеграционная обработка — модуль объекта. Заполняем поле ИдентификаторСтроки сгенерированным ГУИД для связи с табличной частью «НомераУпаковок». Находим в табличной части «Группировочные упаковки» номер упаковки, в которую вложена текущая позиция товара, и заполняем поле И дентификаторГрупповойУпаковки для хранения иерархии вложенности.
Процедура УАС_1_4_УведомлениеОбАгрегированииИТрансформацииУпаковокМДЛП_ПослеЗаполненияСтрокиТЧ_Товары (СтруктураПараметров) Экспорт
Перем КэшированныеЗначения;
УАС_1_4_Общий_ПослеЗаполненияСтрокиТЧ(СтруктураПараметров);
СтрокаДокумента = СтруктураПараметров.СтрокаДокумента;
ДобавленаНоваяСтрока = СтруктураПараметров.СтруктураПоискаКлючаСвязи.ЭтоНоваяСтрока1С;
Если ДобавленаНоваяСтрока Тогда
СтрокаДокумента.ИдентификаторСтроки = Строка(Новый УникальныйИдентификатор);
КонецЕсли;
Док1СРезультат = СтруктураПараметров.Док1 СРезультат;
ГруппировочныеУпаковки = Док1СРезультат.ГруппировочныеУпаковки;
СтрокаТСД = СтруктураПараметров.СтрокаТабличнойЧастиДокументаТСД;
НомерРодительскойУпаковки = УАС_1_4_ОбработатьSSCC(?(СтрокаТСД.Свойство("Родитель"),
СтрокаТСД.Родитель, ""));
НайденнаяСтрокаГруппировочныхУпаковок =
ГруппировочныеУпаковки.НайтиСтроки(Новый Структура("НомерУпаковки",
НомерРодительскойУпаковки));
Если НайденнаяСтрокаГруппировочныхУпаковок.Количество()>0 Тогда
СтрокаДокумента.ИдентификаторГрупповойУпаковки =
НайденнаяСтрокаГруппировочныхУпаковок[0].ИдентификаторСтроки;
КонецЕсли;
КонецПроцедуры
ТЧ «НомераУпаковок»:
Интеграционная обработка — модуль объекта. Находим в табличной части «Товары» товарную позицию по номеру GTIN, которой принадлежит текущая потребительская упаковка, и заполняем поле ИдентификаторСтроки для хранения иерархии вложенности.
Процедура УАС_1_4_УведомлениеОбАгрегиров анииИТрансформацииУпаковокМДЛП_ПослеЗаполненияСтрокиТЧ_НомераУпаковок (СтруктураПараметров) Экспорт
УАС_1_4_Общий_ПослеЗаполненияСтрокиТЧ(СтруктураПараметров);
Док1СРезультат = СтруктураПараметров.Док1СРезультат;
ТоварыДокумента = Док1СРезультат.Товары;
СтрокаДокумента = СтруктураПараметров.СтрокаДокумента;
СтрокаТСД = СтруктураПараметров.СтрокаТабличнойЧастиДокументаТСД;
GTIN = ?(СтрокаТСД.Свойство("GTIN"), СтрокаТСД.GTIN, ?(СтрокаТСД.Свойство("GS1Марка"), Сред(СтрокаТСД.GS1Марка, 5, 14), ""));
НайденнаяСтрокаТоваров = ТоварыДокумента.НайтиСтроки(Новый Структура("GTIN",GTIN));
Если НайденнаяСтрокаТоваров.Количество()>0 Тогда
СтрокаДокумента.Идентифика торСтроки = НайденнаяСтрокаТоваров[0].ИдентификаторСтроки;
КонецЕсли;
КонецПроцедуры
Уведомление об отгрузке ЛП
Создаем бизнес-процесс «Уведомление об отгрузке ЛП (на основании «Реализации товаров и услуг»)».
Выгрузка шапки:
