В типовых конфигурациях 1С, использующих Библиотеку стандартных подсистем (БСП), таких как 1С:Управление торговлей, 1С:Комплексная автоматизация и 1С:ERP Управление предприятием, реализован удобный механизм печати комплектов документов. Пользователь может открыть окно настройки комплекта, отметить нужные формы флажками и указать количество копий.
Однако при работе с крупными торговыми сетями и распределительными центрами часто предъявляются жесткие требования к физической раскладке бумажного пакета. Например, первой обязательно должна идти счет-фактура или УПД, затем товарная накладная ТОРГ-12, далее транспортная накладная, справка к ТТН и сертификаты. По умолчанию строки в форме настройки комплекта отсортированы по наименованию либо по порядку регистрации команд, и стандартный интерфейс не позволяет пользователю свободно менять их местами. Разберем, как устроен этот механизм и как настроить произвольную последовательность вывода печатных форм.
Проанализируем внутреннее устройство подсистемы печати:
ДобавитьКомандыПечати регистрируются доступные команды. При открытии формы настройки комплекта БСП собирает все доступные для данного документа макеты в таблицу КомплектПечатныхФорм.НастройкиПечатиОбъектов в разрезе текущего пользователя и типа документа.Таким образом, физическая последовательность вывода листов на принтер напрямую зависит от положения строк в таблице формы настройки.
Рассмотрим самый быстрый и безопасный способ, не требующий снятия конфигурации с поддержки. Так как итоговый порядок печати полностью зависит от порядка строк в табличной части формы, достаточно разрешить пользователю перемещать строки перетаскиванием (Drag-and-Drop) или кнопками.
Разберем по шагам, как это реализовать с помощью расширения конфигурации:
НастройкиПечатиОбъектов (форма НастройкаПечатиКомплекта) либо в общих формах подсистемы печати.КомплектПечатныхФорм.ChangeRowOrder) и установим для него значение Истина.После применения доработки в окне «Печать комплекта с настройкой» пользователь сможет захватить мышью любую строку (например, «Счет-фактура») и перетащить ее на первую позицию. При сохранении настройки порядок зафиксируется в регистре сведений и при последующей печати документы будут выводиться строго в заданной последовательности.
Если требуется жестко зафиксировать порядок для всех пользователей без необходимости ручной перенастройки каждым оператором, проанализируем модуль менеджера соответствующего документа.
В процедуре ДобавитьКомандыПечати модуля менеджера для каждой команды можно управлять очередностью при помощи свойства Порядок структуры параметров команды:
// В процедуре ДобавитьКомандыПечати модуля менеджера документа
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СчетФактура";
КомандаПечати.Представление = НСтр("ru = 'Счет-фактура'");
КомандаПечати.Порядок = 10;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ТОРГ12";
КомандаПечати.Представление = НСтр("ru = 'ТОРГ-12 (Товарная накладная)'");
КомандаПечати.Порядок = 20;
При первичной инициализации комплекта БСП разместит команды в таблице в соответствии с их числовым весом в реквизите Порядок.
Если для разных контрагентов (например, различных торговых сетей) требуются принципиально разные составы и последовательности пакетов документов, ручной перенастройки перед каждой печатью может быть недостаточно. В таких ситуациях рассмотрим создание отдельного рабочего места (АРМ логиста или оператора отгрузки) либо внешней печатной формы, объединяющей несколько макетов.
В кодовой части обработчика пакетной печати программно формируется массив нужных печатных форм в строго определенном порядке:
// Пример программного формирования пакета в требуемом порядке
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("СчетФактура,ТОРГ12,СправкаТТН");
// Формирование каждой печатной формы в нужной очередности
ПечатьСчетовФактур(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ПечатьТОРГ12(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ПечатьСопроводительныхДокументов(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
// Вывод сформированной коллекции в итоговый пакет
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбъектыПечати);
Такой подход позволяет дополнительно привязать состав и порядок печатаемых форм к договору или дополнительному реквизиту контрагента, полностью исключив влияние человеческого фактора при комплектации документов для отгрузки.
Выясним особенности и возможные подводные камни при эксплуатации пакетной печати:
ПечатьПоКомплектно. В этом случае принтер выдаст сначала полный сформированный набор для первой накладной (в установленном порядке), а затем перейдет ко второй. При отключенном режиме сначала распечатаются первые формы всех накладных, затем вторые, что нарушит целостность комплектов.НастройкиПечатиОбъектов для конкретного пользователя. При изменении идентификаторов команд настройки комплекта могут сбрасываться до значений по умолчанию.