Отключить из меню Печать лишние внешние печатные формы.

1. user950703 20.11.23 11:12 Сейчас в теме
Доброе время суток, уважаемые.

Задача такая.
Требуется обеспечить возможность деактивировать некоторые внешние печатные формы, подключенные к меню Печать документа, исходя из значений реквизитов документа.

Например, разработанную пользовательскую форму приказа о приеме на работу на период отсутствия другого сотрудника (например, в декрете) в ЗУП 3.1 хотелось бы отключать при отсутствии флажка Срочный трудовой договор и значения поле Основания заключения трудовых договоров не равному "На время исполнения обязанностей отсутствующего работника, за которым сохраняется место работы");

С уважением.
По теме из базы знаний
Найденные решения
7. VmvLer 20.11.23 17:05 Сейчас в теме
(1) можно, если очень хочется

// ОбщийМодуль.УправлениеПечатью - расширение


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



код выше, по логике, "выключал" печатные формы по ИП/Юрикам, т.е. для ИП свой набор, для Юриков свой. В списках тоже работает, хоть встроенные формы, хоть добавленные.
Если выделили одновременно доки по ИП/Юр не помню, но никто не жаловался)

Условия на свои поля можете обернуть в свой метод при вызове типового.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Vinzor 107 20.11.23 11:47 Сейчас в теме
(1) Сложно это.
Проще делать проверку объекта и не выводить форму по указанным причинам. С выводом (в сообщение или предупреждение) причин невывода формы.
А саму команду прятать - зачем такие сложности?

Еще совет. У себя я сделал (с заказчиком) такую универсальную печатную форму, которая учитывает эти факторы (заключение временного договора на время отсутствия основного сотрудника) и делает нужные формулировки.
Иначе "обычный вариант" для бессрочного договора.
3. glek 120 20.11.23 11:59 Сейчас в теме
(1) Не советую. Да и не по феншую: как будет вести себя кнопка, если по одному документу должна быть, а по другому нет и выделены в списке оба документа. Рекомендую сделать как сказал (2)
4. newlogin1 20.11.23 15:35 Сейчас в теме
(1)Вообще в типовом механизме, стандартные ПФ (которые через модуль менеджера подключаются) есть возможность управления доступностью ПФ по значениям реквизитов
5. user950703 20.11.23 15:39 Сейчас в теме
(3)
(4) Вот это интересный вариант. Но только там стандартные встроенные ПФ. А через какой механизм подключаются внешние ПФ?
6. newlogin1 20.11.23 16:24 Сейчас в теме
(5)Внешние без проблем во внутренние переделываются при помощи расширения.
7. VmvLer 20.11.23 17:05 Сейчас в теме
(1) можно, если очень хочется

// ОбщийМодуль.УправлениеПечатью - расширение


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



код выше, по логике, "выключал" печатные формы по ИП/Юрикам, т.е. для ИП свой набор, для Юриков свой. В списках тоже работает, хоть встроенные формы, хоть добавленные.
Если выделили одновременно доки по ИП/Юр не помню, но никто не жаловался)

Условия на свои поля можете обернуть в свой метод при вызове типового.
8. user950703 22.11.23 10:21 Сейчас в теме
(6)
(7)Спасибо, то, что надо
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот