Как создать прикрепленный к документу файл из шаблона программно

1. antipod13 25.02.20 07:56 Сейчас в теме
Тема повторная, https://forum.infostart.ru/forum64/topic235096/
Записал возникший вопрос в ней, никто что то не отвечает.
Вопрос такой, как создать прикрепленный к исходящему документу вордовский файл и заполнить его? Из первого поста получается, что надо просто скопировать шаблон в документ, а потом заполнить его процедурой из поста, что то у меня не получается.
По теме из базы знаний
Найденные решения
2. CyberBob 4 26.02.20 04:28 Сейчас в теме
(1)Ну дык нужно создать шаблон исходящего документа (интерактивно), в нем создать соответствующий шаблон файла с нужными вам правилами автозаполнения, а потом уже это всё можно получать и заполнять программно. Т.е. вы программно создаете исходящий документ по соответствующему шаблону, а там уже есть файл шаблона, с настроенными правилами заполнения их остается только программно "дёрнуть". Ну как-то вот так:
	
        ДанныеЗаполнения = Новый Структура;
	ШаблонДокумента = Справочники.ШаблоныИсходящихДокументов.НайтиПоНаименованию("ШаблонТакойто",Истина);
	ДанныеЗаполнения.Вставить("ШаблонДокумента", ШаблонДокумента);
	ИсхоядщееУведомление = Справочники.ИсходящиеДокументы.СоздатьЭлемент();
	ИсхоядщееУведомление.Заполнить(ДанныеЗаполнения);
	ШаблоныДокументов.ЗаполнитьРеквизитыДокументаПоШаблону(ШаблонДокумента, ИсхоядщееУведомление);
	ШаблоныДокументов.ЗаполнитьФайлыДокументаПоШаблону(ШаблонДокумента,ТаблицаФайлов,Ложь);
Показать
unclevad; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. CyberBob 4 26.02.20 04:28 Сейчас в теме
(1)Ну дык нужно создать шаблон исходящего документа (интерактивно), в нем создать соответствующий шаблон файла с нужными вам правилами автозаполнения, а потом уже это всё можно получать и заполнять программно. Т.е. вы программно создаете исходящий документ по соответствующему шаблону, а там уже есть файл шаблона, с настроенными правилами заполнения их остается только программно "дёрнуть". Ну как-то вот так:
	
        ДанныеЗаполнения = Новый Структура;
	ШаблонДокумента = Справочники.ШаблоныИсходящихДокументов.НайтиПоНаименованию("ШаблонТакойто",Истина);
	ДанныеЗаполнения.Вставить("ШаблонДокумента", ШаблонДокумента);
	ИсхоядщееУведомление = Справочники.ИсходящиеДокументы.СоздатьЭлемент();
	ИсхоядщееУведомление.Заполнить(ДанныеЗаполнения);
	ШаблоныДокументов.ЗаполнитьРеквизитыДокументаПоШаблону(ШаблонДокумента, ИсхоядщееУведомление);
	ШаблоныДокументов.ЗаполнитьФайлыДокументаПоШаблону(ШаблонДокумента,ТаблицаФайлов,Ложь);
Показать
unclevad; +1 Ответить
3. antipod13 26.02.20 04:37 Сейчас в теме
(2)YНе не то, я наверно не так написал. Не исходящий документ по шаблону. Нужно прикрепленный файл создать, у меня в шаблоне документа два настроенных шаблона вордовских файлов, вот из этих фалов нужно автоматом создать прикрепленные, заполненные файлы
4. CyberBob 4 26.02.20 05:03 Сейчас в теме
(3)А сам исходящий документ интерактивно создается? Тогда в какой момент нужно файлы заполнять?
5. antipod13 26.02.20 05:19 Сейчас в теме
(4)И документ создается, и файлы интерактивно создаются и заролняются, если подробно, мне нужно прикрепить к исходящему документу и отправить по почте файл в момент согласование задачи, по завершению процесса согласования. С почтой я разберусь, а вот создать запоненный файл не знаю как.
6. CyberBob 4 26.02.20 07:02 Сейчас в теме
(5)Ну вот честно, не вижу проблема в чем. Документ создали по шаблону, к шаблону прикреплен файл с настройкой автозаполнения. Дальше можно например организовать шаблон процесса схемой и после согласования вставить блок программной обработки, в которой запускается код, который я в предыдущей теме приводил.
Документ = Процесс.Предметы[0].Предмет; // предполагается что документ один, если нет то нужно перебирать.

КоличествоФайлов = Делопроизводство.КоличествоФайлов(Документ.Ссылка);
                Если КоличествоФайлов > 0 Тогда
                    ВсеФайлыДокумента = РаботаСФайламиВызовСервера.ПолучитьВсеПодчиненныеФайлы(Документ.Ссылка, Ложь);
                    Для Каждого ТекущийФайл Из ВсеФайлыДокумента Цикл
                        СозданИзШаблона = ?(ТекущийФайл.ШаблонОснованиеДляСоздания <> Справочники.Файлы.ПустаяСсылка(), Истина, Ложь);
                        Если СозданИзШаблона Тогда 
                            ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, ТекущийФайл.Ссылка, Ложь);
                             Если ДанныеВыполнения.Результат Тогда
                                Комментарий = "Автозаполнение полей файла после утверждения документа";
                                АвтозаполнениеШаблоновФайловСервер.ОбновитьВерсиюИзДвоичныхДанных(ДанныеВыполнения.ДвоичныеДанныеЗаполненногоФайла, ТекущийФайл, Комментарий);
                            КонецЕсли;
                        КонецЕсли;
                    КонецЦикла;        
				КонецЕсли;
Показать
7. antipod13 26.02.20 07:08 Сейчас в теме
(6)ну или я чего не понимаю
ВсеФайлыДокумента = РаботаСФайламиВызовСервера.ПолучитьВсеПодчиненныеФайлы(Документ.Ссылка, Ложь);

Эта строка вернет список прикрепленных файлов, но файла еще нет в этот момент, его нужно добавить из шаблона документа и заполнить реквизитами автозаполнения документа, разве не так?
8. CyberBob 4 26.02.20 07:22 Сейчас в теме
(7)Но вы же уже документ по шаблону создали, а шаблон файла должен быть к шаблону документа прикреплен, разве нет? А иначе как правила автозаполнения рисовать?
10. antipod13 26.02.20 07:52 Сейчас в теме
(8)У меня сложнее исходящий документ создается программно при регистрации входящего, файлов в нем нет, да и потом - они нужны только по завершению заполнения реквизитов исходящего документа, а правила автозаполнения рисуются без единого исходящего документа, только на основании реквизитов шабона, разве нет?
13. antipod13 26.02.20 14:45 Сейчас в теме
(6)Сделал по другому, я скопировал шаблон файла в файла документа, назначил ему признак что он из шаблона, и запустил ваши процедуры, почти получилось, не сработала последняя, обновление заполненного файла.
ВременныйФайл = ПолучитьИмяВременногоФайла(ВерсияСсылка.Расширение);

вот на этой строке, откудато взялась переменная версия ссылка, ее в параметрах процедуры нет
14. antipod13 26.02.20 15:30 Сейчас в теме
(2)Все получилось разобрался, с итоге копирование шаблона, присвоение новому файлу ссылки на шаблон, и предложенные процедуры
seorunet; Elvina; +2 Ответить
16. IvanSem 22.06.20 12:22 Сейчас в теме
ШаблоныДокументов.ЗаполнитьФайлыДокументаПоШаблону(ШаблонДокумента,ТаблицаФайлов,Ложь);

(2)
ТаблицаФайлов

Подскажите как таблицу файлов вытащить?
18. CyberBob 4 23.06.20 04:28 Сейчас в теме
(16)Это же из общего модуля процедура:
// Заполняет файлы документа по шаблону, при необходимости удаляя файлы других шаблонов.
//
// Параметры:
//   Шаблон - СправочникСсылка.ШаблоныВнутреннихДокументов,
//            СправочникСсылка.ШаблоныВходящихДокументов,
//            СправочникСсылка.ШаблоныИсходящихДокументов - источник данных заполнения.
//   Файлы - ТаблицаЗначений, ДанныеФормыКоллекция - заполняемый список файлов:
//     Наименование - Строка.
//     Расширение - Строка.
//     ПолныйПуть - Строка.
//     ИндексКартинки - Число.
//     ШаблонОснованиеДляСоздания - СправочникСсылка.Файлы.
//     ДобавленИзШаблона - Булево.
//   УдалятьФайлыИзДругогоШаблона - Булево - Истина, если требуется заместить файлы
//     других шаблонов.
//
Процедура ЗаполнитьФайлыДокументаПоШаблону(Шаблон, Файлы, УдалятьФайлыИзДругогоШаблона) Экспорт
Показать

