Проблема, при которой документ печатается не по порядку (сначала все страницы первой копии, затем все страницы второй), а «постранично» (сначала все первые страницы, потом все вторые), является классической для работы в терминальных сессиях Windows Server. Эта ситуация возникает из-за конфликта настроек принтера, профиля пользователя 1С и особенностей взаимодействия платформы с современными ОС. Давайте разберем, как мы можем исправить эту ситуацию, применяя последовательные шаги диагностики и настройки.
Зачастую «глюк» с печатью сохраняется внутри профиля пользователя в базе данных или настройках Windows. Если проблема наблюдается только у одного сотрудника, первым делом попробуем исключить влияние «битых» настроек.
Windows создал новый чистый профиль при входе.regedit и найдите путь, содержащий Moxel (обычно это HKCU\Software\1C\1Cv7\7.7\...). Удаление этой ветки заставит систему пересоздать настройки печати при следующем запуске.Иногда настройки печати «застревают» в неверном состоянии. Мы можем попробовать принудительно перезаписать их:
Для пользователей платформы 1С 7.7 ситуация сложнее, так как стандартное окно параметров печати часто сбрасывает флаг Collate (разбор по копиям) в значение 0. В современных 64-битных ОС это стандартное поведение системы. Чтобы решить проблему, нам нужно отправлять документ на печать программно, минуя стандартный интерфейс.
Рассмотрим пример кода, который позволяет обойти стандартный диалог:
// Пример программной отправки на печать для 1С 7.7
Процедура ПриОткрытии()
// Загружаем компоненту для работы с табличным документом
Если ЗагрузитьВнешнююКомпоненту("SpreadSheet.dll") = 0 Тогда
Сообщить("Не удалось загрузить компоненту");
Возврат;
КонецЕсли;
ТабДок = СоздатьОбъект("ТабличныйДокумент");
ТабДок.ЗагрузитьИзТаблицы(Таб); // где Таб - ваша печатная форма
ПараметрыПечати = ТабДок.ПараметрыПечати;
ПараметрыПечати.АвтоМасштаб = 1;
ПараметрыПечати.КоличествоКопий = 2; // Указываем нужное количество
ПараметрыПечати.РежимПечатиКопий = 1; // 1 - это принудительный разбор по копиям
ПараметрыПечати.Дуплекс = 1;
ТабДок.Напечатать("ИмяВашегоПринтера");
КонецПроцедуры
Если программные методы не помогают, стоит обратить внимание на работу драйверов принтера в терминале:
Universal Print Driver от производителя (например, HP). Они более стабильно работают с перенаправлением настроек печати в RDP-сессиях.Windows 2008/2012 использует драйвер Remote Desktop Easy Print, попробуйте отключить его через групповые политики. Установка «родного» драйвера принтера непосредственно на сервер терминалов часто решает проблему с передачей команды Collate.Проанализировав описанные методы, мы видим, что решение проблемы чаще всего лежит в области «обхода» стандартных диалогов 1С, которые некорректно взаимодействуют с API современных ОС. Если у вас возникла подобная сложность, начните с проверки настроек профиля, а если это не принесет результата — смело переходите к программной отправке документа на принтер.