Как включить печать QR-кода в счете на оплату для юридических лиц в 1С:Бухгалтерия 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

В типовых решениях «1С:Бухгалтерия предприятия 3.0» печать QR-кода в счете на оплату жестко ограничена разработчиками: код выводится только в том случае, если покупателем выступает физическое лицо или индивидуальный предприниматель. Однако в современной бизнес-практике всё чаще возникают ситуации, когда юридические лица просят выводить QR-код для ускорения оплаты через бизнес-карты или мобильные приложения банков. В этой статье мы подробно разберем, как обойти стандартное ограничение системы, внести изменения в программный код через расширение и какие риски при этом следует учитывать.

Почему 1С блокирует QR-код для юридических лиц?

Прежде чем переходить к технической части, проанализируем причину такого поведения системы. Основная причина кроется в соблюдении ГОСТ Р 56042-2014. Этот стандарт ориентирован на платежи физических лиц. Кроме того, существует серьезный риск нарушения 54-ФЗ (закона о применении ККТ). Если сотрудник компании-покупателя оплатит счет через личное мобильное приложение, банк распознает это как платеж от физического лица, что обязывает продавца пробить кассовый чек. Чтобы минимизировать подобные ошибки, фирма «1С» программно отключает вывод QR-кода, если в реквизите ЮридическоеФизическоеЛицо контрагента указано значение ЮридическоеЛицо.

Анализ механизмов печати QR-кода в конфигурации

Рассмотрим, где именно в коде происходит проверка типа контрагента. Основная логика управления вариантами печати сосредоточена в процедурах, отвечающих за формирование структуры печатной формы. Нам необходимо обратить внимание на следующие объекты:

  1. Общий модуль ПечатьТорговыхДокументов — здесь находится функция ПечатьСчетаНаОплату, которая управляет процессом сборки данных для табличного документа.
  2. Документ СчетНаОплатуПокупателю — в его формах (например, ФормаРеквизитыПечатиQRКод) реализована логика выбора варианта печати.
  3. Общий модуль ФормированиеПечатныхФорм — в нем формируются СведенияОПоставщике, необходимые для генерации штрихкода.

Реализация решения через расширение конфигурации

Разберем самый корректный способ внесения изменений — использование расширения. Это позволит нам не снимать основную конфигурацию с поддержки. Мы воспользуемся механизмом &ИзменениеИКонтроль, чтобы точечно поправить логику, не заменяя весь метод целиком. Рассмотрим пошагово, какие участки кода требуют модификации.

Шаг 1. Изменение логики выбора варианта печати

В первую очередь нам нужно заставить систему предлагать вариант «Печатать» даже для юридических лиц. Для этого проанализируем процедуру ЗаполнитьСписокВыбораВариантовПечатиQR. Нам нужно разрешить добавление значения Печатать в список выбора, невзирая на тип контрагента.

Посмотрим на пример реализации в модуле формы документа СчетНаОплатуПокупателю:


&НаСервере
&ИзменениеИКонтроль("ЗаполнитьСписокВыбораВариантовПечатиQR")
Процедура Расш1_ЗаполнитьСписокВыбораВариантовПечатиQR(СписокВыбора)
    // Удаляем стандартную логику проверки контрагента
    // Код внутри процедуры должен принудительно добавлять варианты печати
    СписокВыбора.Очистить();
    СписокВыбора.Добавить(Перечисления.ВариантПечатиQRКода.Печатать, "Печатать");
    СписокВыбора.Добавить(Перечисления.ВариантПечатиQRКода.НеПечатать, "Не печатать");
КонецПроцедуры

Шаг 2. Корректировка формирования печатной формы

Далее перейдем к общему модулю ПечатьТорговыхДокументов. Здесь в функции ПечатьСчетаНаОплату система выполняет проверку реквизитов перед выводом области QR-кода. Нам необходимо найти фрагмент кода, где вызывается процедура ЗаполнитьВариантПечатиQRКода.

Выясним причину, почему простая замена в этой процедуре может не сработать. Система часто сбрасывает значение ВариантПечатиQRКода обратно в НеПечатать, если видит тип «Юридическое лицо» в данных плательщика. Проанализируем ситуацию и внесем правки:


&НаСервере
&ИзменениеИКонтроль("ПечатьСчетаНаОплату")
Функция Расш1_ПечатьСчетаНаОплату(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
    // Внутри цикла перебора объектов ищем место определения QR-кода
    // Находим условие проверки типа лица и модифицируем его
    #Вставка
    Если РеквизитыКонтрагента.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо Тогда
        // Разрешаем печать для юрлиц
        Объект.ВариантПечатиQRКода = Перечисления.ВариантПечатиQRКода.Печатать;
    КонецЕсли;
    #КонецВставки
КонецФункции

Шаг 3. Обеспечение корректности данных в QR-коде

Важно помнить, что QR-код не просто картинка, а структурированная строка. Если мы принудительно включаем печать для юрлиц, мы должны убедиться, что функция СведенияОПоставщике собирает все необходимые данные. Проанализируем модуль ФормированиеПечатныхФорм. Убедитесь, что в структуру данных попадают:

Если эти реквизиты не заполнены в карточке организации, QR-код не будет сформирован, даже если программная проверка на тип лица пройдена. Проверьте настройки учетной политики и банковские счета организации.

Различие стандартов: ГОСТ против СБП

Рассмотрим подробнее, какой именно код мы выводим. Если мы просто правим типовую печать, мы получаем статичный QR по ГОСТ. Он удобен для ручного сканирования. Однако, если ваша цель — предоставить клиентам-юрлицам возможность совершать мгновенные B2B-платежи, стоит рассмотреть интеграцию с Системой быстрых платежей (СБП).

В новых версиях 1С поддержка СБП для бизнеса реализована штатно. В этом случае QR-код динамический, он содержит информацию о конкретной транзакции и позволяет банку плательщика сразу идентифицировать платеж как B2B. Это более современный и безопасный путь, который не требует глубокой модификации кода, а настраивается через подключение кассового оборудования или платежных сервисов в администрировании.

Юридические и налоговые рекомендации

Внедряя данное решение, мы должны предупредить пользователей о возможных последствиях. Поскольку QR-код провоцирует оплату через мобильные приложения, возрастает риск получения средств от физических лиц. Рекомендуем добавить в печатную форму счета (в область под QR-кодом) следующий текст:

«Внимание! Оплата по данному QR-коду допускается только с использованием бизнес-карт или расчетных счетов организаций. При оплате личными средствами физических лиц необходимо уведомление бухгалтерии для оформления кассового чека.»

Это поможет обезопасить компанию от штрафов за неприменение ККТ, которые могут составлять до 100% от суммы платежа.

Итоги доработки

Мы рассмотрели процесс включения QR-кода для юридических лиц в 1С:Бухгалтерия 3.0. Подведем итоги наших действий:

  1. Мы выяснили, что ограничение является искусственным и заложено в логику общих модулей.
  2. Мы применили механизм расширений, что сохранило обновляемость конфигурации.
  3. Мы модифицировали процедуры в модуле ПечатьТорговыхДокументов и форме счета, используя аннотацию &ИзменениеИКонтроль.
  4. Мы проанализировали необходимость заполнения банковских реквизитов для корректной генерации кода.

Используя данный подход, вы сможете удовлетворить запросы клиентов на современный способ оплаты, сохранив при этом контроль над стабильностью системы.

← На главную