Почему не печатается регламентированная отчетность в 1С:УПП 1.3 и как исправить ошибку получения информации об устройстве отображения?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При работе в конфигурации 1С:Управление производственным предприятием (УПП) редакции 1.3 пользователи часто сталкиваются с критической проблемой при попытке формирования или печати регламентированного отчета Бухгалтерская отчетность (с 2011 года). Ошибка проявляется либо в виде сообщения «ошибка получения информации об устройстве отображения», либо в виде полного зависания системы на этапе формирования определенных разделов, например, Отчета об изменениях капитала. Ситуация осложняется, если работа ведется в терминальном режиме (через RDP) с использованием проброшенных принтеров.

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

Выясним причину: почему возникают ошибки и зависания?

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

Разберем дополнительные факторы, которые могут провоцировать проблему:

  1. Механизм Easy Print в RDP-сессиях: Когда 1С пытается вывести печатную форму, она запрашивает параметры принтера (разрешение, границы печати). Если используется стандартный механизм Windows Easy Print, драйвер может вернуть некорректные данные, что вызывает зацикливание платформы при попытке рассчитать макет страницы.
  2. Внешняя компонента печати штрихкода: Регламентированная отчетность использует объект 1C:BarCode для формирования двумерного кода PDF417. В 64-битных версиях клиента 1С или при отсутствии необходимых библиотек Visual C++ Redistributable, эта компонента может работать некорректно, вызывая падение процесса.
  3. Специфика отчета об изменениях капитала: Этот раздел бухгалтерской отчетности традиционно содержит большой объем данных и сложную структуру таблиц. При его формировании нагрузка на графическую подсистему максимальна, что и становится «триггером» для проявления багов платформы.

Решение №1: Обновление платформы (основной метод)

Как показывает практика и подтверждают пользователи, самым эффективным способом решения проблемы является переход на более современную версию платформы. Разберем этот процесс подробнее.

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

  1. Выполним полное резервное копирование информационной базы.
  2. Завершим все активные сеансы пользователей и остановим службу 1C:Enterprise Server, если используется клиент-серверный вариант.
  3. Установим новую версию платформы (рекомендуется ветка 8.3.15 или более поздние стабильные релизы, такие как 8.3.22 или 8.3.24, если конфигурация УПП их поддерживает).
  4. Особое внимание уделим разрядности: если вы используете 64-битный клиент, убедитесь, что все внешние компоненты (включая печать штрихкода) совместимы с ним.

Решение №2: Использование виртуального PDF-принтера

Если оперативное обновление платформы невозможно (например, из-за требований совместимости других систем), рассмотрим альтернативный вариант — использование промежуточного виртуального принтера. Это поможет обойти ошибки драйверов проброшенных принтеров в RDP.

Алгоритм действий следующий:

  1. Установим на сервере терминалов надежный PDF-принтер (например, PDFCreator, Bullzip PDF Printer или используем встроенный Microsoft Print to PDF).
  2. В настройках Windows установим этот принтер как принтер по умолчанию для пользователя.
  3. В 1С откроем регламентированный отчет и попробуем нажать кнопку Печать или Просмотр.
  4. Поскольку PDF-принтер имеет фиксированные параметры области печати и DPI, графическая подсистема 1С инициализируется корректно. После формирования PDF-файла его можно будет распечатать на любом физическом сетевом устройстве.

Решение №3: Работа с компонентой 1C:BarCode и настройками отчета

Часто зависание происходит именно в момент генерации машиночитаемой формы. Проанализируем ситуацию с компонентой печати штрихкода. Если отчет зависает на этапе подготовки листов со штрихкодом, выполним следующие действия:

Переустановка компоненты:

  1. Зайдем в Панель управления -> Программы и компоненты и удалим 1C:BarCode.
  2. Найдем в каталоге установки конфигурации (или на диске ИТС) актуальный дистрибутив компоненты штрихкодирования.
  3. Запустим установку от имени администратора.

Отключение штрихкода для диагностики:

Для того чтобы проверить, виновата ли компонента штрихкода, мы можем временно отключить его вывод в настройках самого отчета:

  1. В форме регламентированного отчета нажмем кнопку Настройка.
  2. Перейдем на закладку Общие.
  3. Снимем флажок Разрешить печать без двухмерного штрихкода PDF417 (в зависимости от версии отчета формулировка может меняться, наша задача — выбрать режим печати без кода).
  4. Попробуем сформировать печатную форму снова. Если без штрихкода печать проходит успешно, значит, проблема локализована в компоненте 1CBarCode.

Решение №4: Очистка кэша настроек печати

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

Рассмотрим, как очистить эти настройки:

  1. В пользовательском режиме перейдем в меню Сервис -> Настройка пользователей и прав -> Очистка настроек (путь может отличаться в зависимости от интерфейса).
  2. Выберем конкретного пользователя, у которого возникает ошибка.
  3. Найдем настройки, связанные с табличными документами и принтерами, и удалим их.
  4. Также можно воспользоваться программным способом очистки системного хранилища настроек для объекта Печать.

Пример логики очистки (концептуально):


НастройкиПечати = ХранилищеОбщихНастроек.Выбрать();
Пока НастройкиПечати.Следующий() Цикл
    Если Найти(НастройкиПечати.КлючОбъекта, "Печать") > 0 Тогда
        ХранилищеОбщихНастроек.Удалить(НастройкиПечати.КлючОбъекта, НастройкиПечати.КлючНастроек, НастройкиПечати.Пользователь);
    КонецЕсли;
КонецЦикла;

Подведем итоги

Рассмотренная проблема является комплексной и затрагивает как недостатки платформы 8.3.14, так и особенности работы графической подсистемы Windows в терминальном режиме. Наиболее правильным и долгосрочным решением является обновление платформы до версии 8.3.15 или выше. Если же это невозможно, использование виртуального принтера и переустановка компонентов печати штрихкода позволяют продолжить работу и успешно сдать отчетность.

← На главную