С введением обязательной маркировки слабоалкогольной продукции пользователи 1С:УТ 11, КА и ERP столкнулись с неочевидной логикой работы системы при отгрузке пива в кегах. Основная сложность заключается в том, что учет часто ведется в литрах или декалитрах, в то время как код маркировки (DataMatrix) присваивается целой единице продукции — кеге, объем которой может составлять 20, 30 или 50 литров. Разберем подробно, почему возникает ошибка пересчета и как настроить систему для корректной работы.
Рассмотрим стандартную ситуацию: в программе создана номенклатура с базовой единицей измерения литр. Для этой номенклатуры заведена упаковка Кег 30 л. При сканировании кода маркировки в документе реализации система должна сопоставить марку с конкретным объемом. Однако часто происходит следующее: при добавлении кода марки количество в строке документа принудительно меняется на 1 литр (или на дробное значение, например, 0.033 кеги).
Проанализируем причину такого поведения. Это происходит из-за того, что в справочнике ШтрихкодыУпаковокТоваров при первом сканировании новой марки создается запись, где по умолчанию в поле Количество устанавливается значение «1». Система воспринимает это как 1 базовую единицу измерения (в данном случае — 1 литр), не учитывая, что данная марка наклеена на емкость объемом 30 литров.
Самый простой, но трудоемкий способ — это исправление данных в реестре считанных штрихкодов. Если вы столкнулись с неверным пересчетом в документе, необходимо выполнить следующие действия:
После этого при повторном сканировании этой же марки в документе реализации система увидит коэффициент 30 и корректно заполнит количество товара.
Для тех, кто использует ТСД (терминалы сбора данных) или мобильные рабочие места, ручная правка каждого штрихкода невозможна. В этом случае требуется внести изменения в код обработки, отвечающий за генерацию новых элементов в справочнике штрихкодов. Проанализируем пример кода, который позволяет автоматически подставлять коэффициент упаковки при создании записи:
НовыйЭлемент = Справочники.ШтрихкодыУпаковокТоваров.СоздатьЭлемент();
НовыйЭлемент.ТипУпаковки = Перечисления.ТипыУпаковок.МаркированныйТовар;
НовыйЭлемент.ТипШтрихкода = Перечисления.ТипыШтрихкодов.GS1_DataMatrix;
НовыйЭлемент.ЗначениеШтрихкода = ДанныеШК.КодМаркировки;
НовыйЭлемент.ХешСуммаЗначенияШтрихкода = ДанныеШК.ХешСуммаКодаМаркировки;
// Устанавливаем количество исходя из настроек номенклатуры
НовыйЭлемент.Количество = ДанныеШК.Номенклатура.ЕдиницаДляОтчетов.Коэффициент;
НовыйЭлемент.Упаковка = ДанныеШК.Номенклатура.ЕдиницаДляОтчетов;
НовыйЭлемент.Записать();
В данном примере мы используем реквизит ЕдиницаДляОтчетов или КоэффициентЕдиницыДляОтчетов, чтобы система сразу знала, что за одной маркой закреплено, например, 30 литров. Это позволяет избежать «дробления» упаковок при сканировании.
Иногда учет удобнее вести в декалитрах (дал), так как это традиционная единица для ЕГАИС. Выясним, как это влияет на логику маркировки. Если базовая единица — дал, то кега 30 литров будет равна 3 единицам в системе. Чтобы в печатных формах (например, ТОРГ-12) для клиента отображались корректные данные, выполним настройку:
Кег.Таким образом, в базе учет будет вестись в литрах/декалитрах, а в документах для контрагента — в понятных единицах (штуках/кегах), при этом сканер будет корректно сопоставлять марку с объемом.
Рассмотрим еще несколько важных нюансов, которые помогут избежать ошибок в учете:
Уточнять количество при сканировании. Это даст пользователю возможность вручную подтвердить объем при первом считывании неизвестной системе марки.Подводя итог, можно сказать, что основная «извращенная» логика учета кег заключается в тройном сопоставлении: Единица ЕГАИС (дал) — Базовая единица 1С (литр) — Код маркировки (кега). Только четкая настройка коэффициентов в справочнике Штрихкоды упаковок позволяет этим трем сущностям работать синхронно.