При работе в конфигурации 1С:Управление торговлей 11.5 (релиз 11.5.17.148 и аналогичные) пользователи часто сталкиваются с трудностями при приемке маркированной продукции через ЭДО. Одной из наиболее специфических проблем является ситуация, когда поставщик присылает агрегационную упаковку (SSCC), внутри которой находятся товары, относящиеся к разным номерам ГТД (Государственной таможенной декларации). Разберем, почему возникает ошибка при проверке марок и как ее устранить.
Рассмотрим сценарий: в электронном УПД (Универсальном передаточном документе) структура данных организована таким образом, что информация о ГТД привязана к конкретным позициям. Если одна физическая коробка (упаковка 123) содержит, например, 15 штук товара по ГТД №1 и 35 штук того же товара по ГТД №2, то в XML-файле, сформированном оператором ЭДО (например, Контур.Диадок), этот штрихкод упаковки может фигурировать дважды.
Проблема заключается в том, что при загрузке документа в 1С через внешние модули или встроенную библиотеку ЭДО, система пытается сопоставить данные. В результате в табличную часть ШтрихкодыУпаковок документа ПриобретениеТоваровУслуг (ПТиУ) штрихкод одной и той же агрегационной упаковки добавляется столько раз, сколько разных ГТД к ней привязано.
Когда мы открываем форму «Проверка и подбор маркируемой продукции», механизм 1С начинает строить дерево вложенности. Система обнаруживает дублирующийся ключ (SSCC-код) и выдает критическую ошибку: «В коллекции уже имеется элемент с указанным ключом». Это происходит из-за того, что объект Соответствие или Структура, используемые в коде для построения дерева марок, требуют уникальности идентификаторов упаковок.
Выясним причину некорректного заполнения. Чаще всего это связано с алгоритмами обработки входящего XML-файла внешними модулями. Чтобы исправить ситуацию, рассмотрим несколько вариантов действий.
Способ 1: Ручная корректировка табличной части
Если документов немного, проанализируем содержимое вкладок документа поступления перед запуском проверки. Нам необходимо убедиться, что каждый уникальный SSCC-код встречается в таблице штрихкодов только один раз.
Приобретение товаров и услуг.Способ 2: Программное исправление (для разработчиков)
Если проблема носит массовый характер, проанализируем код обработки, отвечающей за загрузку данных из ЭДО. Нам нужно внедрить проверку на уникальность при заполнении коллекции штрихкодов. Рассмотрим пример логики, которую можно применить в расширении:
// Пример логики поиска и удаления дублей перед открытием формы проверки
ТаблицаШтрихкодов = Объект.ШтрихкодыУпаковок.Выгрузить();
ТаблицаШтрихкодов.Свернуть("Штрихкод, Упаковка"); // Оставляем уникальные пары
Объект.ШтрихкодыУпаковок.Загрузить(ТаблицаШтрихкодов);
При этом важно помнить, что связь «Марка — ГТД» должна сохраняться на уровне строк товаров, а не на уровне самой упаковки в дереве проверки.
Выясним еще одну важную деталь: иногда при загрузке из ЭДО коробки (агрегаты) подтягиваются, а вложенные в них штучные марки — нет. Это происходит из-за того, что при наличии дубликатов упаковок связь «родитель-потомок» в дереве марок разрывается. Программа считает вложенные марки «сиротами» (не принадлежащими ни к одной из упаковок в данной строке) и игнорирует их при автоматическом заполнении.
Для решения этой проблемы попробуем выполнить следующие действия:
БЭД (Библиотеки электронных документов).Проанализируем доступные исправления от компании 1С. Для релизов ветки 11.5.17 рекомендуется проверить наличие установленных патчей в разделе «Обслуживание — Обновление программы — Установленные исправления». Ищите исправления со следующими описаниями:
Важный момент: если вы решите проводить документ «силой», игнорируя ошибки проверки, это может привести к некорректному списанию ГТД в будущем. Программа зафиксирует в регистре Данные по маркировке ГИС МТ неверную связку, что вызовет проблемы при дальнейшей перепродаже товара (формировании УПД на отгрузку).
Таким образом, наиболее правильным путем будет устранение дублирования записей в табличной части штрихкодов до момента запуска формы проверки продукции.