Как устранить задержку печати в 1С на Windows Server 2019, связанную с процессом 1cv8p64.bin?

Системный администратор 1С v8.3 (Обычные формы) Торговля и дистрибуция
← На главную

При переходе на новые версии платформы 1С:Предприятие 8.3 (начиная с 8.3.15.1508 и выше) системные администраторы часто сталкиваются с неприятным эффектом: при нажатии кнопки «Печать» или попытке открыть предварительный просмотр система «задумывается» на 15–30 секунд. Особенно остро эта проблема проявляется на современных операционных системах, таких как Windows Server 2019. При этом в диспетчере задач в момент зависания можно заметить кратковременное появление процесса 1cv8p64.bin или 1cv8p32.bin.

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

Почему появилась задержка: разбираем механизм изоляции печати

Начиная с версии 8.3.15, разработчики 1С изменили механизм взаимодействия с принтерами. Ранее функции печати выполнялись непосредственно внутри основного процесса 1cv8.exe. Это приводило к тому, что ошибки в нестабильных драйверах принтеров (особенно старых или сетевых) могли вызвать аварийное завершение всей программы 1С.

Для повышения отказоустойчивости работа с принтерами была вынесена в отдельные модули:

Несмотря на расширение .bin, эти файлы являются полноценными исполняемыми модулями (PE-файлами). Когда пользователь инициирует печать, 1С запускает соответствующий процесс, передает ему задачу, получает ответ от драйвера принтера и закрывает процесс. Именно на этапе запуска и инициализации этого внешнего модуля в ОС Windows Server 2019 возникают задержки.

Метод 1. Настройка исключений безопасности и антивирусного ПО

Проанализируем ситуацию: Windows Server 2019 обладает гораздо более строгими механизмами проверки запускаемых процессов, чем Windows Server 2008 R2. Система защиты Windows Defender (или сторонний антивирус) при каждом запуске нового процесса проверяет его цифровую подпись и сканирует содержимое. Поскольку 1С запускает 1cv8p64.bin «с нуля» при каждом обращении к печати, задержки суммируются.

Выполним следующие шаги по настройке исключений:

  1. Откроем настройки «Защиты от вирусов и угроз» в Windows.
  2. Перейдем в раздел «Управление настройками» -> «Исключения» -> «Добавление или удаление исключений».
  3. Добавим в исключения тип файла: .bin.
  4. Добавим в исключения папку с установленной платформой 1С (обычно это C:\Program Files (x86)\1cv8\).
  5. Добавим в исключения процессы 1cv8p32.bin и 1cv8p64.bin, указав полные пути к ним в каталоге конкретной версии платформы (например, ...\8.3.16.1502\bin\1cv8p64.bin).

Важно: Если на сервере используются политики AppLocker или Windows Defender Exploit Guard, убедимся, что запуск исполняемых файлов из программных папок 1С разрешен и не требует длительной проверки репутации в облаке Microsoft.

Метод 2. Удаление «фантомных» принтеров и очистка портов

Рассмотрим, как компонент 1cv8p64.bin взаимодействует с системой печати. При старте он опрашивает службу Spooler (Диспетчер очереди печати) и собирает информацию обо всех установленных драйверах и портах. Если в системе числятся сетевые принтеры, которые в данный момент недоступны (например, принтеры уволившихся сотрудников или старые перенаправленные RDP-принтеры), процесс будет ожидать таймаута ответа от каждого такого устройства.

Проанализируем список принтеров и выполним очистку:

  1. Зайдем в «Панель управления» -> «Устройства и принтеры».
  2. Удалим все принтеры, помеченные как «Отключен» или «Недоступен».
  3. Проверим реестр на наличие «застрявших» сетевых подключений по адресу: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices
  4. Если используется ПО для проброса принтеров (например, ScrewDrivers), убедимся, что версия продукта совместима с Windows Server 2019. Устаревшие версии ScrewDrivers могут некорректно обрабатывать запросы от изолированных процессов 1С.

Метод 3. Сброс индивидуальных настроек печати пользователя

В 1С параметры печати (имя принтера, ориентация страницы, масштаб) сохраняются для каждой конкретной печатной формы в разрезе пользователей. Если форма была сохранена с принтером, которого больше нет в системе, 1cv8p64.bin может тратить значительное время на попытки инициализации несуществующего устройства.

Выясним причину задержки, сбросив настройки:

  1. Откроем документ, печать которого тормозит.
  2. Вызовем печатную форму и перейдем в меню «Файл» -> «Параметры страницы».
  3. В открывшемся окне ничего не меняя, нажмем «ОК». Это перезапишет настройки принтера на текущий «принтер по умолчанию».
  4. Если это не помогло, попробуем очистить кэш настроек пользователя. Для этого можно воспользоваться обработкой «Управление настройками пользователя» или программно очистить хранилище системных настроек для данного отчета.

Пример кода для программной очистки настроек печати (использовать с осторожностью):


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

Метод 4. Глубокая диагностика через Process Monitor (ProcMon)

Если вышеперечисленные методы не принесли результата, воспользуемся инструментом Process Monitor от Марка Руссиновича. Это позволит нам увидеть, на каком именно системном вызове «зависает» процесс.

Разберем алгоритм диагностики:

  1. Запустим ProcMon.exe от имени администратора.
  2. Настроим фильтр: Process Name is 1cv8p64.bin.
  3. В 1С нажмем кнопку печати и дождемся появления формы.
  4. Вернемся в ProcMon и остановим сбор данных (Ctrl+E).
  5. Проанализируем колонку Duration (длительность). Ищем операции с длительностью более 1-2 секунд.

Чаще всего задержка обнаруживается на операциях обращения к реестру (RegOpenKey) при опросе веток драйверов или при обращении к WMI. Если мы видим массовые ошибки NAME NOT FOUND при обращении к сетевым путям или принтерам, значит, проблема в некорректно настроенных портах печати в ОС.

Метод 5. Изменение настроек изоляции драйверов в Windows

Windows Server 2019 позволяет настраивать режим изоляции для самих драйверов принтеров. Иногда конфликт возникает из-за того, что и 1С, и Windows пытаются изолировать драйвер одновременно.

Посмотрим на настройки в оснастке управления печатью:

  1. Запустим printmanagement.msc.
  2. Перейдем в раздел «Драйверы».
  3. Нажмем правой кнопкой мыши на используемый драйвер и выберем пункт «Задать изоляцию» (Set Isolation).
  4. Попробуем переключить режим из «Общий» (Shared) в «Изолированный» (Isolated) или «Нет» (None). В некоторых случаях режим «None» помогает ускорить инициализацию процесса 1cv8p64.bin.

Резюме

Задержка при печати в связке 1С и Windows Server 2019 — это комплексная проблема взаимодействия системы безопасности ОС и нового механизма изоляции печати 1С. В большинстве случаев решение заключается в добавлении исключений в антивирус и удалении неактуальных принтеров из профиля пользователя и системы. Использование 32-битной платформы на 64-битном сервере вынуждает систему чаще запускать прослойку 1cv8p64.bin для доступа к драйверам, поэтому чистота конфигурации печатных устройств является критически важным фактором.

← На главную