Документы и Печать · 9 мин
Как вставить QR-код в 1С: способы и пошаговая инструкция
Как вставить QR-код в печатную форму 1С: типовые средства БСП, макет табличного документа, внешние компоненты и сервисы. Пошаговая инструкция и ошибки.
QR-код в 1С чаще всего требуется для счетов на оплату с реквизитами по стандарту ГОСТ Р 56042-2014, для маркировки товаров, ссылок на электронные документы и идентификации печатных форм. В зависимости от конфигурации задача решается либо штатными средствами библиотеки стандартных подсистем (БСП), либо через макет табличного документа, либо с помощью внешних компонент и онлайн-генераторов. Ниже разобраны рабочие способы с конкретными действиями для типовых конфигураций и самописных решений.
Перед началом важно определить три вещи: какая у вас конфигурация (типовая на БСП или нет), где должен появиться код (печатная форма, этикетка, экранная форма) и что именно кодируется (платёжные реквизиты, ссылка, произвольный текст). От этого зависит выбор инструмента и объём доработок.
Определите, какой способ подходит вашей конфигурации
Большинство современных типовых решений — «Управление торговлей», «ERP», «Бухгалтерия предприятия», «Комплексная автоматизация» — построены на библиотеке стандартных подсистем. В них уже есть программный интерфейс для формирования QR-кодов, и доработка сводится к изменению макета печатной формы и нескольким строкам кода в модуле менеджера документа.
Если конфигурация старая (например, «Управление производственным предприятием 1.3») или самописная, штатного механизма может не быть. Тогда остаются варианты: подключить внешнюю компоненту генерации штрихкодов, получать картинку кода из внешнего сервиса по HTTP-запросу или формировать изображение вне 1С и подставлять его в макет.
Как выбрать действие
Способ 1. Штатная генерация через БСП в типовой конфигурации
В конфигурациях на БСП за создание двумерных кодов отвечает функциональность общего модуля «ГенерацияШтрихкода». Механизм возвращает картинку (двоичные данные) по переданной строке данных, типу кода и параметрам отображения. Для QR-кода указывается соответствующий тип штрихкода, уровень коррекции ошибок и размер.
Типовая последовательность доработки печатной формы выглядит так. Откройте конфигуратор, найдите макет нужной печатной формы (обычно в документе или в общих макетах, например «МакетСчетЗаказ»), добавьте в нужную область рисунок типа «Картинка» и задайте ему имя, например «QRКод». Затем в модуле менеджера документа, в процедуре формирования печатной формы, после вывода области присвойте этому рисунку сгенерированное изображение.
ПараметрыКода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
ПараметрыКода.Ширина = 300;
ПараметрыКода.Высота = 300;
ПараметрыКода.ТипКода = 16; // QR-код
ПараметрыКода.Штрихкод = СтрокаДляКодирования;
Результат = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыКода);
Если Результат.Картинка <> Неопределено Тогда
Рисунок = ОбластьМакета.Рисунки.QRКод;
Рисунок.Картинка = Результат.Картинка;
КонецЕсли;Обратите внимание: состав процедур и точные имена параметров могут отличаться между версиями БСП. Перед правкой откройте общий модуль в конфигураторе и посмотрите актуальный программный интерфейс в области «ПрограммныйИнтерфейс» — там же обычно есть комментарии с описанием параметров.
Формирование строки данных для платёжного QR-кода
Для счетов на оплату содержимое QR-кода должно соответствовать стандарту кодирования платёжных реквизитов (ГОСТ Р 56042-2014). Строка включает наименование получателя, его ИНН, расчётный счёт, БИК банка, корреспондентский счёт, сумму и назначение платежа — всё в строго заданном формате с разделителями «|».
В ряде типовых конфигураций механизм формирования платёжной строки уже встроен — например, в «Бухгалтерии предприятия» QR-код на счёте выводится штатно при включённой соответствующей настройке печатной формы. Проверьте настройки печати счёта: иногда достаточно отметить опцию вывода QR-кода, и никакой доработки не потребуется. Если опции нет, строку придётся собирать программно по шаблону стандарта.
Способ 2. Вставка готовой картинки в макет табличного документа
Если изображение QR-кода формируется вне 1С — дизайнером, сторонней программой маркировки или заранее для фиксированного набора значений — его можно вставить в макет без программной генерации. Откройте макет табличного документа в конфигураторе, выделите ячейку, через меню «Таблица — Рисунки — Вставить рисунок» добавьте объект и укажите картинку из файла или из общей картинки конфигурации.
Этот вариант подходит только для статичных кодов: один и тот же код на всех экземплярах печатной формы. Для персонализированных кодов (уникальные реквизиты счёта, номер документа) статичная картинка не подойдёт — потребуется программная подстановка, описанная выше.
Способ 3. Генерация через внешний сервис по HTTP
Когда БСП недоступна, а конфигурация имеет доступ в интернет, картинку QR-кода можно получить HTTP-запросом к публичному генератору: передаёте строку в параметрах запроса, получаете PNG и помещаете его в рисунок макета через объект «Картинка» из двоичных данных. Код несложный, но у подхода есть серьёзные ограничения.
Проверка результата и типичные ошибки
После внедрения обязательно проверьте печатную форму в трёх режимах: предпросмотр на экране, печать на реальном принтере и сохранение в PDF. QR-код должен оставаться чётким, без растяжения и обрезки — искажённые пропорции делают код нечитаемым для сканеров.
Как проверить результат
Телефон и сканер считывают код с первого раза
Код читается через раз или не читается вовсе
Данные полностью совпадают с реквизитами документа
Обрезанные поля, неверная сумма, кракозябры вместо кириллицы
Квадратный код, ровные края, достаточный размер (от ~2 см)
Растянутый, размытый или слишком мелкий код
Как сохранить доработку при обновлениях
Любые правки типового макета или модуля менеджера документа исчезнут при очередном обновлении конфигурации, если выполнены напрямую. Правильный путь — оформить изменение в расширении конфигурации: заимствуйте макет и процедуру печати, внесите изменения там. Конфигурация останется на поддержке, а обновления будут проходить без конфликтов.
Если изменений много (своя печатная форма целиком), рассмотрите механизм внешних печатных форм: подключаемая обработка регистрируется в справочнике дополнительных отчетов и обработок и подменяет типовую печать без изменения конфигурации вообще.
Что важно запомнить
В типовых конфигурациях на БСП QR-код генерируется штатным механизмом и вставляется в рисунок макета табличного документа; альтернативы — внешняя компонента или HTTP-генератор. Платёжные коды формируйте по стандарту, проверяйте сканирование на бумаге и в PDF, а доработки оформляйте через расширение, чтобы не потерять их при обновлении.
Частые вопросы
Можно ли вставить QR-код в 1С без программирования?
Да, если код статичный: вставьте готовую картинку в макет табличного документа через конфигуратор. Также в ряде типовых конфигураций вывод платёжного QR-кода на счёт включается обычной настройкой печатной формы. Для динамических кодов без кода на встроенном языке не обойтись.
Почему QR-код не сканируется с распечатки?
Чаще всего причины — слишком маленький размер, искажение пропорций рисунка в макете, бледная печать или низкий уровень коррекции ошибок. Увеличьте размер картинки, сохраните квадратные пропорции и проверьте качество печати принтера.
Как вывести QR-код на этикетку для маркировки?
Используйте макет этикетки в обработке печати этикеток и ценников, добавьте в шаблон поле штрихкода с типом QR. Для кодов маркировки «Честный знак» часто применяется DataMatrix, а не QR — уточните требования вашего товароучётного процесса.
Чем QR-код отличается от DataMatrix в 1С?
Это разные типы двумерных кодов. QR применяют для платежей и ссылок, DataMatrix — для обязательной маркировки товаров. В механизме генерации БСП тип кода задаётся параметром, поэтому важно указывать правильное значение под конкретную задачу.
Пропадёт ли QR-код после обновления конфигурации?
Если доработка сделана прямой правкой типового макета или модуля — да, при обновлении изменения затрутся. Оформляйте правки в расширении конфигурации или как внешнюю печатную форму, тогда обновления пройдут без потерь.