При работе с номенклатурой в конфигурации 1С:Бухгалтерия предприятия 3.0 (БП 3.0) пользователи часто сталкиваются с тем, что в карточке товара, в разделе «Штрихкоды», отсутствует привычная по торговым решениям (УТ, Розница) кнопка «Создать штрихкод». В этой статье мы разберем, почему так происходит, как работает стандартный механизм и какими способами можно добавить функционал автоматической генерации внутренних кодов.
Для начала проанализируем текущую ситуацию. В 1С:Бухгалтерии штрихкоды хранятся в регистре сведений ШтрихкодыНоменклатуры (или Штрихкоды в зависимости от релиза). Однако разработчики фирмы «1С» позиционируют данную конфигурацию прежде всего как инструмент регламентированного учета. Предполагается, что штрихкоды либо уже есть на товаре (от производителя), либо приходят из торговых систем (например, «Управление торговлей») при обмене данными.
Если мы откроем карточку номенклатуры и перейдем в список штрихкодов, то увидим возможность только ручного ввода. Это удобно, если у вас пара десятков товаров, но совершенно неприемлемо при больших объемах или необходимости маркировки продукции внутренними кодами предприятия.
Прежде чем приступать к написанию кода или поиску расширения, выясним, какой формат кода нам нужен. Наиболее распространенным является EAN-13. Для внутреннего использования (локальные коды организации, которые не будут считываться в сторонних магазинах) зарезервирован диапазон префиксов 200–299.
Рассмотрим структуру кода EAN-13:
Важный момент: Если просто вписать 13 произвольных цифр, сканер, скорее всего, не сможет корректно считать код, так как контрольное число не совпадет с расчетным.
Самый современный и безопасный метод — это использование расширений (.cfe). Разберем по шагам, как это работает:
ШтрихкодыНоменклатуры.Преимущество этого метода в том, что при обновлении 1С ваши доработки не затрутся, и вам не придется вручную объединять код модулей.
Если вы решили реализовать функционал самостоятельно, нам потребуется написать алгоритм вычисления контрольного числа. Рассмотрим пример функции на языке 1С, которая рассчитывает 13-й символ для кода EAN-13. Проанализируем логику вычислений:
Функция СформироватьКонтрольныйСимволEAN13(ШтрихкодБезКонтрольного) Экспорт
Четные = 0;
Нечетные = 0;
Для Индекс = 1 По 12 Цикл
Цифра = Число(Сред(ШтрихкодБезКонтрольного, Индекс, 1));
Если Индекс % 2 = 0 Тогда
Четные = Четные + Цифра;
Иначе
Нечетные = Нечетные + Цифра;
КонецЕсли;
КонецЦикла;
Всего = Четные * 3 + Нечетные;
КонтрольноеЧисло = (10 - (Всего % 10)) % 10;
Возврат Строка(КонтрольноеЧисло);
КонецФункции
Разберем подробнее этот алгоритм: мы суммируем цифры на четных и нечетных позициях, умножаем сумму четных на 3, складываем результаты и находим остаток от деления на 10. Полученное значение вычитаем из 10 — это и есть наш контрольный разряд.
Часто возникает ситуация, когда в базе уже есть тысячи позиций без штрихкодов. В этом случае кнопка в каждой карточке не спасет. Нам поможет внешняя обработка. Рассмотрим шаги ее работы:
Номенклатура и выберем только те позиции, у которых в регистре ШтрихкодыНоменклатуры нет записей.Пример кода для создания записи в регистре:
НоваяЗапись = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
НоваяЗапись.Номенклатура = ВыбранныйТовар;
НоваяЗапись.Штрихкод = СформированныйКод;
НоваяЗапись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
НоваяЗапись.Записать();
Мало просто сгенерировать цифры в базе, их нужно превратить в этикетки. В БП 3.0 есть типовая обработка «Печать этикеток и ценников». Рассмотрим нюансы ее использования:
Если после генерации кодов в печатной форме вместо полосок штрихкода вы видите пустые места или странные символы, убедитесь, что в системе установлен компонент 1CBarCode. Хотя в последних версиях платформы 8.3 используется встроенная генерация изображений, для старых шаблонов или специфических принтеров этикеток этот компонент может быть критичен.
Стоит упомянуть альтернативный путь, который не требует программирования. Проанализируем возможности сервиса 1С:Бизнес-сеть. Если вы подключены к нему, 1С может автоматически сопоставить вашу номенклатуру с общероссийским каталогом. В этом случае штрихкоды производителей подтянутся в вашу базу автоматически. Это избавит вас от необходимости придумывать внутренние коды для товаров, которые уже имеют общепринятую маркировку.
Подводя итог, можно сказать, что отсутствие кнопки генерации штрихкода в 1С:Бухгалтерии — это не ошибка, а архитектурная особенность конфигурации. Для решения проблемы мы рекомендуем: