Почему зависает сеанс при печати счетов с QR-кодом в 1С на веб-сервере IIS?

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

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

Анализ причин возникновения зависаний

После обновления платформы до версий, использующих режим совместимости 8.3.21 и выше, изменился механизм работы с внешними компонентами. Теперь они загружаются в изолированном процессе addnhost32.exe для повышения безопасности. Однако при публикации базы на веб-сервере IIS, рабочий процесс w3wp.exe часто не имеет необходимых прав для запуска этого изолированного процесса, что и приводит к критическому зависанию всей печатной формы.

Способ 1: Установка официального патча (Рекомендуемый)

Фирма 1С оперативно отреагировала на массовость проблемы и выпустила специальные исправления — патчи. Установка патча является самым надежным и «чистым» способом решения, так как он корректирует работу встроенных процедур без необходимости изменения настроек безопасности сервера или вмешательства в код конфигурации.

  1. Откройте раздел «Администрирование» в вашей программе 1С.
  2. Перейдите в подраздел «Обслуживание» -> «Обновление программы» -> «Установленные исправления (патчи)».
  3. Проверьте наличие доступных исправлений. Вам необходим патч с идентификатором вида EF_00_00563978 (или аналогичный, выпущенный для вашего релиза БП 3.0).
  4. Установите патч и перезапустите сеансы пользователей. После этого проблема с зависанием при формировании QR-кода должна исчезнуть.

Способ 2: Отключение QR-кода через расширение (Временная мера)

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

В расширении мы будем использовать аннотацию &Вместо для переопределения стандартных функций. Рассмотрим пример реализации:


// Общий модуль ПечатьТорговыхДокументов
&Вместо("QRКодРеквизитыПлатежа")
Функция QRкод_QRКодРеквизитыПлатежа(ДанныеДокумента, ДанныеПечатиЗаголовокСчета, ДанныеПечатиИтоговНДС)
    Возврат Неопределено;
КонецФункции

// Общий модуль ГенерацияШтрихкодаСерверПовтИсп
&Вместо("ПодключитьКомпонентуГенерацииИзображенияШтрихкода")
Функция QRкод_ПодключитьКомпонентуГенерацииИзображенияШтрихкода(ТипПлатформыКомпоненты)
    Возврат Неопределено;
КонецФункции

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

Способ 3: Переопределение компоненты (Для опытных разработчиков)

Если проблема сохраняется из-за некорректной загрузки компоненты, можно попробовать переопределить логику подключения через ОбщийМодуль — ОбщегоНазначения. Этот метод требует осторожности, так как он влияет на работу всех внешних компонент в системе.


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

Важные рекомендации

По результатам анализа ситуации, мы настоятельно не рекомендуем изменять права пользователя, от имени которого запущен пул приложений IIS (например, назначать права локального администратора для w3wp.exe). Это создает серьезные уязвимости в безопасности вашего сервера. Также отметим, что обновление платформы до актуальных релизов часто содержит скрытые исправления, связанные с работой процесса addnhost32.exe, поэтому поддерживайте вашу инфраструктуру в актуальном состоянии.

Если после выполнения всех действий проблема остается, убедитесь, что вы очистили кэш 1С у пользователей и перезагрузили службы веб-сервера IIS.

← На главную