Принтер для 1С на сервере: где его ставить, как дать права и починить печать

· 9 мин

Содержание

Чтобы добавить принтер на сервер 1С, его устанавливают в Windows того компьютера, где запущен процесс, который печатает. Обычная печать из формы документа идёт с клиентского компьютера: сервер 1С формирует табличный документ, а отправляет его на принтер клиент. Поэтому принтер на сервере 1С нужен только в двух случаях: печать идёт из фонового или регламентного задания, или пользователи работают на этом же сервере через RDP.

Частая ошибка — ставить драйвер на машину с кластером 1С и ждать, что принтер появится у всех. Не появится. Сначала определите, где работает клиент 1С, и только потом настраивайте печать на сервере: драйвер, порт, права и параметры в самой программе.

Где на самом деле нужен принтер: клиент, сервер 1С или терминал

Посмотрите на свою схему работы и найдите строку в таблице.

Как работают пользователиГде ставить принтерПод какой учётной записью печатает Windows
Тонкий или толстый клиент на своих ПКНа ПК пользователейУчётная запись пользователя
Клиент 1С запущен на терминальном сервере (RDP, RemoteApp)На терминальном сервере или через перенаправлениеПользователь терминальной сессии
Веб-клиент в браузереНа ПК пользователя, печать идёт через браузерПользователь браузера
Печать из кода на сервере: фоновое, регламентное заданиеНа сервере 1С, где работает рабочий процесс rphostУчётная запись службы агента сервера 1С

Последняя строка — именно та ситуация, когда принтер ставят на сервер 1С. Например, регламентное задание каждое утро печатает реестр отгрузок на складе, и человек в процессе не участвует.

Если терминальный сервер и сервер 1С — одна машина, у вас сразу два сценария: принтеры для сессий пользователей и принтер для служебной учётной записи. Настраивайте их по отдельности.

Подготовка сервера: драйвер, порт и сам принтер

На сервере ставьте принтер как локальный со стандартным портом TCP/IP, а не как подключение к общему ресурсу \\printsrv\HP. Локальный принтер виден всем учётным записям машины, в том числе служебной. Подключение по сетевому пути привязано к профилю конкретного пользователя.

Через графический интерфейс

  1. Скачайте драйвер с сайта производителя под вашу версию Windows Server и разрядность x64.
  2. Откройте printmanagement.msc (оснастка «Управление печатью»). Если её нет, добавьте компонент «Службы печати и документов» через «Диспетчер серверов».
  3. В разделе «Драйверы» добавьте драйвер из скачанного пакета.
  4. В разделе «Порты» создайте стандартный порт TCP/IP с IP-адресом принтера.
  5. В разделе «Принтеры» добавьте принтер: выберите созданный порт и драйвер, задайте понятное имя без спецсимволов, например Sklad-HP.
  6. Напечатайте пробную страницу из свойств принтера.

Через PowerShell

Тот же результат одной пачкой команд. Удобно, когда серверов несколько или принтер надо пересоздавать.

# драйвер должен быть уже загружен в хранилище (pnputil /add-driver driver.inf /install)
Add-PrinterDriver -Name "HP Universal Printing PCL 6"
Add-PrinterPort -Name "IP_192.168.10.50" -PrinterHostAddress "192.168.10.50"
Add-Printer -Name "Sklad-HP" -DriverName "HP Universal Printing PCL 6" -PortName "IP_192.168.10.50"
Get-Printer | Select-Object Name, DriverName, PortName

Имя драйвера в Add-PrinterDriver пишите ровно так, как оно указано в INF-файле. Ошибка в одной букве — и команда скажет, что драйвер не найден.

На сервере с терминальными сессиями выбирайте универсальные драйверы производителя или драйверы типа 4. Пёстрый набор старых драйверов от разных моделей — частая причина падения службы печати.

Права доступа и очередь печати для службы 1С

