Как реализовать поддержку прослеживаемых товаров при ЭДО в Диадоке?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет Торговля и дистрибуция
← На главную

Работа с прослеживаемыми товарами требует передачи в электронных документах специальных регистрационных номеров партий товаров (РНПТ). Если штатный модуль интеграции Диадока не поддерживает автоматическое заполнение этих полей для вашей конфигурации, задачу можно решить путем доработки подключаемого модуля. Давайте разберем, как это сделать правильно, не снимая основную конфигурацию с поддержки.

Принцип работы через подключаемый модуль

Большинство модулей интеграции Диадока для 1С поддерживают архитектуру подключаемых обработок. Это позволяет перехватывать процесс формирования XML-файла и «дообогащать» его необходимыми данными. Основной точкой входа является функция ОбработатьСобытиеДиадок, которая срабатывает на определенных этапах формирования документа.

Шаг 1: Подключение обработчика событий

Для реализации логики нам нужно использовать событие ПослеЗаполненияКонтента. Именно в этот момент основная часть XML уже сформирована, и мы можем внедрить в неё сведения о прослеживаемости. В модуле вашей подключаемой обработки создайте или дополните процедуру:


Функция ОбработатьСобытиеДиадок(ИмяСобытия, Параметры, СтандартнаяОбработкаДиадок = Истина) Экспорт
    Если ИмяСобытия = "ПослеЗаполненияКонтента" Тогда
        ОбработатьСобытиеПослеЗаполненияКонтента(Параметры);
    КонецЕсли;
КонецФункции

Шаг 2: Обработка данных прослеживаемости

Далее рассмотрим, как извлечь данные о РНПТ из вашего документа 1С и передать их в структуру Content, которую использует Диадок. Нам потребуется связать строки табличной части Товары с данными о прослеживаемости, используя ИдентификаторСтроки.


Процедура ОбработкаУПД820ДляПрослеживаемости(СсылкаНаДокумент, Протоконтент)
    КоллекцияСтрок = Протоконтент.Table.Items;
    СвойствоСлужебнаяИнформация = ИмяСвойстваСлужебнаяИнформация();
    
    Для Каждого Элемент Из КоллекцияСтрок Цикл
        ТЗ = Новый ТаблицаЗначений;
        ТЗ.Колонки.Добавить("RegNumberUnit", Новый ОписаниеТипов("Строка"));
        ТЗ.Колонки.Добавить("Unit", Новый ОписаниеТипов("Строка"));
        ТЗ.Колонки.Добавить("UnitName", Новый ОписаниеТипов("Строка"));
        ТЗ.Колонки.Добавить("Quantity", Новый ОписаниеТипов("Число"));
        
        СлужебнаяИнформация = Элемент[СвойствоСлужебнаяИнформация];
        Номенклатура = СлужебнаяИнформация.Номенклатура;
        
        Если Номенклатура.ТНВЭД.ТНВЭДПрослеживаемый Тогда
            ИдентификаторСтроки = СлужебнаяИнформация.ИдентификаторСтроки;
            СтруктураПоискаДляРНПТ = Новый Структура("ИдентификаторСтроки", ИдентификаторСтроки);
            ТаблицаРНПТ_ПоИД = СсылкаНаДокумент.ДокументОснование.СведенияПрослеживаемости.Выгрузить(СтруктураПоискаДляРНПТ);
            ТаблицаРНПТ_ПоИД.Свернуть("РНПТ","Количество");
            
            Для Каждого СтрРНПТ Из ТаблицаРНПТ_ПоИД Цикл
                СтрокаТЗ = ТЗ.Добавить();
                СтрокаТЗ.RegNumberUnit = СтрРНПТ.РНПТ.Код;
                СтрокаТЗ.Unit = Номенклатура.БазоваяЕдиницаИзмерения.Код;
                СтрокаТЗ.UnitName = Номенклатура.БазоваяЕдиницаИзмерения.Наименование;
                СтрокаТЗ.Quantity = СтрРНПТ.Количество;
            КонецЦикла;
        КонецЕсли;
        Элемент.Вставить("ItemTracingInfos", ТЗ);
    КонецЦикла;
КонецПроцедуры

Важные рекомендации

  1. Идентификатор строки: Всегда используйте ИдентификаторСтроки для связки данных. Попытка поиска исключительно по номенклатуре приведет к ошибкам, если в одном документе товар встречается несколько раз.
  2. Тестовый модуль: Перед внедрением в рабочую базу обратитесь в техническую поддержку Диадока. У них могут существовать актуальные версии модулей с уже реализованной поддержкой прослеживаемости, которые не всегда выложены в публичный доступ.
  3. Тестирование: Создайте два тестовых аккаунта (два ящика Диадока) внутри одной или разных организаций. Это позволит провести «боевой» прогон документа и убедиться, что контрагент получает XML с корректно заполненными тегами прослеживаемости.
  4. Синхронизация данных: Убедитесь, что для всей номенклатуры в 1С верно заполнены признаки ТНВЭДПрослеживаемый и настроены единицы измерения. Без корректных данных в справочниках 1С никакая доработка модуля не поможет сформировать верный отчет.

Таким образом, реализовав описанный выше механизм, вы сможете полноценно работать с прослеживаемыми товарами, сохраняя возможность обновления модуля интеграции Диадока в будущем, так как основной код 1С остается нетронутым.

← На главную