Как настроить отбор и условия применения для внешней печатной формы в ЗУП 3.1

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При переходе с конфигурации «Зарплата и управление персоналом» редакции 2.5 на редакцию 3.1 разработчики часто сталкиваются с изменением архитектуры печатных форм. В ЗУП 2.5 существовал удобный штатный механизм настройки принадлежности внешней печатной формы, где в режиме «Предприятие» можно было задать отбор по конкретным организациям, подразделениям или занимаемым ставкам.

В ЗУП 3.1 подсистема «Дополнительные отчеты и обработки» Библиотеки стандартных подсистем (БСП) устроена иначе. Встроенного пользовательского конструктора условий применения для внешних печатных форм (ВПФ) здесь не предусмотрено. Проанализируем, как решить эту задачу в современной конфигурации и какие технические подходы существуют.

Способ 1. Программная проверка реквизитов в процедуре «Печать»

Рассмотрим самый простой способ ограничения. Если логика выбора макета зависит от реквизитов объекта (например, организации или подразделения), мы можем проверить передаваемый массив ссылок непосредственно в модуле объекта внешней печатной формы.

Разберем пример кода экспортной процедуры Печать в модуле объекта ВПФ:


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПечататьЛицСторону") Тогда
		
		// Выполняем проверку реквизитов первого элемента или всех элементов массива
		// В зависимости от организации или других параметров формируем нужный макет
		ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати);
		
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм, 
			"ПечататьЛицСторону", 
			"Печатать лиц. сторону", 
			ТабличныйДокумент
		);
		
	КонецЕсли;
	
КонецПроцедура

Внутри функции формирования печатной формы мы запрашиваем реквизиты объекта (например, Ссылка.Организация) и в зависимости от их значений подключаем тот или иной макет Word или MXL. Если печатная форма не должна выводиться для выбранной организации, можно выдать информационное сообщение пользователю или сгенерировать пустой документ с предупреждением.

Способ 2. Регистрация нескольких команд печати в одной ВПФ

Выясним, как разделить варианты печати прямо в меню кнопки «Печать». В подсистеме БСП одна внешняя обработка может регистрировать сразу несколько команд печати. Каждая команда получает собственный идентификатор и представление.

Посмотрим на пример заполнения параметров регистрации в функции СведенияОВнешнейОбработке:


// Добавление нескольких команд печати при регистрации ВПФ
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Договор (Организация А)'");
НоваяКоманда.Идентификатор = "ПечатьДоговорОргА";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.Модификатор = "ПечатьMXL";

НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Договор (Организация Б)'");
НоваяКоманда.Идентификатор = "ПечатьДоговорОргБ";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.Модификатор = "ПечатьMXL";

В процедуре Печать мы проверяем, какой именно идентификатор команды был вызван с помощью метода УправлениеПечатью.НужноПечататьМакет(), и выводим соответствующий шаблон.

Способ 3. Динамическое скрытие команд через Расширение конфигурации

Если требуется, чтобы пункты меню печати автоматически скрывались в форме документа для тех организаций, к которым они не относятся, возможностей одной только ВПФ будет недостаточно. Метод БСП УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды() работает только для команд, зафиксированных в модулях менеджеров объектов.

Чтобы реализовать точечное скрытие команд без изменения основной конфигурации, примените расширение:

  1. Создайте новое расширение конфигурации.
  2. Добавьте в расширение модуль менеджера нужного документа или справочника (например, Справочник.Сотрудники).
  3. Перехватите процедуру ДобавитьКомандыПечати(КомандыПечати) с помощью аннотации &НаПоследование.
  4. В процедуре вызывайте метод управления видимостью:

&НаПоследование("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати)
	
	// Находим нужную команду по идентификатору
	КомандаПечати = УправлениеПечатью.НайтиКоманду(КомандыПечати, "МояПечатнаяФорма");
	Если КомандаПечати <> Неопределено Тогда
		// Указываем условие: команда видна только для определенной организации
		УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "Организация", НужнаяОрганизация);
	КонецЕсли;
	
КонецПроцедура

Способ 4. Архитектура с хранением макетов в базе данных (для крупной структуры)

Проанализируем ситуацию, когда в базе ведут учет десятки юридических лиц (90+) и множество обособленных подразделений. Написывать ветвления Если ... ИначеЕсли в коде обработки или создавать сотни отдельных команд печати становится крайне затруднительно.

В таких случаях рекомендуется следующая архитектура:

  1. Шаблоны документов Word (файлы .docx) хранятся непосредственно в информационной базе (например, в справочнике или регистре сведений).
  2. В базе создается регистр соответствий, где каждой комбинации условий (Организация + Подразделение + Должность) сопоставляется конкретный файл шаблона.
  3. Единая внешняя печатная форма при вызове считывает реквизиты объекта печати, находит в регистре соответствующий файл Word из базы данных и заполняет его параметрами.

Этот подход позволяет добавлять новые печатные формы и менять шаблоны договоров для новых организаций прямо в режиме «1С:Предприятие» без привлечения программиста и без правки кода ВПФ.

Способ 5. Штатный механизм «Макеты печатных форм»

Не забывайте о штатных возможностях ЗУП 3.1. Для добавления пользовательских печатных форм Word часто вообще не требуется писать внешние обработки.

Перейдите в раздел Администрирование -> Печатные формы, отчеты и обработки -> Макеты печатных форм. Для большинства кадровых документов и справочника «Сотрудники» можно создавать новые макеты формата Office Open XML (.docx), перетаскивая доступные реквизиты объекта. Настройка их видимости и переименование производятся прямо в пользовательском интерфейсе.

← На главную