Когда печатает фоновое задание, Windows видит не пользователя 1С, а учётную запись, под которой работает служба 1C:Enterprise 8.3 Server Agent. Посмотреть её можно в services.msc, на вкладке «Вход в систему». По умолчанию при установке создаётся пользователь USR1CV8, но у вас может быть доменная служебная запись.

Что проверить для этой учётной записи:

  • 🖨️ Право печати. В свойствах принтера, вкладка «Безопасность»: группе «Все» или самой служебной записи должно быть разрешено «Печать».
  • 👤 Профиль. У служебной учётной записи часто нет принтера по умолчанию. Значит, код без явного имени принтера упадёт или напечатает не туда.
  • 🌐 Сетевой доступ. Если принтер всё-таки подключён через сервер печати, служебная запись должна иметь права на этот ресурс. Локальная USR1CV8 в домене прав на чужой сервер печати не имеет.
  • 📋 Очередь. Задания от службы видны в оснастке «Управление печатью» → «Принтеры» → «Открыть очередь». Если задания висят со статусом ошибки, проблема на стороне Windows, а не 1С.

Самый надёжный вариант для служебной печати — локальный принтер на порту TCP/IP и явное имя принтера в коде. Тогда не нужен ни профиль, ни принтер по умолчанию.

Настройка 1С:Предприятия для печати на нужный принтер

Ручная печать пользователем

Пользователь нажимает «Печать» в документе, открывается печатная форма, затем кнопка печати вызывает стандартный диалог Windows. В нём видны принтеры того компьютера, где работает клиент. Если нужного принтера в списке нет, дело не в 1С: принтера нет в Windows этой машины или этой сессии.

Масштаб и поля задаются в форме «Параметры страницы» печатной формы. Если форма не влезает на лист, включите там автомасштаб или подберите масштаб вручную.

Печать из кода на сервере

Для регламентного задания принтер задают свойством табличного документа ИмяПринтера. Имя пишут точно так, как оно видно в Windows.

Процедура ПечатьРеестраОтгрузок() Экспорт

    ТабДок = Новый ТабличныйДокумент;
    // ... заполнение табличного документа по макету ...

    ТабДок.ИмяПринтера = "Sklad-HP";
    ТабДок.КоличествоЭкземпляров = 2;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);

КонецПроцедуры

На сервере диалог показать некому, поэтому режим НеИспользовать обязателен. Имя принтера удобно хранить в константе или в настройках обработки: при замене принтера не придётся править код.

Доработку для серверной печати делайте в расширении конфигурации, а не в самой типовой. Так обновления не затрут ваш код.

Принтеры чеков и этикеток

Фискальные регистраторы, принтеры этикеток и чеков подключают не как обычный принтер, а через подсистему подключаемого оборудования: Администрирование → Подключаемое оборудование в БП 3.0 и УТ 11. Оборудование привязано к рабочему месту, то есть к конкретному компьютеру клиента. В терминальном режиме таким рабочим местом становится терминальный сервер , и драйвер оборудования ставят туда.

Печать с терминального сервера по RDP и RemoteApp

Когда 1С запущена на терминальном сервере, у пользователя два пути получить принтер в сессии.

СпособКак работаетПлюсыМинусы
Перенаправление принтеровПринтер с ПК пользователя пробрасывается в RDP-сессиюНичего не ставить на серверИмя принтера меняется от сессии к сессии
Принтер, установленный на сервереПринтер ставят на терминальный сервер по TCP/IPСтабильное имя, предсказуемая печатьНужен драйвер на сервере и доступ к принтеру по сети
Агент печатиДокумент уходит на ПК пользователя отдельной программойРаботает через любой каналПлатное ПО, ещё один компонент

Перенаправление принтеров

  1. В клиенте RDP на ПК пользователя: «Показать параметры» → вкладка «Локальные ресурсы» → флажок «Принтеры».
  2. На сервере проверьте групповые политики: Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удалённых рабочих столов → Узел сеансов удалённых рабочих столов → Перенаправление принтеров.
  3. Политика «Не разрешать перенаправление клиентских принтеров» должна быть выключена или не задана.
  4. Политика «Использовать в первую очередь драйвер принтера Easy Print удалённого рабочего стола» снимает необходимость ставить драйвер каждой модели на сервер.

