В современных складских процессах использование штрихкодирования является стандартом де-факто. Однако классические линейные штрихкоды (например, Code-128) постепенно уступают место более компактным и информативным QR-кодам. Рассмотрим задачу вывода QR-кода на печатную форму «Расходного ордера на товары» с целью последующего быстрого поиска этого документа в информационной базе 1С:Управление торговлей 11.4.
Многие разработчики задаются вопросом: стоит ли «изобретать велосипед» или в типовой конфигурации уже заложены необходимые механизмы? Проанализируем возможности системы и разберем пошагово процесс внедрения этого функционала.
В конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), к которым относится и УТ 11.4, основным инструментом для работы с графическими кодами является общий модуль ШтрихкодированиеПечатныхФорм. Проанализируем, почему стоит использовать именно его:
QR.Для генерации изображения кода нам потребуется вызвать метод получения картинки. Разберем пример кода, который можно интегрировать в модуль менеджера документа или обработку печати:
ПараметрыШтрихкода = ШтрихкодированиеПечатныхФорм.ПараметрыШтрихкода();
ПараметрыШтрихкода.ТипКода = 16; // Соответствует QR-коду
ПараметрыШтрихкода.Содержимое = Строка(СсылкаНаДокумент.УникальныйИдентификатор());
ПараметрыШтрихкода.Ширина = 100;
ПараметрыШтрихкода.Высота = 100;
РезультатШтрихкодирования = ШтрихкодированиеПечатныхФорм.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
Если РезультатШтрихкодирования.Результат Тогда
Рисунок = ОбластьМакета.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = РезультатШтрихкодирования.Картинка;
КонецЕсли;
Выясним, какие данные лучше всего поместить внутрь QR-кода для обеспечения надежного поиска. Рассмотрим три основных подхода:
1. Уникальный идентификатор (GUID). Это самый простой путь. Мы кодируем UUID ссылки документа. При сканировании система получает строку, которую легко преобразовать обратно в ссылку через метод Документы.РасходныйОрдерНаТовары.ПолучитьСсылку(Новый УникальныйИдентификатор(СчитаннаяСтрока)). Важный нюанс: если вы планируете использовать несколько типов документов, в коде нужно предусмотреть проверку принадлежности GUID конкретному метаданному.
2. Навигационная ссылка (e1cib). Рассмотрим более продвинутый вариант. В 1С существует понятие внутренней ссылки вида e1cib/data/Документ.РасходныйОрдерНаТовары?ref=.... Если закодировать именно её, то при использовании мобильного клиента или интеграции с внешними системами, 1С сможет открыть объект автоматически штатными средствами платформы.
3. Префиксы данных. Чтобы система могла отличить QR-код документа от QR-кода товара или маркировки «Честный Знак», профессионалы рекомендуют добавлять префикс. Например: DOC-RO-00001 или JSON-структуру: {"type":"doc","id":"..."}. Это позволит обработчику внешнего события мгновенно идентифицировать тип данных.
Проанализируем технические требования к печати. QR-код выгодно отличается от линейных кодов тем, что поддерживает уровни коррекции ошибок (Error Correction Level). В условиях склада бумажные носители часто мнутся или загрязняются. Мы рекомендуем устанавливать уровень коррекции Q (25%) или H (30%) в настройках компоненты 1С:Печать штрихкодов. Это увеличит плотность точек, но позволит считать код даже при частичном повреждении.
Также важно следить за пропорциями. При выводе в ТабличныйДокумент убедитесь, что свойство рисунка «Размер» установлено в значение «Пропорционально». Искажение геометрии квадрата (превращение его в прямоугольник) сделает чтение кода невозможным для большинства сканеров.
Теперь разберем, как заставить систему реагировать на сканирование. В УТ 11.4 работа с оборудованием реализована через подсистему «Библиотека подключаемого оборудования» (БПО). Основной точкой входа является процедура ВнешнееСобытие в форме журнала или списка документов.
Проанализируем алгоритм обработки считанных данных:
МенеджерОборудованияКлиент.GUID, выполняется поиск.Пример реализации поиска в обработке оповещения:
&НаКлиенте
Процедура ОбработатьШтрихкод(ДанныеШтрихкода)
// Пытаемся преобразовать строку в GUID
Попытка
Идентификатор = Новый УникальныйИдентификатор(ДанныеШтрихкода);
СсылкаНаДокумент = НайтиДокументПоИдентификаторуНаСервере(Идентификатор);
Если Не СсылкаНаДокумент.Пустая() Тогда
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДокумент);
ОткрытьФорму("Документ.РасходныйОрдерНаТовары.ФормаОбъекта", ПараметрыФормы);
Иначе
Сообщить("Документ не найден в базе данных.");
КонецЕсли;
Исключение
// Вероятно, это не наш QR-код или другой тип данных
Возврат;
КонецПопытки;
КонецПроцедуры
Подводя итог, выделим преимущества, которые мы получим при использовании QR вместо стандартного для 1С Code-128:
Таким образом, реализация поиска по QR-коду в 1С:УТ 11.4 — это эффективное решение, которое легко реализуется с помощью типового общего модуля ШтрихкодированиеПечатныхФорм и стандартных механизмов работы с уникальными идентификаторами объектов.