Автоматическое обновление файлов данными владельца в документообороте

Публикация № 1120532

Разработка - Практика программирования

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

7
Обновление данных файлов, созданных по шаблону в ДО 2.1.13.

Наверное, многие в ДО сталкивались с такой проблемой - при изменении существующего документа данные в файлах (из шаблона документа) не обновляются данными документа. Для того, чтобы обновить данные в файле, приходится нажимать кнопку "Заполнить файл данными документа" для каждого файла:

В данной статье я хочу поделиться своим способом решения данной проблемы. 

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

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

Изменение данных проверяю через свойство формы "Модифицированность". Автозаполнение поддерживается только для определенных форматов, поэтому в условии нужно дополнительно проверить расширение файла. 

Код функции с доступными расширениями:

&НаСервере
функция пп_ДоступныеРасширения()
	
	мДоступныеРасширения = Новый Массив;
	
	мДоступныеРасширения.Добавить("doc");
	мДоступныеРасширения.Добавить("docx");
	мДоступныеРасширения.Добавить("dot");
	мДоступныеРасширения.Добавить("dotx");
	мДоступныеРасширения.Добавить("txt");
	мДоступныеРасширения.Добавить("html");
	мДоступныеРасширения.Добавить("odt");
	
	Возврат мДоступныеРасширения;
	
Конецфункции

Работоспособность этого кода проверялась на форме элемента справочника "ВнутренниеДокументы". Версия конфигурации 2.1.13.28.

7

См. также

Специальные предложения

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение