Автозаполнение шаблона документов

1. Михаил (eaglemw) 15.09.16 11:02 Сейчас в теме
Добрый день

как настроить автообновление шаблона документа, при изменении карточки документа. Часть информации добавляется карточку документа в процессе движения документа. Вариант ручного обновления через "Заполнить файл данными документа" - человеческий фактор, который хотелось бы исключить.
Ответы
2. Алексей Гаврилов (Skromnyi) 10 15.09.16 16:13 Сейчас в теме
Через дополнительные обработчики бизнес-событий
3. Михаил (eaglemw) 15.09.16 16:27 Сейчас в теме
какой код там надо прописать? я все настроил, застопорился на коде.... кто может помочь? просто никто не юзал такую функциональность из знакомых
4. Алексей Гаврилов (Skromnyi) 10 16.09.16 09:56 Сейчас в теме
у меня на 1.4 работает такой код для обработчика: Автоматическое заполнение файлов Внутреннего документа после утверждения
Задача = Событие.Источник;
МассивПредметов = МультипредметностьКлиентСервер.ПолучитьМассивПредметовОбъекта(Задача);
Для Каждого Документ ИЗ МассивПредметов Цикл
	Если ДелопроизводствоКлиентСервер.ЭтоВнутреннийДокумент(Документ) Тогда
		Если  ТипЗнч(Задача.БизнесПроцесс)= Тип("БизнесПроцессСсылка.Утверждение") Тогда
			Запрос = Новый Запрос;
			Запрос.Текст = 
			"ВЫБРАТЬ
			|	РезультатыУтверждения.РезультатУтверждения
			|ИЗ
			|	БизнесПроцесс.Утверждение.РезультатыУтверждения КАК РезультатыУтверждения
			|ГДЕ
			|	РезультатыУтверждения.ЗадачаИсполнителя = &ЗадачаИсполнителя
			|	И РезультатыУтверждения.РезультатУтверждения = &РезультатУтверждения";
			Запрос.УстановитьПараметр("ЗадачаИсполнителя", Задача);
			Запрос.УстановитьПараметр("РезультатУтверждения", Перечисления.РезультатыУтверждения.Утверждено);
			Результат = Запрос.Выполнить();
			Если НЕ Результат.Пустой() Тогда
				КоличествоФайлов = Делопроизводство.КоличествоФайлов(Документ.Ссылка);
				Если КоличествоФайлов > 0 Тогда
					ВсеФайлыДокумента = РаботаСФайламиВызовСервера.ПолучитьВсеПодчиненныеФайлы(Документ.Ссылка, Ложь);
					Для Каждого ТекущийФайл Из ВсеФайлыДокумента Цикл
						СозданИзШаблона = ?(ТекущийФайл.ШаблонОснованиеДляСоздания <> Справочники.Файлы.ПустаяСсылка(), Истина, Ложь);
						Если СозданИзШаблона Тогда 
							ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, ТекущийФайл.Ссылка, Ложь);
							Если ДанныеВыполнения.Результат Тогда
								Комментарий = "Автозаполнение полей файла после утверждения документа";
								АвтозаполнениеШаблоновФайловСервер.ОбновитьВерсиюИзДвоичныхДанных(ДанныеВыполнения.ДвоичныеДанныеЗаполненногоФайла, ТекущийФайл, Комментарий);
							КонецЕсли;	
						КонецЕсли;
					КонецЦикла;   
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецЦикла;
Показать
5. Алексей Гаврилов (Skromnyi) 10 16.09.16 09:57 Сейчас в теме
Подписка на вид события: Выполнение задачи
6. Алексей Гаврилов (Skromnyi) 10 16.09.16 09:58 Сейчас в теме
для обработчика "Автоматическое заполнение файлов Внутреннего документа после согласования" код такой:
Задача = Событие.Источник;
МассивПредметов = МультипредметностьКлиентСервер.ПолучитьМассивПредметовОбъекта(Задача);
Для Каждого Документ ИЗ МассивПредметов Цикл
	Если ДелопроизводствоКлиентСервер.ЭтоВнутреннийДокумент(Документ) Тогда
		Если  ТипЗнч(Задача.БизнесПроцесс)= Тип("БизнесПроцессСсылка.Согласование") Тогда
			Виза = РаботаСВизамиСогласования.ПолучитьАктивнуюВизуПоЗадаче(Документ, Задача);
			Если Виза <> Неопределено  И Виза.РезультатСогласования <> Перечисления.РезультатыСогласования.НеСогласовано Тогда
				КоличествоФайлов = Делопроизводство.КоличествоФайлов(Документ.Ссылка);
				Если КоличествоФайлов > 0 Тогда
					ВсеФайлыДокумента = РаботаСФайламиВызовСервера.ПолучитьВсеПодчиненныеФайлы(Документ.Ссылка, Ложь);
					Для Каждого ТекущийФайл Из ВсеФайлыДокумента Цикл
						СозданИзШаблона = ?(ТекущийФайл.ШаблонОснованиеДляСоздания <> Справочники.Файлы.ПустаяСсылка(), Истина, Ложь);
						Если СозданИзШаблона Тогда 
							ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, ТекущийФайл.Ссылка, Ложь);
							Если ДанныеВыполнения.Результат Тогда
								Комментарий = "Автозаполнение полей файла после согласования документа";
								АвтозаполнениеШаблоновФайловСервер.ОбновитьВерсиюИзДвоичныхДанных(ДанныеВыполнения.ДвоичныеДанныеЗаполненногоФайла, ТекущийФайл, Комментарий);
							КонецЕсли;	
						КонецЕсли;
					КонецЦикла;   
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецЦикла;
Показать
7. Алексей Гаврилов (Skromnyi) 10 16.09.16 10:00 Сейчас в теме
подписка такая-же: Выполнение задачи
8. Алексей Гаврилов (Skromnyi) 10 16.09.16 10:01 Сейчас в теме
ну и уж до кучи обработчик "Автоматическое заполнение файлов Внутреннего документа после регистрации"
Документ = Событие.Источник;
КоличествоФайлов = Делопроизводство.КоличествоФайлов(Документ.Ссылка);
Если КоличествоФайлов > 0 Тогда
	ВсеФайлыДокумента = РаботаСФайламиВызовСервера.ПолучитьВсеПодчиненныеФайлы(Документ.Ссылка, Ложь);
	Для Каждого ТекущийФайл Из ВсеФайлыДокумента Цикл
		СозданИзШаблона = ?(ТекущийФайл.ШаблонОснованиеДляСоздания <> Справочники.Файлы.ПустаяСсылка(), Истина, Ложь);
		Если СозданИзШаблона Тогда 
			ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, ТекущийФайл, Ложь);
			Если ДанныеВыполнения.Результат Тогда
				Комментарий = "Автозаполнение полей файла после регистрации";
				АвтозаполнениеШаблоновФайловСервер.ОбновитьВерсиюИзДвоичныхДанных(ДанныеВыполнения.ДвоичныеДанныеЗаполненногоФайла, ТекущийФайл, Комментарий);
			КонецЕсли;	
		КонецЕсли;
	КонецЦикла;   
КонецЕсли;
Показать


Подписка: Регистрация внутреннего документа
valkovsky; eaglemw; +2 Ответить
9. Алексей Гаврилов (Skromnyi) 10 16.09.16 10:09 Сейчас в теме
Оставьте свое сообщение