Разработка и Конфигурация · 11 мин
Как сформировать QR-код в 1С
Как сформировать QR-код в 1С: способы генерации — типовые механизмы, библиотека генерации, внешние компоненты и API. Примеры кода, ошибки и проверка результата.
QR-код в 1С чаще всего нужен для платёжных документов, чеков, накладных, маркировки и печатных форм с быстрым переходом на страницу оплаты или проверки. В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP) часть этих задач уже решена штатно, но для нестандартных сценариев код приходится формировать самостоятельно — через встроенные механизмы платформы, библиотеку стандартных подсистем или внешние сервисы.
Выбор способа зависит от трёх факторов: версии платформы и конфигурации, того, где должен появиться код (печатная форма, форма документа, картинка в базе), и допустимости обращения к интернету с сервера 1С. Ниже разобраны рабочие варианты с примерами кода, ограничениями и способами проверки результата.
Какие способы генерации QR-кода доступны в 1С
Универсального объекта «QR-код» в платформе 1С нет, поэтому применяют один из четырёх подходов. Первый — типовые механизмы конфигурации: в документах оплаты и поступления QR-код для оплаты по реквизитам часто формируется автоматически при печати. Второй — программная генерация через функции Библиотеки стандартных подсистем (БСП), если она встроена в конфигурацию. Третий — внешние компоненты и готовые обработки, которые рисуют код локально. Четвёртый — обращение к веб-сервису генерации по HTTP и вставка полученной картинки.
Каждый вариант имеет ограничения. Типовые механизмы работают только в предусмотренных документах. БСП генерирует штрихкоды, но в ряде редакций поддержка двумерных кодов зависит от установленной компоненты печати штрихкодов. Веб-сервисы требуют доступа в интернет с сервера и не подходят для конфиденциальных данных. Внешние компоненты нужно устанавливать на каждое рабочее место или сервер.
Сравнение вариантов
Подходит для платёжных QR в счетах на оплату. Ограничение: работает только там, где предусмотрен разработчиком.
Универсальный локальный способ без интернета. Ограничение: требуется БСП и установленная компонента.
Быстро внедрить, не нужны компоненты. Ограничение: нужен интернет, данные уходят на сторонний сервер.
Полный контроль над форматом. Ограничение: установка и сопровождение на каждом рабочем месте.
Проверка типовой возможности: QR-код в счёте на оплату
Прежде чем программировать, проверьте, не решена ли задача штатно. В конфигурациях «Бухгалтерия предприятия» и «Управление торговлей» актуальных редакций в документе «Счёт на оплату покупателю» есть настройка вывода QR-кода для оплаты через СБП или по реквизитам. Обычно она включается в настройках организации или в параметрах печатной формы.
Порядок проверки: откройте счёт на оплату, нажмите «Печать» и посмотрите состав доступных форм. Если в макете присутствует область с QR-кодом, но на печати он пустой — чаще всего не заполнены банковские реквизиты организации (счёт, БИК, ИНН получателя) или не включена соответствующая настройка. Заполните реквизиты и сформируйте печатную форму повторно.
- 1Откройте карточку организации и проверьте заполнение ИНН, расчётного счёта и банка
- 2Откройте счёт на оплату и убедитесь, что указаны сумма и назначение платежа
- 3Сформируйте печатную форму и проверьте наличие QR-кода
- 4Отсканируйте код камерой телефона и сверьте реквизиты платежа
Генерация QR-кода программно через БСП
Если конфигурация построена на Библиотеке стандартных подсистем, используйте механизм генерации штрихкодов. В типовых поставках применяется функция формирования изображения штрихкода с типом «QRCode», которая возвращает картинку в двоичных данных. Полученную картинку можно вывести в табличный документ (печатную форму) или на форму.
Типичный фрагмент кода выглядит так: формируются параметры штрихкода (тип — QR-код, строка данных, ширина, высота, уровень коррекции ошибок), затем вызывается функция генерации, результат помещается в область рисунка табличного документа. Если функция возвращает ошибку вида «компонента не установлена», нужно установить компоненту печати штрихкодов, поставляемую вместе с конфигурацией или дистрибутивом.
// Упрощённый пример вызова генерации QR-кода через БСП
ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
ПараметрыШтрихкода.ТипКода = ГенерацияШтрихкода.ТипКодаQR();
ПараметрыШтрихкода.Штрихкод = "ST00012|Name=ООО Ромашка|PersonalAcc=40702810000000000001|Sum=100000";
ПараметрыШтрихкода.Ширина = 200;
ПараметрыШтрихкода.Высота = 200;
Результат = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
Если Результат.Свойство("ДвоичныеДанные") Тогда
Картинка = Новый Картинка(Результат.ДвоичныеДанные);
КонецЕсли;
Точные имена функций и структура параметров зависят от версии БСП — сверяйтесь с кодом общего модуля генерации штрихкодов в вашей конфигурации. Не копируйте примеры из чужих версий без проверки: сигнатуры функций между редакциями отличаются.
Формирование строки данных для платёжного QR-кода
Для платёжных QR-кодов содержимое строки регламентировано стандартом (ГОСТ на двумерные символы штрихового кода для платежей физических лиц). Строка начинается с идентификатора формата и содержит поля, разделённые вертикальной чертой: наименование получателя, расчётный счёт, БИК, ИНН, сумму в копейках, назначение платежа и другие реквизиты.
Критичные моменты: сумма указывается в копейках без разделителя, поля разделяются символом «|», лишние пробелы и переносы строк недопустимы, кодировка должна поддерживать кириллицу. Ошибка в любом поле приведёт к тому, что банковское приложение либо не распознает код, либо подставит неверные реквизиты — а это уже риск отправки платежа не тому получателю.
Генерация через внешний сервис по HTTP
Когда БСП нет, а установка компонент невозможна, можно запросить картинку QR-кода у публичного веб-сервиса. Из 1С выполняется HTTP-запрос с закодированной строкой данных, в ответ приходит изображение, которое сохраняется в двоичные данные и вставляется в печатную форму.
У этого способа три существенных ограничения. Во-первых, сервер 1С должен иметь доступ в интернет, что не всегда разрешено политикой безопасности. Во-вторых, данные платежа передаются стороннему сервису — для платёжных реквизитов это нежелательно. В-третьих, при недоступности сервиса печать документов остановится. Поэтому веб-генерацию разумно применять только для некритичных данных (ссылки на сайт, каталог, анкету) и обязательно оборачивать вызов в обработку ошибок с запасным сценарием.
Вывод QR-кода в печатную форму и на форму документа
В табличном документе картинка QR-кода размещается в объекте «Рисунок». В макете создаётся область с рисунком, при формировании печатной формы рисунку присваивается сгенерированная картинка. Важно задать размер рисунка с запасом: практика показывает, что для надёжного считывания код на бумаге должен быть не меньше 2–3 см по стороне, с чистым полем вокруг без текста и линий.
На управляемой форме картинку выводят через реквизит типа «Строка» с адресом во временном хранилище: двоичные данные помещаются в хранилище, адрес присваивается реквизиту формы с видом «Поле картинки». При обычных формах используется элемент «Поле картинки» с прямым присвоением объекта «Картинка».
Как проверить результат
Камера телефона и сканер распознают код с первого раза
Код читается нестабильно или не читается вовсе
Распознанная строка совпадает с исходной посимвольно
Кириллица искажена, поля сдвинуты, лишние пробелы
Код контрастный, размер от 2 см, вокруг свободное поле
Код мелкий, размытый, вплотную к тексту или рамке
Типичные проблемы и их устранение
Самая частая жалоба — «QR-код не сканируется». Причины по убыванию частоты: слишком мелкий размер на печати, низкое качество печати (бледный тонер, струйный принтер с полосами), отсутствие свободного поля вокруг кода, избыточный объём данных в коде (чем длиннее строка, тем плотнее матрица и тем сложнее считывание). Решения: увеличить размер рисунка, сократить строку данных до необходимого минимума, повысить уровень коррекции ошибок, проверить печать на другом принтере.
Вторая группа проблем — ошибки генерации: «компонента не найдена», пустая картинка, исключение при вызове функции. Здесь проверяют: установлена ли компонента печати штрихкодов на том компьютере, где выполняется код (на сервере — при серверном вызове, на клиенте — при клиентском), корректен ли тип кода в параметрах, не пуста ли строка данных. Полезно временно вывести текст ошибки в сообщение, чтобы понять, на каком шаге происходит сбой.
Как выбрать действие
Частые вопросы
Можно ли сформировать QR-код в 1С без программирования?
Да, если задача покрывается типовым механизмом: например, QR-код для оплаты в счёте на оплату в актуальных редакциях типовых конфигураций. Для нестандартных сценариев без доработки не обойтись — потребуется либо готовая внешняя обработка, либо свой код.
Почему QR-код формируется, но телефон его не читает?
Чаще всего причина в размере и качестве: код меньше 2 см на бумаге, бледная печать, текст вплотную к коду. Реже — слишком длинная строка данных, из-за которой матрица становится чрезмерно плотной. Увеличьте размер рисунка и сократите данные.
Как закодировать русский текст в QR-коде?
Строка данных должна передаваться в кодировке, которую понимает генератор (обычно UTF-8). Если кириллица после сканирования превращается в нечитаемые символы — проблема в несовпадении кодировки на этапе генерации. Проверьте параметры компоненты или сервиса.
Безопасно ли использовать онлайн-генераторы QR-кодов из 1С?
Для платёжных реквизитов и персональных данных — нет: строка данных полностью передаётся стороннему серверу. Для публичных ссылок (сайт, каталог, анкета) — допустимо, но обязательно предусмотрите поведение при недоступности сервиса.
Что делать, если функция генерации возвращает ошибку «компонента не установлена»?
Установите компоненту печати штрихкодов на том узле, где выполняется код: при серверном вызове — на сервере 1С, при клиентском — на рабочем месте пользователя. Компонента обычно входит в поставку конфигурации или доступна в составе дистрибутива.
Можно ли сохранить QR-код как картинку в базе 1С?
Да. Полученные двоичные данные изображения сохраняются в реквизит типа «Хранилище значения» (например, в присоединённых файлах или справочнике картинок), а при необходимости извлекаются для вывода на форму или в печатную форму.
Что важно запомнить
Сначала проверьте штатные возможности конфигурации — платёжный QR часто уже встроен. Для своих сценариев используйте БСП с компонентой печати штрихкодов, а онлайн-генераторы оставьте для некритичных данных. Платёжный QR всегда проверяйте сканированием до отправки клиенту.