Т.е. эту таблицу нужно сформировать и передать в процедуру. Если нужен конкретно работающий пример, то вот я в комплексном процессе оформленном схемой в блоке программной обработки сделал так:
Документ = Процесс.Предметы[0].Предмет;

КоличествоФайлов = Делопроизводство.КоличествоФайлов(Документ.Ссылка);
                Если КоличествоФайлов > 0 Тогда
                    ВсеФайлыДокумента = РаботаСФайламиВызовСервера.ПолучитьВсеПодчиненныеФайлы(Документ.Ссылка, Ложь);
                    Для Каждого ТекущийФайл Из ВсеФайлыДокумента Цикл
                        СозданИзШаблона = ?(ТекущийФайл.ШаблонОснованиеДляСоздания <> Справочники.Файлы.ПустаяСсылка(), Истина, Ложь);
                        Если СозданИзШаблона Тогда 
                            ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, ТекущийФайл.Ссылка, Ложь);
                             Если ДанныеВыполнения.Результат Тогда
                                Комментарий = "Автозаполнение полей файла после утверждения документа";
                                АвтозаполнениеШаблоновФайловСервер.ОбновитьВерсиюИзДвоичныхДанных(ДанныеВыполнения.ДвоичныеДанныеЗаполненногоФайла, ТекущийФайл, Комментарий);
                            КонецЕсли;
                        КонецЕсли;
                    КонецЦикла;        
				КонецЕсли;
