При работе в конфигурации 1С:Управление производственным предприятием (УПП) редакции 1.3 пользователи часто сталкиваются с критической проблемой при попытке формирования или печати регламентированного отчета Бухгалтерская отчетность (с 2011 года). Ошибка проявляется либо в виде сообщения «ошибка получения информации об устройстве отображения», либо в виде полного зависания системы на этапе формирования определенных разделов, например, Отчета об изменениях капитала. Ситуация осложняется, если работа ведется в терминальном режиме (через RDP) с использованием проброшенных принтеров.
В данной статье мы подробно разберем причины возникновения этой ошибки, проанализируем взаимосвязь платформы и драйверов печати, а также рассмотрим пошаговые методы устранения проблемы.
Прежде чем переходить к активным действиям, проанализируем ситуацию. Основным фактором возникновения подобных сбоев является нестабильность платформы 1С:Предприятие версии 8.3.14. В этой ветке были зафиксированы ошибки управления графическими ресурсами (GDI), которые приводили к утечкам памяти и дескрипторов при отрисовке сложных многостраничных документов.
Разберем дополнительные факторы, которые могут провоцировать проблему:
1C:BarCode для формирования двумерного кода PDF417. В 64-битных версиях клиента 1С или при отсутствии необходимых библиотек Visual C++ Redistributable, эта компонента может работать некорректно, вызывая падение процесса.Как показывает практика и подтверждают пользователи, самым эффективным способом решения проблемы является переход на более современную версию платформы. Разберем этот процесс подробнее.
Экспериментально установлено, что в версии 8.3.15.1830 и выше ошибки взаимодействия с устройствами отображения при печати из обычных форм были устранены. Рассмотрим шаги по обновлению:
1C:Enterprise Server, если используется клиент-серверный вариант.Если оперативное обновление платформы невозможно (например, из-за требований совместимости других систем), рассмотрим альтернативный вариант — использование промежуточного виртуального принтера. Это поможет обойти ошибки драйверов проброшенных принтеров в RDP.
Алгоритм действий следующий:
PDFCreator, Bullzip PDF Printer или используем встроенный Microsoft Print to PDF).Печать или Просмотр.Часто зависание происходит именно в момент генерации машиночитаемой формы. Проанализируем ситуацию с компонентой печати штрихкода. Если отчет зависает на этапе подготовки листов со штрихкодом, выполним следующие действия:
Переустановка компоненты:
Панель управления -> Программы и компоненты и удалим 1C:BarCode.Отключение штрихкода для диагностики:
Для того чтобы проверить, виновата ли компонента штрихкода, мы можем временно отключить его вывод в настройках самого отчета:
Настройка.Общие.Разрешить печать без двухмерного штрихкода PDF417 (в зависимости от версии отчета формулировка может меняться, наша задача — выбрать режим печати без кода).1CBarCode.Проанализируем еще одну возможную причину: некорректные сохраненные настройки принтера в самой базе 1С. Система запоминает, на какой принтер пользователь печатал в прошлый раз. В RDP-сессиях имена принтеров меняются (добавляется префикс сессии), что вызывает конфликты.
Рассмотрим, как очистить эти настройки:
Сервис -> Настройка пользователей и прав -> Очистка настроек (путь может отличаться в зависимости от интерфейса).Печать.Пример логики очистки (концептуально):
НастройкиПечати = ХранилищеОбщихНастроек.Выбрать();
Пока НастройкиПечати.Следующий() Цикл
Если Найти(НастройкиПечати.КлючОбъекта, "Печать") > 0 Тогда
ХранилищеОбщихНастроек.Удалить(НастройкиПечати.КлючОбъекта, НастройкиПечати.КлючНастроек, НастройкиПечати.Пользователь);
КонецЕсли;
КонецЦикла;
Рассмотренная проблема является комплексной и затрагивает как недостатки платформы 8.3.14, так и особенности работы графической подсистемы Windows в терминальном режиме. Наиболее правильным и долгосрочным решением является обновление платформы до версии 8.3.15 или выше. Если же это невозможно, использование виртуального принтера и переустановка компонентов печати штрихкода позволяют продолжить работу и успешно сдать отчетность.