При работе в 1С:Комплексная автоматизация 2.4 (КА 2.4) или 1С:ERP часто возникает задача по присвоению продукции уникальных штрихкодов. Стандартный механизм генерации штрихкодов формата EAN-13 по умолчанию предлагает использовать префикс «20». Однако на практике крупные покупатели или торговые сети могут требовать использования специфических префиксов, например, «2833». В этой статье мы подробно разберем, как устроена система штрихкодирования в 1С, почему стандартные настройки могут быть заблокированы и какими способами можно реализовать генерацию кодов по шаблону заказчика.
Прежде чем переходить к настройкам, давайте проанализируем структуру штрихкода EAN-13, которую использует система. Согласно международным стандартам, для внутреннего использования предприятиями зарезервирован диапазон префиксов от 200 до 299. Именно поэтому 1С жестко ограничивает выбор первой цифры (обычно это «2»).
Стандартный внутренний штрихкод в 1С состоит из следующих частей:
Если заказчик просит префикс «2833», мы сталкиваемся с тем, что стандартный генератор может не поддерживать такую длину префикса в интерфейсе. Рассмотрим шаги по решению этой задачи.
Для начала проверим штатные возможности программы. Перейдем в раздел НСИ и администрирование, далее выберем пункт Номенклатура и развернем группу Настройки создания. Здесь нас интересует гиперссылка Настройка префиксов внутренних штрихкодов.
Проанализируем ситуацию, когда поле редактирования префикса оказывается неактивным («серым»). Это может происходить по нескольким причинам:
Если нам необходимо изменить префикс, а поле заблокировано, мы можем воспользоваться механизмом Функции для технического специалиста (ранее «Все функции»). Нам нужно найти константу ПрефиксВнутреннегоШтрихкодаШтучногоТовара и попробовать изменить ее значение там напрямую. Однако стоит помнить, что это изменит логику генерации для всей новой номенклатуры.
Выясним, как формируется третья и четвертая цифры штрихкода. Часто 1С собирает код следующим образом: «2» (префикс штучного товара) + «ХХ» (префикс базы) + порядковый номер. Если нам нужно, чтобы код начинался на «283», мы можем попробовать установить Префикс информационной базы равным «83».
Для этого выполним следующие действия:
Важно: этот метод имеет серьезный побочный эффект. Данный префикс будет подставляться во все номера документов (счета, накладные, заказы), что может быть недопустимо по правилам внутреннего документооборота.
Если стандартные средства не позволяют задать сложный префикс (например, 4 знака «2833»), самым правильным и безопасным решением будет использование внешней обработки. Штрихкод в 1С — это не просто реквизит карточки, а запись в регистре сведений ШтрихкодыНоменклатуры.
Разберем логику работы такой обработки. Мы можем создать цикл по справочнику Номенклатура и для каждой позиции формировать строку нужного формата. Рассмотрим пример кода для формирования штрихкода:
// Пример формирования штрихкода с префиксом 2833
Префикс = "2833";
ПорядковыйНомер = "00000001"; // Здесь должна быть логика получения следующего свободного номера
ТелоШтрихкода = Префикс + ПорядковыйНомер;
// Рассчитываем контрольную сумму EAN-13
Четные = 0;
Нечетные = 0;
Для Поз = 1 По 12 Цикл
Цифра = Число(Сред(ТелоШтрихкода, Поз, 1));
Если Поз % 2 = 0 Тогда
Четные = Четные + Цифра;
Иначе
Нечетные = Нечетные + Цифра;
КонецЕсли;
КонецЦикла;
Сумма = Нечетные + Четные * 3;
КонтрольныйРазряд = (10 - (Сумма % 10)) % 10;
ИтоговыйШтрихкод = ТелоШтрихкода + Строка(КонтрольныйРазряд);
После формирования строки необходимо создать запись в регистре. Проанализируем структуру регистра ШтрихкодыНоменклатуры. Он содержит измерения Штрихкод, Номенклатура, Характеристика и Упаковка. Записав туда данные напрямую, мы обойдем любые ограничения интерфейса, и система будет успешно находить товар при сканировании.
Рассмотрим еще один «хитрый» способ, который не требует программирования. В 1С:КА предусмотрены механизмы для работы с весовым товаром, где штрихкод несет в себе не только код товара, но и его вес. В настройках РМК и оборудования можно задать Шаблоны штрихкодов.
В шаблоне можно жестко прописать префикс любой длины. Даже если ваш товар не является весовым, вы можете настроить систему так, чтобы она воспринимала коды определенного формата как штучные, используя логику весовых префиксов (PLU). Это позволит задать маску типа 2833{КодТовара:8}{КонтрольноеЧисло}.
Подводя итог, выделим наиболее эффективный алгоритм действий для настройки префикса «2833»:
ШтрихкодыНоменклатуры.Посмотрим на пример того, как можно подменить алгоритм через расширение. Нам нужно найти в модуле менеджера регистра сведений ШтрихкодыНоменклатуры (или в соответствующем общем модуле, в зависимости от версии КА) метод СформироватьШтрихкодEAN13 и дополнить его своей логикой.
Использование собственных префиксов — это рабочая задача, которая требует понимания того, что штрихкод в 1С — это всего лишь строковое представление в базе данных. Система не накладывает жестких ограничений на содержимое этой строки, если вы записываете ее в регистр программно, соблюдая лишь общую длину в 13 символов для формата EAN-13.