При работе с маркируемой продукцией (например, упакованной водой или молочной продукцией) в 1С:Управление торговлей 11.5 пользователи часто сталкиваются с технической сложностью: если в одной поставке приходит один и тот же товар (один GTIN), но с разными сроками годности (разными сериями), типовая форма «Проверка и подбор маркируемой продукции» ведет себя некорректно. Программа объединяет все отсканированные марки в одну строку, привязывая их к первой попавшейся серии, и игнорирует разделение на разные сроки, даже если в документе Приобретение товаров и услуг эти серии уже указаны в разных строках.
В этой статье мы подробно разберем, почему так происходит, и рассмотрим несколько способов решения проблемы: от настройки системы до программной доработки.
Проанализируем механику работы типового решения и особенности загрузки КИЗ из XML. Основная логика формы проверки и подбора в 1С построена на уникальности комбинации Номенклатура + Характеристика + GTIN. Серия для системы маркировки (ИС МП) часто является вторичным реквизитом. Если вы загружаете документ из ЭДО, система видит две строки с одинаковым товаром и пытается сопоставить марки. Однако при сканировании обработчик события часто не имеет контекста, к какой именно строке документа (с каким сроком годности) относится конкретная марка, пока не получит данные из ГИС МТ.
Разберем способы преодоления этой ситуации по шагам.
Прежде всего, проверим базовые настройки учета. Выясним причину, не кроется ли она в упрощенном учете серий. Для корректной работы разделения в подборе Политика учета серий должна быть настроена определенным образом:
Рассмотрим практический прием, который позволяет обойти проблему без изменения кода. Если вы уже знаете, что сканируете упаковку с конкретным сроком годности, выполните следующие действия:
В большинстве релизов УТ 11.5 такой подход принудительно привязывает отсканированные коды маркировки (КМ) к текущей выделенной строке, не позволяя им «улетать» в общую кучу. После смены партии (срока годности) выделите следующую строку в списке и продолжите процесс.
Проанализируем ситуацию, когда мы не знаем заранее, какая марка к какой серии относится. Система Честный Знак хранит атрибуты каждой марки, включая дату истечения срока годности (expirationDate). Мы можем заставить 1С получить эти данные автоматически:
Важно: Для этого в настройках интеграции с ИС МП (НСИ и администрирование -> Настройка ИС МП) должна быть включена опция запрашивать данные КМ у Честного Знака.
Если типовые средства не помогают, придется прибегнуть к расширению конфигурации. Рассмотрим, где именно нужно внести изменения. Ключевая информация о связи марки и строки документа хранится в таблице ШтрихкодыУпаковок (или в соответствующей временной таблице обработки подбора).
Основная задача — при сканировании или после загрузки из ЭДО правильно заполнить реквизит Серия и ИдентификаторСтроки. Посмотрим на пример логики, которую можно реализовать в расширении:
// Пример логики перераспределения серий
// Нужно найти марку в коллекции и обновить её привязку к серии
Для Каждого СтрокаМарки Из Объект.ШтрихкодыУпаковок Цикл
Если СтрокаМарки.ЗначениеШтрихкода = ТекущийШтрихкод Тогда
// Получаем дату из данных ГИС МТ (если они были загружены)
ДатаСрока = ПолучитьСрокГодностиИзДанныхМарки(СтрокаМарки.ДанныеКодаМаркировки);
// Ищем подходящую серию в документе
НужнаяСерия = ПоискСерииПоДате(ДатаСрока, Объект.Товары);
Если ЗначениеЗаполнено(НужнаяСерия) Тогда
СтрокаМарки.Серия = НужнаяСерия;
// Обновляем идентификатор строки для связи с ТЧ Товары
СтрокаМарки.ИдентификаторСтроки = ПолучитьИдентификаторСтрокиПоСерии(НужнаяСерия);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Специалисты рекомендуют обратить внимание на обработку ПроверкаИПодборМаркируемойПродукции. В ней необходимо переопределить процедуру распределения марок по строкам. Основной фокус должен быть на том, чтобы при поиске строки-контейнера для марки приоритет отдавался серии, если она заполнена в данных марки (поле expirationDate), а также выгрузка полных кодов маркировки в csv для внешних систем.
Как показывает опыт крупных внедрений, для стабильной приемки больших объемов маркированного товара с разными сроками годности лучше использовать внешние инструменты или специализированные обработки для ТСД. Рассмотрим эталонный процесс:
СерииНоменклатуры.Марка -> Срок годности -> Серия в 1С. При несовпадении (пересорте по срокам) программа сразу предлагает сформировать акт расхождения, переупаковку.Использование такого подхода исключает человеческий фактор и ошибки «схлопывания» строк, которые характерны для упрощенного интерфейса типового подбора.
Таким образом, мы выяснили, что проблема разделения серий в УТ 11.5 решаема. Начните с проверки политики учета серий и использования режима сканирования в выделенную строку. Если это не помогает — задействуйте запросы к ГИС МТ для автоматического получения сроков годности. В крайнем случае — используйте механизм расширений для корректировки связи марок с сериями в таблице штрихкодов.