Необходимо чтобы внешняя печатная форма Т1 формировалась по приему на работу

1. sajmon45 16.03.21 23:10 Сейчас в теме
Необходимо чтобы внешняя печатная форма Т1 формировалась по приему на работу. Но данная внешняя печатная форма прикреплена к другому документу можно ли заменить МассивОбъектов на нужный. Пытался так, но выдает ошибку (если прикрепить данную ПФ к Приему на работу все работает), что табличный документ не сформирован:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	МассивОбъектовПрием = Новый Массив;
	Сообщить(ОбъектыПечати);
	Для каждого Строка Из МассивОбъектов Цикл
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ДанныеСостоянийСотрудников.ДокументОснование КАК ДокументОснование
		|ИЗ
		|	РегистрСведений.ДанныеСостоянийСотрудников КАК ДанныеСостоянийСотрудников
		|ГДЕ
		|	ТИПЗНАЧЕНИЯ(ДанныеСостоянийСотрудников.Регистратор) = ЗНАЧЕНИЕ(Документ.ПриемНаРаботу)
		|	И ДанныеСостоянийСотрудников.Регистратор.ФизическоеЛицо = &ФизическоеЛицо
		|АВТОУПОРЯДОЧИВАНИЕ";
	
	Запрос.УстановитьПараметр("ФизическоеЛицо", Строка.Ссылка.ФизическоеЛицо);

	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		МассивОбъектовПрием.Добавить(ВыборкаДетальныеЗаписи.ДокументОснование);
	КонецЦикла;
	
КонецЦикла;
		
	БольшойТабДок = Новый ТабличныйДокумент;
	//БольшойТабДок.АвтоМасштаб         = Истина;
	//БольшойТабДок.ОриентацияСтраницы  = ОриентацияСтраницы.Ландшафт;
	БольшойТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ФормаТ1";
	//ПечатьТорговыхДокументов.УстановитьМинимальныеПоляПечати(БольшойТабДок);
	
	Для каждого з из МассивОбъектовПрием цикл
		ТабДокумент = Новый ТабличныйДокумент;
		//ТабДокумент.АвтоМасштаб         = Истина;
		//ТабДокумент.ОриентацияСтраницы  = ОриентацияСтраницы.Ландшафт;
		ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ФормаТ1";
		МаленькийТабДок = ПолучитьТабличныйДокументПриказаТ1(МассивОбъектовПрием, ОбъектыПечати);//ПечатьДокумента(з, ОбъектыПечати, ТабДокумент);
		БольшойТабДок.Вывести(МаленькийТабДок);
	КонецЦикла;	
		
	УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Форма Т-1", "ФормаТ1",
	БольшойТабДок,,
	"ФормаТ1");	
	
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
11. user633533_encantado 11 17.03.21 10:55 Сейчас в теме
(1) Какая связь у приема на работу с тем документом, для которого вы хотите добавить печатную форму ?
2. farron 16.03.21 23:28 Сейчас в теме
Чтобы в массиве объектов был другой документ надо поменять назначение в сведениях о внешней обработки
3. sajmon45 16.03.21 23:33 Сейчас в теме
(2) Я знаю, надо чтоб печатная форма вызывалась не с приема на работу, а с другого документа. Но данные были с ПР!
12. user633533_encantado 11 17.03.21 10:56 Сейчас в теме
(3) Почему вы скрываете, что это за "другой документ" ? :)
4. FatPanzer 17.03.21 00:08 Сейчас в теме
(3) Может во всей программе заменить слова "ПриемНаРаботу" на слова "ДругойДокумент"? Должно помочь. Если не поможет, то попробуйте подумать - зачем вам цикл "Для каждого з" и что такое "з"...
5. emilliya 2 17.03.21 04:42 Сейчас в теме
В конфигураторе в внешней форме должен быть реквизит,
с типом документссылка.
Нужно посмотреть - на какой документ он ссылается и добавить, если нужно, ДокументСсылка.приемнаработу, типа этого

В пользовательском интерфейсе нужно войти редактирование печатной формы и добавить док Прием на работу в таблице Принадлежность печатной формы
7. Ul_developer 17.03.21 07:18 Сейчас в теме
(5)Реквизит нужен только на неуправляемых формах, если мне не изменяет память. А менять принадлежность печатной формы в пользовательском интерфейсе не самая лучшая идея, так как потом другому разработчику посмотрев на сведенья о внешней обработке будет не очевидно что она будет печататься еще из каких то документов.
6. Ul_developer 17.03.21 07:15 Сейчас в теме
Добавьте в Сведеньях документ из которого хотите печатать по мимо приема. А данные для печати собирайте по приему сотрудника на которого печатаете, сотрудника естественно надо получать из документа откуда вызывается печатка.
8. Ul_developer 17.03.21 07:21 Сейчас в теме
Согласен с замечанием по циклу заполняете ТабличныйДокумент в цикле но сразу по всему массиву, довольно странное решение.
9. Dmitry888 42 17.03.21 10:45 Сейчас в теме
Стесняюсь спросить а какая это база и ее релиз? У меня есть обработки которые формируют печатные формы в ворд берущие данные из документа приема.
10. user633533_encantado 11 17.03.21 10:54 Сейчас в теме
(9) а у меня есть обработка, которая загружает данные из другой базы :) И то и другое не связано с вопросом.
13. sajmon45 17.03.21 11:17 Сейчас в теме
(12) Документ ПродлениеКонтрактаДоговора
14. user633533_encantado 11 17.03.21 11:28 Сейчас в теме
(13) Меняете во внешней обработке объект назначения на этот документ.
В процедуре печати у вас есть массив объектов с со ссылками на эти документы.
Несложным запросом к бд переопределяете этот массив на приемы на работу по сотрудникам из продлений.

Дальше обработка печатает ваш документ и все.
15. sajmon45 17.03.21 11:32 Сейчас в теме
(14) А мой код не правильный? Можете написать, пожалуйста, пример?
16. user633533_encantado 11 17.03.21 15:23 Сейчас в теме
(15) Ваш код может конечно сработать, хоть он и кривой. Зависит от того, формирует ли "ПолучитьТабличныйДокументПриказаТ1" табличный документ.
Оставьте свое сообщение

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