В процессе работы с конфигурацией 1С:Управление нашей фирмой (УНФ) 3.0 пользователи часто сталкиваются с ситуацией, когда при печати ценников или этикеток вместо привычного штрихкода на форме появляется надпись «Invalid barcode» — для этой задачи есть внешняя обработка печати этикеток и штрихкодов для 1С:УНФ. Эта проблема может возникнуть внезапно, даже если вчера всё работало исправно. Ошибка свидетельствует о том, что компонента печати штрихкодов не может корректно интерпретировать данные, которые ей передаются.
В этой статье мы подробно разберем, почему возникает эта ошибка, и рассмотрим пошаговые инструкции по ее устранению, основываясь на практическом опыте решения подобных задач.
Проанализируем наиболее распространенную ситуацию, которая часто становится причиной «замыленного глаза» у пользователя. Если в вашей информационной базе ведется учет по характеристикам (цвета, размеры, материалы), то штрихкод в системе 1С чаще всего привязывается не просто к номенклатуре, а к конкретной комбинации Номенклатура + Характеристика. Для решения этой проблемы можно использовать альтернативный инструмент для печати этикеток и ценников с характеристиками.
Рассмотрим ситуацию: вы открываете обработку «Печать этикеток и ценников», выбираете товар, но забываете указать характеристику в табличной части подбора. В этом случае система не может найти штрихкод, жестко связанный с этой характеристикой, и передает в компоненту печати пустое значение или некорректную строку. Компонента, ожидая стандарт EAN-13, выдает ошибку «Invalid barcode».
Что нужно проверить:
Выясним еще одну неочевидную причину, связанную с данными в регистре сведений ШтрихкодыНоменклатуры. Иногда при переносе данных из других программ или при массовой загрузке из Excel в записи регистра ошибочно прописывается единица измерения, которая не совпадает с основной единицей хранения или не выбрана вовсе в самой обработке печати.
Разберем пример из практики: если в записи штрихкода указана единица измерения «Штука» (с определенным внутренним идентификатором), а в обработку печати попадает строка без указания единицы, механизм поиска штрихкода может не вернуть результат. Если же в регистре очистить поле ЕдиницаИзмерения, поиск становится более «гибким», и ошибка пропадает.
Рекомендуемые действия:
Если с данными в базе всё в порядке, нам следует обратить внимание на техническую составляющую. Проблема может крыться в самой библиотеке 1CBarCode.dll, которая отвечает за генерацию изображения штрихкода. Ошибка «Invalid barcode» часто возникает, если компонента не может «вписать» картинку в отведенную ей область макета.
Проанализируем влияние настроек операционной системы. В современных версиях Windows часто используется масштабирование экрана (например, 125% или 150% на 4K мониторах). 1С при формировании табличного документа рассчитывает параметр КоличествоМиллиметровВПикселе. При нестандартном DPI расчет может привести к тому, что область, выделенная под штрихкод в макете, становится на 1-2 пикселя меньше, чем требуется компоненте для отрисовки минимально допустимого кода EAN-13.
Как решить проблему с масштабированием:
Посмотрим на структуру самого штрихкода. Стандарт EAN-13 требует строго 13 цифр. Однако компонента 1С часто работает по следующему алгоритму: она принимает на вход 12 символов, а 13-й (контрольный разряд) вычисляет самостоятельно.
Если в вашу базу попал штрихкод, который содержит:
...то компонента выдаст ошибку валидации.
Выясним причину через небольшую проверку. Попробуйте вручную перепечатать штрихкод в карточке товара, удалив старый. Если после ручного ввода печать заработала — значит, в данных были скрытые символы. Чтобы быстро исправить некорректные данные в базе, можно использовать обработку для групповой установки штрихкодов в УНФ 3.0.
Разберем ситуацию с обновлением платформы 1С. Если вы перешли на 64-битный клиент 1С:Предприятие, вам необходимо убедиться, что установлена соответствующая 64-битная версия компоненты 1CBarCode. 32-битная библиотека просто не инициализируется в окружении 64-битного процесса, что может привести к ошибке вывода изображения.
Также полезно выполнить перерегистрацию библиотеки в системе. Для этого можно воспользоваться командной строкой от имени администратора:
regsvr32 "C:\PathToYourComponent\1CBarCode.dll"
Если вы не знаете, где находится файл, проще всего удалить компоненту через «Установку и удаление программ» Windows и при следующей попытке печати в 1С согласиться на предложение системы установить компоненту заново.
Если визуальный осмотр не помогает, мы можем прибегнуть к помощи отладчика. Нам нужно найти место, где формируется структура данных для передачи в БПО (Библиотеку подключаемого оборудования). Обычно это происходит в процедурах печати этикеток. Для этой задачи есть инструмент пошаговой отладки кода без конфигуратора.
Нас интересует момент, когда формируется значение для параметра Штрихкод. Мы можем вставить в код временную проверку, чтобы увидеть, что именно уходит на печать:
// Вставьте точку останова в общем модуле, отвечающем за формирование этикеток
Сообщить("Данные штрихкода: '" + СтрокаШтрихкода + "' Длина: " + СтрДлина(СтрокаШтрихкода));
Если при выводе сообщения вы увидите, что длина строки не равна 12 или 13, или внутри кавычек видны лишние отступы — причина найдена.
Подводя итог, если вы столкнулись с ошибкой «Invalid barcode» в 1С:УНФ 3.0, действуйте по следующему алгоритму:
Следование этим шагам в большинстве случаев позволяет восстановить печать без привлечения программистов и серьезных изменений в конфигурации.