Перенаправленный принтер в сессии называется примерно так: HP LaserJet (перенаправлено 3). Число в скобках зависит от номера сессии. Поэтому никогда не прописывайте имя перенаправленного принтера в код или в настройки обработок — завтра оно станет другим.

Для RemoteApp правила те же: публикуется приложение, а перенаправление принтеров берётся из настроек коллекции и политик.

Диагностика: принтер не виден или печать не идёт

Начинайте с проверки за пределами 1С. Откройте на той же машине и в той же сессии Блокнот и отправьте страницу на нужный принтер. Не печатает Блокнот — чините Windows. Блокнот печатает, а 1С нет — смотрите настройки программы и код.

Диагностика: выберите симптом

Перезапуск диспетчера печати

Если очередь забита зависшими заданиями, помогает очистка спулера.

net stop spooler
del /q /f %systemroot%\System32\spool\PRINTERS\*.*
net start spooler

Остановка службы «Диспетчер печати» прерывает печать у всех, кто работает на этом сервере, а удаление файлов из папки PRINTERS уничтожает все задания в очереди. На терминальном сервере делайте это в обед или после работы и предупредите пользователей. Сеансы 1С при этом не обрываются.

Если падает сама служба печати

Один кривой драйвер способен ронять спулер раз за разом. В оснастке «Управление печатью» откройте раздел «Драйверы», в контекстном меню проблемного драйвера выберите изоляцию драйвера. Тогда он работает в отдельном процессе и не тянет за собой остальные принтеры.

Агенты печати и другие обходные варианты

Иногда ставить принтер на сервер неудобно: филиалы за NAT, ноутбуки сотрудников, сотни разных моделей. Тогда помогают обходные решения.

  • 🧾 Сторонние агенты печати для RDP. Документ печатается в сессии на виртуальный принтер, файл передаётся на ПК пользователя, там его выводит маленькая программа на любой локальный принтер. Драйверы моделей на сервере не нужны, имя принтера стабильное. Решения платные, лицензируются по числу серверов или пользователей.
  • 📄 Печать в PDF. Пользователь сохраняет печатную форму в PDF и печатает её у себя. Медленнее, но подходит для редкой печати и удалённых сотрудников.
  • 🌍 Веб-клиент или тонкий клиент вместо RDP. Если пользователи подключаются к опубликованной базе напрямую, печать идёт с их компьютера, и вопрос принтеров на сервере отпадает.
  • 🗂️ Отдельный сервер печати. Принтеры офиса ставят на один сервер печати, а терминальные серверы подключают их оттуда. Управление централизованное, но служебной учётной записи 1С нужны права на этот сервер.
Как вам лучше организовать печать из 1С?

Частые вопросы

Нужна ли отдельная лицензия 1С, чтобы печатать с сервера?
Нет. Печать не лицензируется отдельно. Лицензии нужны на сеансы пользователей и на сервер 1С, как и без печати.
Можно ли печатать из 1С на принтер, подключённый по USB к серверу?
Можно, если принтер установлен в Windows как локальный. Для терминальной работы это неудобно: принтер стоит в серверной, а не рядом с пользователем.
Почему печатает Блокнот на сервере, а регламентное задание нет?
Блокнот вы запускаете под своей учётной записью, а задание работает под учётной записью службы 1С. У неё может не быть доступа к принтеру или принтера по умолчанию.
Как узнать точное имя принтера для кода?
Выполните на сервере Get-Printer в PowerShell или откройте «Устройства и принтеры». Имя копируйте целиком, с пробелами и регистром.
Влияет ли версия платформы 1С на работу с принтерами?
Сама платформа берёт принтеры из Windows и не хранит их список. Поведение диалога и параметров страницы между релизами 8.3 меняется мало, а основные проблемы почти всегда в драйверах и правах.