При работе в конфигурации «1С:Управление торговлей 10.3» администраторы и пользователи часто сталкиваются с ситуацией: у опытных сотрудников печать этикеток настроена идеально и уходит на специализированный принтер (например, Zebra или Godex), а у нового пользователя те же самые этикетки упорно выводятся на офисный принтер формата А4. При этом все настройки в интерфейсе, включая флаг «Использовать специализированный принтер этикеток», кажутся идентичными. Разберем детально, как устроена логика печати в «обычном приложении» и как принудительно «обучить» систему правильно выбирать устройство.
Для начала проанализируем, как 1С запоминает, на какой принтер выводить тот или иной документ. В платформе 8.2 и 8.3 (при использовании обычного приложения) настройки печати каждой формы или обработки привязаны к так называемому ключу сохранения настроек. Этот механизм работает следующим образом:
ПечатьЭтикеток и нажимает кнопку «Печать», система ищет в его персональном кэше (расположенном в профиле операционной системы) сохраненные параметры для этого объекта.Важно понимать, что флаг «Спецпринтер» в настройках пользователя УТ 10.3 не содержит в себе путь к конкретному драйверу. Рассмотрим подробнее: этот флаг лишь дает команду программному коду установить формат страницы, подходящий для этикеток (например, 58х40 мм), но выбор самого физического устройства все равно ложится на стандартные механизмы платформы.
Выясним причину, почему настройки не применяются у нового пользователя. Чаще всего в обработке печати этикеток установлен флаг «Сразу на печать» или «Печать без просмотра». Выглядит это удобно, но именно здесь кроется ловушка:
Сразу на печать система не показывает пользователю диалоговое окно выбора принтера.Рассмотрим алгоритм действий, который поможет закрепить нужный принтер за конкретным пользователем без изменения программного кода. Выполним следующие шаги:
Если вышеописанный метод не помогает, проанализируем ситуацию глубже. В коде обработки за печать отвечает объект ТабличныйДокумент. Посмотрим на свойства, которые управляют процессом:
// Пример того, как программно может задаваться принтер
ТабДок = Новый ТабличныйДокумент;
ТабДок.ИмяПринтера = "Zebra_2824"; // Если это имя прописано жестко, настройки пользователя игнорируются
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЭТИКЕТОК"; // Ключ, по которому ищутся настройки
ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
Если в вашей конфигурации ИмяПринтера не заполнено (что стандартно для типовой УТ 10.3), то критически важным становится свойство ИмяПараметровПечати. Именно по этому строковому ключу платформа ищет настройки в файлах пользователя. Если у разных пользователей разные права доступа к папке %AppData%\1C\1Cv8\, 1С может просто не иметь возможности сохранить выбранный принтер в профиль.
Разберем ситуацию, когда 1С запущена на сервере через удаленный рабочий стол. Это самый частый источник проблем с принтерами. При каждом входе пользователя Windows может создавать перенаправленные принтеры с новыми именами, например: Zebra (redirected 2), а завтра это будет Zebra (redirected 5).
Поскольку 1С сохраняет точное имя принтера, при следующем входе она не найдет устройство со старым суффиксом и снова отправит печать на дефолтный принтер. Чтобы этого избежать, используйте один из следующих подходов:
ИмяПринтера автоматически).Подведем итоги нашего анализа. Если у нового пользователя в УТ 10.3 не работает печать на спецпринтер, первым делом проверьте ручной выбор устройства через отключение режима прямой печати. В 90% случаев это решает проблему, так как позволяет платформе создать запись в кэше настроек. В остальных 10% случаев стоит обратить внимание на права доступа к реестру и профилю пользователя, а также на специфику именования принтеров в терминальных сессиях.