О решении.
Доработка позволяет печатать установленный перечь печатных форм документа одним нажатием мыши. Также имеется функция выводить печатные формы в одном окне, чтобы не переключаться между несколькими окнами.
Функция доступна из окна выбора комплекта печати. Галочка «На один документ». В этом окне будут выведенны все печатные формы комплекта в установленном количестве экземпляров.
Механизм позволяет печатать как встроенные, так и внешние печатные формы, а также встроенные формы, подмененные внешними.
Решение отлажено на УТ 10.3 (10.3.29.1) платформа 8.3.8.1652.
Предполагаю, что доработка подойдет для многих решений 1С на обычных формах (БП 2.0, ЗП 2,5 и др.) при небольшой подгонке.
Реализация решения.
Сразу хочу отметить, что это ДОРАБОТКА. Соответственно требует включение возможности изменения в конфигурации.
Реализация выполнена с минимальными изменениями типового кода (по мнению автора)!
Для переноса изменений следует перенести изменения из файла публикации в вашу конфигурацию.
Если у вас нет опыта такого рода работы, обратитесь к специалистам.
Затрагиваемы объекты. Привожу для типовых конфигураций, дабы при включении возможности изменения конфигурации не снимать с «замочка» все объекты.
- Общий модуль «РаботаСДиалогами».
- Саму конфигурацию(корневой объект).
Дополнительные объекты.
- Документ, в котором требуется использование комплекта печати.
- Форма документа, в котором требуется использование комплекта печати.
В конфигурацию будут добавлены:
- Общий модуль.
- Справочник.
- Общая форма.
После переноса объектов из файла публикации(cf). Нужно зайти в форму документа, И добавить процедуру.
//+КомплектПечати
Процедура КП_ДействиеКомплектПечати(Элемент)
КП_УправлениеКомплектамиПечати.ОткрытьФормуВыбораПечатныхФормОбъекта(ЭтотОбъект, ЭтаФорма);
КонецПроцедуры
В Модуле объекта документа нужно найти процедуру Печать и внести следующие изменения.
1. В модуль документа в процедуре Печать добавить параметр ТабДок
Было:
Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
Нужно, чтобы стало так:
Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, ТабДок = Ложь) Экспорт
2. Перед строкой вызова печати вставить следующий код:
Было:
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект));
Нужно, чтобы стало так:
//+КомплектыПечати
Если ТабДок Тогда
ТабДок = ТабДокумент;
Возврат;
КонецЕсли;
//-КомплектыПечати
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект));
Как пользоваться.
После всех манипуляций в конфигураторе, если вы все сделали правильно, можно пользоваться доработкой.
1. Заходим в справочник «Комплекты печати» (все функции — справочники). Можно вывести в нужный вам интерфейс.
В нем задаем имя комплекта, выбираем из списка объект назначения (документ). Табличная часть будет автоматически заполнена списком печатных форм выбранного документа. Напротив нужной печатной формы ставим галочку и устанавливаем количество экземпляров. И в завершении в шапке ставим галочку «использовать». Сохраняем и закрываем.
Галочка «использовать» позволяет изымать комплект из списка печати комплектов. Допустим, когда мы корректируем комплект или он уже не актуален.
2. Заходим в документ, который хотим распечатать. Если для документа нет комплектов, кнопки «Печать комплектов» в нем не будет. Она формируется программой в зависимости от наличия используемых комплектов, не помеченных на удаление.
3. В форме документа нажимаем на кнопку «Печать комплекта». Откроется привычное окно с перечнем комплектов печати.
Выбираем нужный и нажимаем «Печать». В зависимости от галочки «На принтер» комплект либо пойдет сразу на печать, либо будет открыт предпросмотр.
Если установлена галочка «На один документ», при предпросмотре все печатные формы одного комплекта будут выведены в одном окне.
Версия 1.2
В версии 1.2 добавлена возможность настраивать порядок печати. Таким образом, при печати комплекта из накладной и акта в двух экземплярах каждой, можно распечатать ни два акта и две накладных, а в любой последовательности. Например чередуя акт и накладную.
На вскидку вижу некоторые недостатки решения.
1) Нельзя использовать такое решение для групповой печати по списку документов!
2) Зачастую имеются простые алгоритмы вычисляющие требуемый комплект, соответственно можно обойтись без Интерактивного выбора текущего комплекта.
Предложения:
А) Для избавления от двухступенчатости выбора ПФ, лучше сделать генерацию списка ПФ с учетом настроенных комплектов. Тогда штатный механизм даст возможность указать выбранный комплект как ПФ по умолчанию.
Б) Зачастую состав комплекта определяется исходными реквизитами документа: Организация; Склад; Контрагент. Данные реквизиты можно внести в Справочник.НастройкиПечатныхКомплектов. Не заполненный реквизит отбора трактуется как прочие. Соответственно, можно выбрать Комплект по наиболее полному совпадению Реквизитов отбора…
P.S. Очень хочу найти программиста 1С, который бы создал Печать Комплекта в качестве внешней ПФ.
При вызове из Механизма печати документа, происходит Печать комплекта. А при Интерактивном вызове, обработка создавала бы настройки Печатных комплектов. Запуск Печати при полном отсутствии Настроек — приводит к Интерактивному запуску Первоначальных настроек.