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

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

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

Суть проблемы:

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

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

Анализ причины возникновения ошибки

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

При изучении кода конфигурации, мы обнаружили, что формирование QR-кода осуществляется в функции QRКодСБП. Внутри этой функции происходит вызов методов общего модуля ИнтеграцияСПлатежнымиСистемами, в частности, ИнтеграцияСПлатежнымиСистемами.ИдентификаторОплаты:


Функция QRКодСБП(ДанныеДокумента) Экспорт
    
    РезультатОперации = ИнтеграцияСПлатежнымиСистемами.ИдентификаторОплаты(
        ДанныеДокумента.Документ,
        ДанныеДокумента.НастройкаИнтеграцииСБП);
    
    ДанныеQRКода = ИнтеграцияСПлатежнымиСистемами.СоздатьQRКодОплаты(
        ДанныеДокумента.НастройкаИнтеграцииСБП,
        РезультатОперации.QRКод,
        150,
        2);
    
    Возврат ДанныеQRКода;
    
КонецФункции

Из приведенного фрагмента кода становится очевидным, что критическую роль играет параметр ДанныеДокумента.НастройкаИнтеграцииСБП. Если настройки интеграции с СБП отсутствуют или некорректны, вызов метода ИнтеграцияСПлатежнымиСистемами.ИдентификаторОплаты завершается ошибкой. Именно это и приводит к появлению "простыни" на экране. На практике, когда СБП не настроена, этот параметр либо не заполнен, либо содержит невалидные данные, что и вызывает сбой.

Дополнительно мы обнаружили, что в общем модуле ИнтеграцияССБПБП (присутствующем, например, в конфигурации БП КОРП) существует функция НастройкаИнтеграцииСБП(Организация, БИКБанка) Экспорт. В некоторых случаях, когда такие функции дублируются или некорректно взаимодействуют, это также может усугублять проблему, приводя к неверному получению настроек СБП или даже к зацикливанию вызовов, что в конечном итоге приводит к ошибке или таймауту.

Решение проблемы: Временный обход с помощью расширения

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

Рассмотрим по шагам, как это сделать:

  1. Откройте конфигурацию в режиме "Конфигуратор".
  2. Создайте новое расширение конфигурации. Для этого перейдите в меню "Конфигурация" -> "Расширения конфигурации" -> "Добавить". Присвойте расширению любое осмысленное имя, например, "ИсправлениеПечатиСчетаФизЛиц".
  3. Добавьте общий модуль ИнтеграцияССБПБП в расширение.
    • В дереве конфигурации расширения найдите ветку "Общие" -> "Общие модули".
    • Нажмите правой кнопкой мыши на "Общие модули" и выберите "Добавить из конфигурации".
    • В открывшемся окне найдите и выберите общий модуль ИнтеграцияССБПБП.
    • При добавлении система предложит создать копию или добавить объект с заменой. Выберите "Добавить объект с заменой". Это позволит нам изменить поведение типовой функции.
  4. Измените функцию НастройкаИнтеграцииСБП в расширении.
    • Откройте модуль ИнтеграцияССБПБП, который теперь находится в вашем расширении.
    • Найдите функцию с сигнатурой Функция НастройкаИнтеграцииСБП(Организация, БИКБанка) Экспорт.
    • Внутри этой функции мы создадим "заглушку". Смысл заглушки состоит в том, чтобы функция всегда возвращала безопасное значение (например, Неопределено или пустую структуру), если интеграция СБП не настроена. Это предотвратит попытки основного кода использовать несуществующие настройки и вызывать ошибку.
    • Замените существующий код функции на следующий:
    • 
      // В расширении:
      // Общий модуль: ИнтеграцияССБПБП
      // Функция: НастройкаИнтеграцииСБП
      
      Функция НастройкаИнтеграцииСБП(Организация, БИКБанка) Экспорт
          // Если интеграция с СБП не настроена и не используется,
          // мы возвращаем Неопределено. Это предотвратит дальнейшие попытки
          // формирования QR-кода на основе некорректных или отсутствующих данных,
          // что было причиной ошибки.
          // Важно: если в будущем вы планируете использовать СБП,
          // эту заглушку потребуется удалить или модифицировать.
          Возврат Неопределено; 
      КонецФункции
      
    • Пояснение к коду: Возврат значения Неопределено из этой функции приведет к тому, что в вышеупомянутом коде ДанныеДокумента.НастройкаИнтеграцииСБП также будет иметь значение Неопределено. Метод ИнтеграцияСПлатежнымиСистемами.ИдентификаторОплаты, скорее всего, будет корректно обрабатывать это значение, либо пропуская формирование QR-кода, либо возвращая пустой результат без фатальной ошибки. В результате печатная форма счета будет сформирована, но без QR-кода для СБП.
  5. Сохраните изменения и перезапустите программу. После сохранения расширения и обновления конфигурации базы данных, перезапустите 1С:Предприятие.

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

