Документы и Печать · 11 мин
Как появляется QR-код в 1С
Как формируется QR-код в 1С: типовые механизмы, печать на документах, работа с чеками, программная генерация через компоненту, типичные ошибки и проверка результата.
QR-код в 1С не возникает «сам по себе» — это всегда результат работы конкретного механизма: типовой функции конфигурации, внешней компоненты генерации штрихкодов или программно созданной картинки, которую разработчик помещает в макет печатной формы. Понимание того, какой именно механизм задействован в вашей базе, определяет, где искать проблему, если код не печатается, и как добавить код туда, где его пока нет.
Чаще всего QR-коды в 1С встречаются в трёх сценариях: на платёжных документах для оплаты через банковское приложение, на кассовых чеках и товарных ярлыках при работе с маркировкой «Честный ЗНАК», а также в произвольных печатных формах, куда код добавили разработчики. Во всех случаях логика одинакова: сначала формируется строка данных, затем она кодируется в графическое изображение, и это изображение выводится в макет.
Ниже разобраны источники QR-кода в типовых конфигурациях, способы вывести его на печать, программная генерация через компоненту 1С и типичные ошибки, из-за которых код не появляется или не сканируется.
Откуда берётся QR-код: три источника
Первый источник — типовая функциональность конфигурации. В «1С:Бухгалтерии» QR-код для оплаты выводится на счетах и актах, если заполнены банковские реквизиты организации и включён соответствующий макет. В «1С:Рознице» и «Управлении торговлей» QR-коды маркировки формируются автоматически при работе с системой «Честный ЗНАК» и печатаются на ценниках, этикетках и в чеках.
Второй источник — внешняя компонента генерации штрихкодов. В типовых решениях используется компонента из состава Библиотеки подключаемого оборудования (БПО). Она устанавливается на рабочее место пользователя или на сервер и по переданной строке возвращает готовую картинку. Если компонента не установлена, код либо не печатается вообще, либо вместо него выводится текстовая заглушка.
Третий источник — программная генерация в собственных доработках. Разработчик формирует строку (например, ссылку на оплату или идентификатор документа), получает изображение через компоненту или внешний сервис и помещает его в область макета типа «Картинка». Такой способ даёт полный контроль над содержимым и размещением кода.
QR-код на платёжных документах
В «1С:Бухгалтерии» и ряде других конфигураций предусмотрен вывод QR-кода для оплаты по реквизитам — по стандарту, который используют банковские приложения. Код содержит наименование получателя, ИНН, расчётный счёт, БИК, назначение платежа и сумму. Покупатель сканирует его камерой телефона, и приложение банка подставляет реквизиты в платёжку.
Чтобы код появился на печатной форме счёта, проверьте три условия. Во-первых, в карточке организации должны быть полностью заполнены банковские реквизиты: расчётный счёт, банк, БИК, корреспондентский счёт. Во-вторых, в макете печатной формы должна присутствовать область с QR-кодом — в типовых конфигурациях она есть, но в старых самописных макетах может отсутствовать. В-третьих, сумма документа должна быть больше нуля, иначе формировать платёжный код бессмысленно, и типовой алгоритм его не выводит.
Как проверить печать платёжного QR-кода
Заполнены счёт, банк, БИК, ИНН
Пустое поле счёта или банка — код не сформируется
QR-код виден и сканируется банковским приложением
Пустая рамка или текст вместо картинки
Приложение банка подставляет получателя и сумму
Код читается как произвольный текст или не читается
QR-коды маркировки и чеков
При работе с маркированными товарами QR-код (точнее, код DataMatrix для большинства товарных групп и QR для отдельных категорий) формируется на основании данных, полученных из системы «Честный ЗНАК». Код содержит GTIN, серийный номер и криптографический хвост. 1С хранит эти коды в базе и выводит их на этикетки через механизмы печати, а также передаёт в фискальный регистратор для печати на чеке.
Здесь важно понимать разделение ответственности: 1С не «придумывает» код маркировки, а лишь хранит и отображает тот, что эмитирован оператором маркировки. Если на этикетке печатается нечитаемый код, причина обычно не в 1С, а в качестве печати принтера этикеток, неверно выбранном шаблоне этикетки или в том, что в базе лежит повреждённая строка кода (например, обрезанная при обмене).
Для чеков на ККТ код печатает сам фискальный регистратор по переданным из 1С данным. Если на чеке маркировка отсутствует или не читается, проверяйте прошивку ККТ, настройки драйвера и то, что код передаётся в тегах фискального документа в полном виде.
Программная генерация QR-кода в макете
Если типового механизма нет, QR-код добавляют доработкой. Общая схема выглядит так: в модуле формирования печатной формы собирается строка данных, вызывается функция генерации изображения через компоненту, полученная картинка помещается в область макета, у которой тип параметра или рисунка позволяет выводить изображение.
Упрощённый пример логики на встроенном языке: сначала подключается компонента, затем формируется картинка и вставляется в табличный документ.
Компонента = ПолучитьКомпонентуГенерацииШтрихкода();
Если Компонента <> Неопределено Тогда
ДанныеQR = СформироватьСтрокуДанных(Документ);
КартинкаQR = Компонента.СформироватьQRКод(ДанныеQR, 25, 1);
Рисунок = ОбластьМакета.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = Новый Картинка(КартинкаQR);
КонецЕсли;Обратите внимание на три параметра, которые передаются в компоненту: сама строка, ширина картинки в пикселях и уровень коррекции ошибок. Слишком маленькая ширина даёт размытый код, который не читается на лазерном принтере; слишком большая раздувает макет. Уровень коррекции определяет, сколько повреждений картинки выдержит код при сканировании.
- 1Определите, какая строка должна кодироваться: ссылка, реквизиты, идентификатор документа
- 2Проверьте, что компонента генерации штрихкодов установлена и подключается без ошибки
- 3Добавьте в макет область или рисунок для вывода картинки
- 4В модуле печати сформируйте изображение и присвойте его рисунку
- 5Распечатайте тестовый документ и отсканируйте код реальным устройством
- 6Проверьте формирование на сервере, если печать выполняется в фоновом задании
Типичные ошибки и их причины
Самая частая жалоба — «QR-код не печатается». Причины почти всегда одни и те же: не установлена компонента на том компьютере, где формируется печать; печать выполняется на сервере, а компонента стоит только у пользователя; в макете область под картинку есть, но код в модуле её не заполняет из-за неподходящего условия (например, пустой банковский счёт).
Вторая группа проблем — код печатается, но не сканируется. Здесь виноваты слишком мелкий размер изображения, низкое качество печати, обрезка кода границами области макета или неверное содержимое строки (например, лишние пробелы и переносы). Проверяйте содержимое: отсканируйте код обычным телефоном — он покажет строку, и вы сразу увидите, что в неё попало.
Ограничения и альтернативы
Компонентный способ требует установки компоненты на каждое рабочее место или на сервер, что в распределённых инфраструктурах бывает неудобно. Альтернатива — генерация картинки внешним сервисом или веб-сервисом внутри контура компании: 1С отправляет строку по HTTP и получает готовый PNG. Минус подхода — зависимость от доступности сервиса и необходимость контролировать, что в строку не попадают конфиденциальные данные, если сервис внешний.
Ещё одна альтернатива — формирование QR-кода средствами самой платформы там, где это поддерживается, либо хранение заранее сгенерированных картинок в базе (подходит, когда набор кодов фиксирован, например коды маркировки). Учитывайте также, что толщина и контрастность печати зависят от принтера: на термопринтерах этикеток требования к размеру и полям кода выше, чем на офисных лазерных устройствах.
Способы получения QR-кода
Подходит для платёжных кодов и маркировки; ограничение — работает только в предусмотренных сценариях и макетах
Гибкий вариант для доработок; требует установки компоненты на каждом узле, где формируется печать
Не требует установки компонент; зависит от доступности сервиса и не подходит для конфиденциальных строк без защищённого контура
Надёжно для фиксированного набора кодов; не подходит для динамических данных вроде суммы счёта
FAQ
Почему QR-код виден на экране, но не выводится на печать?
Чаще всего область с картинкой не помещается в печатную страницу или макет выводит её с нулевой высотой. Проверьте размеры области в макете, масштаб печати и то, что рисунок реально заполнен картинкой, а не пустой рамкой. Также убедитесь, что принтер не обрезает поля — код не должен попадать в непечатаемую зону.
Можно ли вывести QR-код без установки дополнительных компонент?
Да, если использовать внешний или внутренний веб-сервис генерации: 1С передаёт строку по HTTP-запросу и вставляет полученный PNG в макет. Либо заранее сгенерировать картинки сторонним инструментом и хранить их в базе — но это работает только для неизменного набора кодов.
QR-код сканируется, но показывает не те данные. Что проверить?
Отсканируйте код телефоном и посмотрите фактическую строку. Обычно в ней обнаруживаются лишние пробелы, переносы строк, служебные символы или данные не того документа — значит, ошибка в алгоритме формирования строки, а не в картинке. Исправлять нужно источник данных, а не изображение.
Почему после обновления конфигурации QR-код перестал печататься?
При обновлении могли измениться типовые макеты и модули печати, а ваши доработки остались в старом расширении или были перезаписаны. Сравните текущий макет с тем, что был до обновления, и проверьте, что код формирования картинки по-прежнему вызывается и компонента на месте.
Какого размера делать QR-код на печатной форме?
Практический минимум — около 2–3 см по стороне на обычной офисной печати, с белым полем (тихой зоной) вокруг кода. Точный размер подбирается опытным путём: распечатайте вариант и проверьте сканирование с типичного расстояния. Для термопринтеров этикеток требования к размеру и контрасту выше.
Опасно ли размещать QR-код со ссылкой на оплату в счёте?
Сам код безопасен, если в строке нет лишних данных: только реквизиты получателя, сумма и назначение. Не включайте в кодируемую строку персональные данные сверх необходимого и внутренние идентификаторы, которые не должны быть публичными. Перед запуском проверьте содержимое кода сканером.
Что важно запомнить
QR-код в 1С — это всегда строка данных, преобразованная в картинку: типовым механизмом, компонентой генерации штрихкодов или внешним сервисом. Если код не печатается, проверяйте установку компоненты на нужном узле, заполненность исходных данных и область макета. Если не сканируется — размер картинки, качество печати и содержимое строки. Тестировать результат нужно только на реальной распечатке.