Печать из 1С уходит не на тот принтер: где он задаётся и как это исправить
Содержание
В 1С 8.3 нет отдельной настройки «принтер по умолчанию»: программа печатает на тот принтер, который назначен основным в Windows на компьютере пользователя. Чтобы поменять его, откройте в Windows Параметры → Bluetooth и устройства → Принтеры и сканеры (в Windows 10 — Параметры → Устройства → Принтеры и сканеры), выберите нужный принтер и нажмите «Использовать по умолчанию».
Если менять системный принтер нельзя или нужен другой только для одного документа, есть три пути. Разовый выбор — через Ctrl+P в открытой печатной форме. Постоянный принтер для конкретной формы — через «Параметры страницы». Автоматический выбор — кодом во внешней обработке. Всё это работает одинаково в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других конфигурациях: печать — механизм платформы, а не конкретной программы.
Принтер по умолчанию в Windows: основной способ
1С не хранит общий список принтеров. При нажатии кнопки «Печать» платформа берёт принтер, который Windows считает основным. Поэтому первым делом меняют именно его.
Windows 11
- Откройте
Пуск → Параметры → Bluetooth и устройства → Принтеры и сканеры. - Пролистайте вниз и выключите переключатель «Разрешить Windows управлять принтером, используемым по умолчанию».
- Вернитесь к списку, щёлкните нужный принтер.
- Нажмите «Использовать по умолчанию».
Windows 10
- Откройте
Пуск → Параметры → Устройства → Принтеры и сканеры. - Снимите флажок «Разрешить Windows управлять принтером, используемым по умолчанию».
- Выберите принтер → «Управление» → «Использовать по умолчанию».
Если галочку «Разрешить Windows управлять…» оставить, система сама переключает основной принтер на тот, куда вы печатали последним. Отсюда частая жалоба: «вчера 1С печатала на HP, сегодня шлёт на PDF».
Новое значение подхватывается не всегда сразу. Если 1С продолжает слать документы на старый принтер, закройте программу и откройте её заново.
Как посмотреть точное имя принтера
Имя пригодится для кода и для разбора проблем на терминальном сервере. Откройте PowerShell и выполните:
Get-Printer | Select-Object Name, DriverName, PortName
Имя нужно копировать дословно, с пробелами и скобками. Одна лишняя буква — и программа его не найдёт.
Как выбрать другой принтер прямо при печати из 1С
Когда основной принтер менять не хочется, его выбирают для конкретной печати.
- Откройте документ и нажмите в его командной панели «Печать», выберите нужную форму (например, «Счёт на оплату» или «Акт»).
- Откроется окно печатной формы. Щёлкните мышью по самому табличному документу.
- Нажмите
Ctrl+Pили откройте главное меню (кнопка с тремя полосками в левом верхнем углу) →Файл → Печать…. - В системном окне «Печать» выберите принтер, число копий и диапазон страниц.
- Нажмите «Печать».
Есть тонкость, о которой многие не знают. Кнопка «Печать» на панели формы отправляет документ сразу, без всяких вопросов, на принтер по умолчанию. Окно выбора принтера открывает только Ctrl+P или пункт меню Файл → Печать….
| Как печатаете | Куда уйдёт документ | Когда удобно |
|---|---|---|
| Кнопка «Печать» на форме | На принтер по умолчанию или заданный для формы | Ежедневная печать «в одно нажатие» |
Ctrl+P / Файл → Печать… | На выбранный в диалоге | Разово нужен другой принтер |
| Пакетная печать из списка документов | На принтер по умолчанию | Массовая печать накладных, актов |
Код с ИмяПринтера | На принтер, указанный в коде | Печать этикеток, автоматизация |
Отдельный принтер для конкретной печатной формы
Типичная ситуация: счета и акты печатаются на офисный лазерный принтер, а ценники или этикетки — на узкий термопринтер. Переключать основной принтер каждый раз неудобно.
Как задать принтер для формы
- Сформируйте нужную печатную форму.
- Откройте главное меню →
Файл → Параметры страницы…. - В окне параметров нажмите кнопку выбора принтера и укажите нужное устройство.
- Проверьте размер бумаги и ориентацию: у термопринтера они совсем другие.
- Нажмите «ОК» и напечатайте.
Табличный документ платформы умеет запоминать параметры печати по специальному ключу (свойство КлючПараметровПечати). В типовых конфигурациях на БСП этот ключ задаётся для каждой печатной формы, поэтому настройки страницы сохраняются для пользователя и макета.
Проверить, запомнился ли принтер, просто. Закройте форму, сформируйте её заново и нажмите кнопку «Печать». Если документ ушёл на нужное устройство — настройка сохранилась. Если нет — для этой формы и вашей конфигурации остаётся разовый выбор через Ctrl+P или обработка (см. раздел про автоматизацию).
Настройки параметров страницы хранятся для каждого пользователя 1С отдельно. Если бухгалтер настроил принтер под собой, у кладовщика под его учётной записью всё останется по-старому.
Чеки и этикетки — не через Windows
Фискальные регистраторы (ККТ) и часть принтеров этикеток подключаются в 1С не как обычный принтер Windows, а как подключаемое оборудование: раздел Администрирование → Подключаемое оборудование. Там у каждого устройства свой драйвер и свои настройки. Смена принтера по умолчанию в Windows на печать чеков не влияет.
Файловая база, сервер 1С, удалённый рабочий стол и браузер
Частый вопрос: «Принтер нужно настраивать на сервере?» Нет. Печать всегда выполняется на стороне клиента — там, где запущено окно 1С. Сервер 1С формирует данные, но к принтерам доступа не имеет.
| Как запущена 1С | Чей принтер по умолчанию используется | Где менять |
|---|---|---|
| Тонкий клиент, файловая база в сетевой папке | Компьютера пользователя | В Windows на этом компьютере |
| Тонкий клиент, клиент-серверная база | Компьютера пользователя | Там же, сервер 1С ни при чём |
| Через удалённый рабочий стол (RDP, RemoteApp) | Сеанса пользователя на терминальном сервере | В сеансе на сервере или в настройках перенаправления |
| Веб-клиент в браузере | Выбирается в диалоге печати браузера | В самом браузере |
Особенности терминального сервера
На RDP принтеры пользователя пробрасываются в сеанс и получают имена вида «HP LaserJet (перенаправлено 3)». Номер в скобках может меняться от сеанса к сеансу. Если имя такого принтера сохранили в 1С или в коде, при следующем входе оно уже не совпадёт.
Что помогает:
- 🖨️ в клиенте удалённого рабочего стола на вкладке «Локальные ресурсы» должна стоять галочка «Принтеры»;
- 🖨️ основной принтер на домашнем ПК пользователя обычно становится основным и в сеансе — сначала поменяйте его там;
- 🖨️ если нужен общий принтер офиса, установите его на терминальный сервер как сетевой: его имя не меняется;
- 🖨️ основной принтер для всех можно назначать скриптом при входе (пример ниже).
Веб-клиент
В браузере 1С не управляет принтером. Печатная форма уходит в стандартное окно печати браузера, и принтер выбирают там. Браузеры на основе Chromium обычно запоминают последний выбранный принтер.
Замена драйвера и переименование принтера
После замены драйвера, переустановки принтера или переименования в Windows 1С ведёт себя по-разному. Сохранённое в параметрах формы или в коде имя больше не совпадает с реальным устройством.
Что делать по шагам:
- Узнайте новое точное имя через
Get-Printer(команда выше). - Если принтер был основным — снова назначьте его основным в Windows: при переустановке эта отметка часто слетает.
- Откройте печатные формы, где принтер выбирали вручную, и заново выберите устройство в
Файл → Параметры страницы…. - Проверьте поля и масштаб. Новый драйвер может иметь другие непечатаемые поля, и форма, которая раньше влезала на лист, «съезжает» на вторую страницу.
- Если имя прописано во внешней обработке или в коде расширения — исправьте его там.
Не переименовывайте принтер на компьютерах, где печать настроена кодом. Проще сразу дать устройству понятное постоянное имя («Склад-этикетки») при установке и больше его не трогать.
Если после смены драйвера 1С печатает пустые листы или иероглифы, а из Блокнота всё печатается нормально, попробуйте другой драйвер того же принтера (например, универсальный PCL или PostScript от производителя). Платформа отдаёт на печать графическое представление листа, и проблема почти всегда в драйвере.
Зависла очередь печати: 1С не печатает или подвисает
Типичные признаки: нажали «Печать» — ничего не вышло, следующий документ тоже не вышел, а в очереди Windows висит задание со статусом «Ошибка». Иногда окно 1С на несколько секунд «замирает» при открытии печатной формы.
Как очистить очередь печати вручную
Если задание не удаляется из очереди кнопкой «Отмена», очистите очередь через службу.
Перезапуск «Диспетчера печати» на терминальном сервере обрывает печать у всех пользователей сервера. Делайте это, когда никто не печатает, и предупредите коллег.
Откройте командную строку от имени администратора и выполните:
net stop spooler
del /Q /F %systemroot%\System32\spool\PRINTERS\*.*
net start spooler
Первая команда останавливает службу печати, вторая удаляет файлы застрявших заданий, третья запускает службу снова. Саму 1С закрывать не обязательно, но печатную форму лучше сформировать заново.
Автоматизация: принтер в коде и скрипт для Windows
Когда руками выбирать долго, принтер задают программно. Тут два подхода: менять принтер прямо в 1С для конкретного табличного документа или менять основной принтер Windows скриптом.
Внешняя обработка: печать на заданный принтер
У табличного документа в 1С 8.3 есть свойство ИмяПринтера. Если его заполнить и вызвать печать без диалога, документ уйдёт на указанное устройство, а основной принтер Windows не изменится.
Пример клиентской процедуры для формы внешней обработки или расширения:
&НаКлиенте
Процедура НапечататьНаПринтер(ТабДок, ИмяПринтера, Копий = 1)
ТабДок.ИмяПринтера = ИмяПринтера;
ТабДок.КоличествоЭкземпляров = Копий;
ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
КонецПроцедуры
Пример вызова: НапечататьНаПринтер(Результат, "Склад-этикетки", 2), где Результат — реквизит формы типа «Табличный документ» с уже сформированной формой.
Что учесть:
- 🔧 печать вызывается только на клиенте, на сервере метод недоступен;
- 🔧 имя принтера должно совпадать с именем в Windows посимвольно;
- 🔧 в веб-клиенте выбор принтера всё равно сделает браузер;
- 🔧 имя не стоит прописывать прямо в коде — лучше хранить его в настройке, которую пользователь может поменять сам.
Если обработку подключают к типовой конфигурации как дополнительную печатную форму, используйте раздел Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки. Так обработку не придётся переделывать после обновления.
Скрипт Windows: основной принтер при входе
На терминальном сервере удобно назначать основной принтер каждому пользователю при входе. Для этого в Windows есть штатная команда:
rundll32 printui.dll,PrintUIEntry /y /n "Бухгалтерия-лазерный"
Ключ /y делает принтер основным, /n задаёт его имя. Команду кладут в сценарий входа групповой политики или в автозагрузку пользователя. Тот же результат из PowerShell:
(New-Object -ComObject WScript.Network).SetDefaultPrinter("Бухгалтерия-лазерный")
После выполнения 1С при следующей печати возьмёт уже новый принтер — без всякой настройки в самой программе.
Частые вопросы
Можно ли задать принтер по умолчанию для всех пользователей 1С сразу?
Почему из Word печатает на нужный принтер, а 1С — на другой?
Как печатать из 1С сразу в PDF вместо принтера?
Ctrl+P принтер «Microsoft Print to PDF» или сохраните форму кнопкой сохранения в окне печатной формы в формате PDF. Второй способ не зависит от принтеров вовсе.Нужно ли перезапускать 1С после смены принтера по умолчанию?
Почему кнопка «Печать» не спрашивает, на какой принтер печатать?
Ctrl+P или Файл → Печать… в главном меню.