Показать
19. IvanSem 28.06.20 19:05 Сейчас в теме
А как новый файл создать по шаблону?
21. Elvina 5 10.09.20 15:14 Сейчас в теме
(18) Подскажите, делаю всё так же, казалось, что всё получилось, обрадовалась... Потом выяснилось, что к текущему документу прикрепляется файл, заполненный по данным предыдущего документа. И так все последующие(((
Пол дня сижу и не пойму в чём дело((( Отладчиком смотрю, ссылки везде правильные, владелец правильный, от предыдущего документа нигде никакая информация не передаётся!

ТекущийФайл = ШаблонФайла.Скопировать();
ТекущийФайл = Справочники.Файлы.СоздатьФайл();
ТекущийФайл.ВладелецФайла = НовСЗ.Ссылка;  //ссылка на созданный внутренний документ (записан)
ТекущийФайл.ДатаСоздания = ТекущаяДата();
ТекущийФайл.ШаблонОснованиеДляСоздания = ШаблонФайла.Ссылка;
ТекущийФайл.Автор = ПараметрыСеанса.ТекущийПользователь;
ТекущийФайл.Записать();
				
ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, ТекущийФайл.Ссылка, Ложь);
Если ДанныеВыполнения.Результат Тогда
Комментарий = "Создан автоматически обработкой";
АвтозаполнениеШаблоновФайловСервер.ОбновитьВерсиюИзДвоичныхДанных(ДанныеВыполнения.ДвоичныеДанныеЗаполненногоФайла, ТекущийФайл.Ссылка, Комментарий);
КонецЕсли;
Показать
22. Elvina 5 10.09.20 15:24 Сейчас в теме
(21)"создатьфайл" - этой строки нет! не могу отредактировать сообщение((
это уже другие способы начала выдумывать... закомментирована у меня эта строка.
23. CyberBob 4 11.09.20 04:41 Сейчас в теме
(22)А "ШаблонФайла" это что?
24. Elvina 5 11.09.20 07:35 Сейчас в теме
(23)Это шаблон файла, у которого настроено автозаполнение полей.
Получилось, что заполнялся почему-то шаблон, а не сам файл. После всех этих строк ещё раз скопировала шаблон в файл и файл теперь выглядит так как надо, но в процедуры заполнения ссылку то я передаю на файл, а не на его шаблон, почему заполняется сам шаблон мне непонятно...
9. antipod13 26.02.20 07:51 Сейчас в теме
(7)У меня сложнее исходящий документ создается программно при регистрации входящего, файлов в нем нет, да и потом - они нужны только по завершению заполнения реквизитов исходящего документа, а правила автозаполнения рисуются без единого исходящего документа, только на основании реквизитов шабона, разве нет?
11. CyberBob 4 26.02.20 09:22 Сейчас в теме
(9)А зачем усложнять? Ну прикрепите шаблон файла для заполнения к шаблону исходящего документа и всё. Создавайте программно по шаблону исходящий документ и у него уже будет прикреплен файл для заполнения. Сам файл можете программно заполнять когда будет нужно.
12. antipod13 26.02.20 10:04 Сейчас в теме
(11)В том то и дело, что шаблонов два и какаой именно нужен определяется реквизитом в документе, допреквизитом если точно, мне как то не нужно все два файла цеплять к документу.
15. vasim 21.05.20 10:37 Сейчас в теме
Сейчас та же самая задача стоит. Создаю внутренний документ программно по шаблону документа с файлом, но файл не создается
В итоге как решили, можете пример прислать
17. IvanSem 22.06.20 16:55 Сейчас в теме
(15) Удалось решить проблему с файлом? Как добавили файл по шаблону
20. vasim 06.07.20 16:07 Сейчас в теме
Процедура СоздатьФайлШаблонДоговораВоВнутреннийДокумент(ДокОбъект,ШаблонДокумента,КонтрагентНайден) 
	
	Автор = Справочники.Пользователи.ПолучитьСсылку(Новый УникальныйИдентификатор("a6ab1e14-1fb8-11e9-9936-3860779ba2a2"));
	НаименованиеФайла = УдалениеЗапрещенныхСимволовИзНаименования(ДокОбъект.Заголовок);
	//Скопируем файл 
	
	ПодчиненныеФайлы = РаботаСФайламиВызовСервера.ПолучитьВсеПодчиненныеФайлы(ШаблонДокумента, Ложь);
	ДанныеФайла = РаботаСФайламиВызовСервера.ДанныеФайла(ПодчиненныеФайлы);
	Если ДанныеФайла.Количество()=0 Тогда
		Возврат;
	Иначе
		ДанныеФайла = ДанныеФайла[0];
	КонецЕсли;	
	РазмерФайла = ДанныеФайла.Размер;
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	ВерсииФайлов.ФайлХранилище,
	|	ВерсииФайлов.ПутьКФайлу,
	|	ВерсииФайлов.ДатаСоздания,
	|	ВерсииФайлов.ДатаМодификацииФайла,
	|	ВерсииФайлов.Ссылка,
	|	ХранимыеФайлыВерсий.ХранимыйФайл
	|ИЗ
	|	Справочник.ВерсииФайлов КАК ВерсииФайлов
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХранимыеФайлыВерсий КАК ХранимыеФайлыВерсий
	|		ПО ХранимыеФайлыВерсий.ВерсияФайла = ВерсииФайлов.Ссылка
	|ГДЕ
	|	ВерсииФайлов.Владелец = &Владелец
	|
	|УПОРЯДОЧИТЬ ПО
	|	ВерсииФайлов.ДатаСоздания УБЫВ";
	
	Запрос.УстановитьПараметр("Владелец",ДанныеФайла.Ссылка);
	ВыборкаРезультата = Запрос.Выполнить().Выбрать();
	Пока  ВыборкаРезультата.Следующий() Цикл
		ФайлХранилище =  ВыборкаРезультата.ФайлХранилище;
		ХранимыйФайл  =  ВыборкаРезультата.ХранимыйФайл;
		Прервать;
	КонецЦикла;	
	
	НовыйФайл						= ДанныеФайла.Ссылка.Скопировать();
	НовыйФайл.Наименование 			= НаименованиеФайла;
	НовыйФайл.ПолноеНаименование 	= НаименованиеФайла;
	НовыйФайл.ДатаСоздания 			= ТекущаяДата();
	НовыйФайл.Автор 				= Автор;
	НовыйФайл.ВладелецФайла			= ДокОбъект.Ссылка;
	НовыйФайл.ШаблонОснованиеДляСоздания =  ДанныеФайла.Ссылка;
	
	НовыйФайл.Записать();
	
	//
	НоваяВерсияФайла 					= Справочники.ВерсииФайлов.СоздатьЭлемент();
	НоваяВерсияФайла.Владелец 			= НовыйФайл.Ссылка;
	НоваяВерсияФайла.ФайлХранилище 		= ФайлХранилище;
	НоваяВерсияФайла.Автор 				= Автор;
	НоваяВерсияФайла.ДатаСоздания 		= ТекущаяДата();
	НоваяВерсияФайла.ДатаМодификацииУниверсальная = ТекущаяДата();
	НоваяВерсияФайла.ДатаМодификацииФайла = ТекущаяДата();
	НоваяВерсияФайла.Наименование 		= НаименованиеФайла;
	НоваяВерсияФайла.НомерВерсии		= 1;
	НоваяВерсияФайла.Расширение 		= ДанныеФайла.Расширение;
	НоваяВерсияФайла.Размер 			= РазмерФайла;
	НоваяВерсияФайла.ТипХраненияФайла	=Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;
	НоваяВерсияФайла.СтатусРаспознаванияТекста = Перечисления.СтатусыРаспознаванияТекста.НеНужноРаспознавать;
	НоваяВерсияФайла.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.Извлечен;
	НоваяВерсияФайла.Записать();
	//
	НовыйФайл 							= НовыйФайл.Ссылка.ПолучитьОбъект();
	НовыйФайл.ТекущаяВерсия 			= НоваяВерсияФайла.Ссылка;
	НовыйФайл.ТекущаяВерсияДатаМодификацииФайла = ТекущаяДата();
	НовыйФайл.ТекущаяВерсияАвтор 		= Автор;
	НовыйФайл.ТекущаяВерсияДатаСоздания = ТекущаяДата();
	НовыйФайл.ТекущаяВерсияНомерВерсии 	= 1;
	НовыйФайл.ТекущаяВерсияРазмер 		= РазмерФайла;
	НовыйФайл.ТекущаяВерсияРасширение 	= ДанныеФайла.Расширение;
	НовыйФайл.Записать();
	
	МенеджерЗаписи = РегистрыСведений.ХранимыеФайлыВерсий.СоздатьМенеджерЗаписи();
	МенеджерЗаписи.ВерсияФайла   = НоваяВерсияФайла.Ссылка;
	МенеджерЗаписи.ХранимыйФайл  = ХранимыйФайл;
	МенеджерЗаписи.Записать();
	
	Если КонтрагентНайден Тогда
		ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, НовыйФайл.Ссылка, Ложь);
		Если ДанныеВыполнения.Результат Тогда
			Комментарий = "Автозаполнение полей файла";
			АвтозаполнениеШаблоновФайловСервер.ОбновитьВерсиюИзДвоичныхДанных(ДанныеВыполнения.ДвоичныеДанныеЗаполненногоФайла, НовыйФайл.Ссылка, Комментарий);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры
Показать
25. seorunet 13.07.22 07:03 Сейчас в теме
Мое решение, если кому понадобится. Данный код создаст все файлы из шаблона:
ТаблицаФайлы = Новый ТаблицаЗначений;
ТаблицаФайлы.Колонки.Добавить("Наименование");
ТаблицаФайлы.Колонки.Добавить("Расширение");
ТаблицаФайлы.Колонки.Добавить("ПолныйПуть");
ТаблицаФайлы.Колонки.Добавить("ИндексКартинки");
ТаблицаФайлы.Колонки.Добавить("ШаблонОснованиеДляСоздания");
ТаблицаФайлы.Колонки.Добавить("ДобавленИзШаблона");
ШаблоныДокументов.ЗаполнитьФайлыДокументаПоШаблону(ШаблонДокумента, ТаблицаФайлы, Ложь);

Для Каждого СтрокаФайл Из ТаблицаФайлы Цикл
	ФайлОбъект = СтрокаФайл.ШаблонОснованиеДляСоздания.Скопировать();
	ФайлОбъект.ШаблонОснованиеДляСоздания = СтрокаФайл.ШаблонОснованиеДляСоздания;
	ФайлОбъект.ВладелецФайла = ДокументСсылка;
	ФайлОбъект.Записать();

	//При необходимости автозаполнения раскомментировать
	//АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Ложь, ФайлОбъект.Ссылка, Истина);
КонецЦикла;
Показать
vtrof08; SashinPapa; +2 Ответить
26. luda33 29.05.23 15:51 Сейчас в теме
(25) При этом коде файл вложение в документе не новый, а сам шаблон. те при заполнении файла во внутреннем документе портиться общий шаблон. Впрочем не заполняется он то же. пишет проверьте правильность установки ворда и предлагает открыть файл в безопасном режиме. что то там сильно портиться. Не дорабатывали код? Так осилить и не могу создание файла.
27. SemandCheb 29.06.23 15:02 Сейчас в теме
(26)
Можно попробовать следующий код

// контекст исполнения: НаСервере ФормаОбъекта Справочника: Внутренние/Исходящие

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|	Файлы.Ссылка КАК Ссылка,
|	Файлы.Наименование КАК ТекущаяВерсияПутьКФайлу,
|	Файлы.ВладелецФайла КАК ТекущаяВерсияТом
|ИЗ
|	Справочник.Файлы КАК Файлы....."

РезультатЗапросаВыборкиШаблона = Запрос.Выполнить();
Если  РезультатЗапросаВыборкиШаблона.Пустой() Тогда
	Сообщить("Не смогли найти шаблоны для заполнения файлов!");
	Возврат;
КонецЕсли;

Выборка = РезультатЗапросаВыборкиШаблона.Выбрать();
Пока Выборка.Следующий() Цикл
	СсылкаНаШаблонФайла = Выборка.Ссылка;
КонецЦикла;

ПутьКШаблону = ФайловыеФункции.ПолныйПутьТома(СсылкаНаШаблонФайла.ТекущаяВерсияТом) + СсылкаНаШаблонФайла.ТекущаяВерсияПутьКФайлу;
Если НЕ ЗначениеЗаполнено(ПутьКШаблону) Тогда
	Сообщить("Не смогли определить путь к файлу шаблона заполнения для Шаблона="+Строка(СсылкаНаШаблонФайла));
	Возврат;
КонецЕсли;

ИмяНовогоФайла = Лев(Объект.Наименование, 120)+"_"+Формат(ТекущаяДатаСеанса(), "ДФ=yyyy.MM.dd_hh.mm");
ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКШаблону);
АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, Новый УникальныйИдентификатор);

ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.Автор = Пользователи.АвторизованныйПользователь();
ПараметрыФайла.ВладелецФайлов = Объект.Ссылка;	// контекст исполнения: НаСервере ФормаОбъекта
ПараметрыФайла.ИмяБезРасширения = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяНовогоФайла, "");
ПараметрыФайла.РасширениеБезТочки = СсылкаНаШаблонФайла.ТекущаяВерсияРасширение;
ПараметрыФайла.ВремяИзмененияУниверсальное = ТекущаяУниверсальнаяДата();

СсылкаНаФайл = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресФайлаВоВременномХранилище);

ТекущийФайл = СсылкаНаФайл.ПолучитьОбъект();
ТекущийФайл.ШаблонОснованиеДляСоздания = СсылкаНаШаблонФайла;
ТекущийФайл.Записать();

ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, ТекущийФайл.Ссылка, Ложь);
Если ДанныеВыполнения.Результат Тогда
	Сообщить("Успешно добавлен файл по шаблону="+Строка(СсылкаНаШаблонФайла));
КонецЕсли;

Показать
30. ketr 128 02.08.24 14:59 Сейчас в теме
(26) нужно еще очищать текущую версию файла, так как при копировании - она тоже копируется от шаблона
и именно поэтому потом при автозаполнении шаблон портится
31. ketr 128 02.08.24 15:32 Сейчас в теме
(30) точнее даже не очистить, а заменить в ней владельца на новый файл (см. скриншот - рабочий вариант)
Прикрепленные файлы:
32. user790109 10 21.11.24 19:12 Сейчас в теме
(31) Даже при таком коде шаблон обновляется. И есть шаблон возвращаться к первоначальному типу, файл который прикреплен к документу так же становится похож на шаблон.... Этот код точно окончательный?)
Прикрепленные файлы:
28. SemandCheb 29.06.23 16:31 Сейчас в теме
Допущена ошибка в коде:
вместо
ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, ТекущийФайл.Ссылка, Ложь);

надо указать
ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, ТекущийФайл.Ссылка, ИСТИНА);
29. ketr 128 02.08.24 13:52 Сейчас в теме
(25)
Для Каждого СтрокаФайл Из ТаблицаФайлы Цикл
ФайлОбъект = СтрокаФайл.ШаблонОснованиеДляСоздания.Скопировать();
ФайлОбъект.ШаблонОснованиеДляСоздания = СтрокаФайл.ШаблонОснованиеДляСоздания;
ФайлОбъект.ВладелецФайла = ДокументСсылка;
ФайлОбъект.ШаблонОснованиеДляСоздания = СтрокаФайл.ШаблонОснованиеДляСоздания;
ФайлОбъект.Записать();

//При необходимости автозаполнения раскомментировать
//АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Ложь, ФайлОбъект.Ссылка, Истина);
КонецЦикла;


вот эта строка еще нужна для автозаполнения нового файла по шалону:
ФайлОбъект.ШаблонОснованиеДляСоздания = СтрокаФайл.ШаблонОснованиеДляСоздания;
Оставьте свое сообщение

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