Решение проблемы: Обновление конфигурации

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

  1. Проверьте текущую версию вашей конфигурации.
  2. Загрузите и установите обновление. Используйте стандартный механизм обновления конфигурации через "Конфигуратор" или сервис "1С:Обновление программ" (при наличии действующей подписки на ИТС).
  3. После обновления проверьте печать счетов. Обычно, после обновления, печатная форма счета для физических лиц снова начинает формироваться без ошибок. Возможно, в некоторых промежуточных релизах QR-код будет отсутствовать, но главное, что документ будет печататься.

Важно: Всегда делайте резервную копию информационной базы перед выполнением любых обновлений или внесением изменений в конфигурацию!

Дополнительные сведения и современные подходы к работе с QR-кодами в 1С:Бухгалтерии 3.0

Функционал QR-кодов в 1С:Бухгалтерии 3.0 постоянно развивается. Мы также хотим рассмотреть дополнительные аспекты и эволюцию этой возможности:

  1. История появления QR-кодов: Возможность печати счетов с QR-кодом для физических лиц и индивидуальных предпринимателей (ИП) была впервые добавлена начиная с релиза 3.0.80.36. Изначально QR-код предназначался для быстрой оплаты по реквизитам через мобильные банковские приложения.
  2. Связь с СБП: Начиная с версии 3.0.108, в программе появилась функция передачи QR-кода и ссылки для оплаты счета уже непосредственно через Систему быстрых платежей (СБП). Именно на этом этапе и возникали ошибки, подобные той, что мы обсуждаем, если интеграция с СБП не была настроена должным образом.
  3. Другие причины отсутствия или ошибок QR-кода: Помимо упомянутой проблемы с СБП, QR-код может не отображаться или вызывать ошибки по следующим причинам:
    • Неправильный вид контрагента: Убедитесь, что в карточке контрагента выбран "Физическое лицо" или "Индивидуальный предприниматель", а не "Юридическое лицо".
    • Измененный макет печатной формы: Если макет был изменен некорректно, можно использовать готовые внешние печатные формы для Бухгалтерии предприятия 3.0, чтобы вернуть нужный функционал.
    • Отключенная опция "Выводить QR-код": В настройках счета или программы может быть опция, управляющая выводом QR-кода. Убедитесь, что она включена.
    • Незаполненные или некорректно заполненные банковские реквизиты: Для корректного формирования QR-кода необходимы полные и правильные банковские реквизиты организации (БИК, номер счета и т.д.).
  4. Дополнительные реквизиты в QR-коде: Начиная с релиза 3.0.107, в QR-код для счетов физических лиц можно добавлять дополнительные реквизиты, такие как назначение платежа или номер заказа. Для этого требуется соответствующая настройка в карточке банковского счета организации, обычно в разделе "Дополнительные реквизиты QR-кода".
  5. Современные решения в более поздних релизах (3.0.164+): В актуальных версиях 1С:Бухгалтерии 3.0 (например, начиная с релиза 3.0.164) разработчики значительно улучшили и упростили управление QR-кодами. Теперь пользователи имеют возможность выбора способа печати QR-кода прямо в форме документа "Счет на оплату". Мы можем выбрать один из следующих вариантов:
    • "с QR-кодом для оплаты через СБП": Используется, если интеграция с СБП настроена и функционирует.
    • "с QR-кодом для оплаты по платежным реквизитам": Формирует QR-код на основе обычных банковских реквизитов, без привязки к СБП. Это отличный вариант, если СБП не используется.
    • "без QR-кода": Полностью отключает вывод QR-кода на печатной форме.
    Такой гибкий подход позволяет избежать ошибок, связанных с СБП, если она не настроена, или использовать QR-код в других сценариях оплаты.
  6. Общая настройка QR-кода: Существует также общая настройка для включения/выключения вывода QR-кода для физических лиц в документе "Счет покупателю". Ее можно найти по гиперссылке "Реквизиты печати, QR-код", где можно выбрать "Не печатать" или "Платежные реквизиты" (для QR-кода по обычным реквизитам).
  7. Настройка СБП: Для корректной работы с оплатой по QR-кодам через СБП необходимо выполнить соответствующие настройки в разделе "Администрирование" -> "Настройки программы" -> "Интернет поддержка и сервисы" -> "Система быстрых платежей". Убедитесь, что ваш банк поддерживает эту возможность, и все необходимые учетные данные введены правильно. Также важно, чтобы банковский счет организации имел все требуемые реквизиты для формирования QR-кода СБП.

Заключение

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

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

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

← На главную