Обработчик автоматической регистрации документа 1С:Документооборот после утверждения и автозаполнения файла по шаблону

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

Управление - Документооборот и делопроизводство

Дополнительный обрабочик для 1С:Документооборот, позволяющий выполнять автоматическую регистрацию внутреннего документа после его утверждения и автоматическое заполнение прикрепленного шаблонного файла.

Обработчик позволяет без изменения конфигурации дополнить функционал по регистрации и автозаполнению файла по шаблону.

Может рассматриваться вообще как пример использования функционала бизнес-событий 1С:Документооборота.

1. Создаем дополнительный обработчик "Автоматическая регистрация при утверждении"

// Регистрация
Задача = Событие.Источник;

Выполнять = Ложь;

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

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



Дорабатываем код согласно используемым Вами документам.

 

2. На вкладке подписки добавляем новую подписку с видом события "Задача выполнена" и этим обработчиком.

3. Включаем обработчик и проверяем по справочнику Произошедшие бизнес-события, документам, отсутствию ошибок.

Фоновое задание "Обработка произошедших бизнес-событий" должна работать.

 

Работает на Документооборот 1.2.8.1 Корп. Думаю должно работать и на других версиях.

Скачать файлы

Наименование Файл Версия Размер
Автоматическая регистрация при утверждении
.txt 6,57Kb
29.05.13
18
.txt 6,57Kb 18 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. dpagon 7 12.09.13 16:51 Сейчас в теме
Регистрация работает, а вот с заполнение файлов беда. Релиз 1.3.1.5. При вызове функции АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца возникает ошибка:
{ОбщийМодуль.АвтозаполнениеШаблоновФайловКлиентСервер.Модуль(60)}: Ошибка при вызове метода контекста (Add)
Док = WordApp.Documents.Add(ПутьКФайлуНаДиске);
по причине:
Произошла исключительная ситуация (Microsoft Word): Недостаточно памяти. Немедленно сохраните документ.
Насколько я понимаю проблема в том что нет доступа к каталогу ПутьКФайлуНаДиск, по факту C:\Users\USR1CV82\AppData\Local\Temp\v8_923E_1a2.doc. Копал по настройкам DCOM, но пока бесполезно.
2. Killgur 45 29.09.13 21:36 Сейчас в теме
(1) dpagon,
Надо посмотреть права к папке с файлом и еще уточнить где работает автозаполнение файла (за константа отвечающая за это). Хотя сам 1.3.1.5. пока не обновлялся.
3. fifka555 29.10.13 07:09 Сейчас в теме
4. uri1978 128 22.11.13 11:58 Сейчас в теме
Спасибо за
Задача = Событие.Источник;
Не знал как достучаться до объекта.

А вот процедуру регистрации документа взял с конфигурации:
Если Выполнять Тогда    
			
			Нумератор = Нумерация.ПолучитьНумераторДокумента(ДокументОбъект);
			
			Если ЗначениеЗаполнено(Нумератор) Тогда // автоматическая нумерация
				
				ДатаРегистрации = ТекущаяДата();
				ТекущийПользователь = ОбщегоНазначения.ТекущийПользователь();
				
				ДокументОбъект.ДатаРегистрации = ДатаРегистрации;
				
				// сформируем текущий номер
				СтруктураПараметров = НумерацияКлиентСервер.ПолучитьПараметрыНумерации(ДокументОбъект);
				Нумерация.СформироватьЧисловойНомерДокумента(СтруктураПараметров, ДокументОбъект.ЧисловойНомер);
				
				ОписанияОшибок = Новый СписокЗначений;
				СтруктураПараметров = НумерацияКлиентСервер.ПолучитьПараметрыНумерации(ДокументОбъект);
				Нумерация.СформироватьСтроковыйНомерДокумента(СтруктураПараметров, ДокументОбъект.РегистрационныйНомер, ОписанияОшибок);
				
				ДокументОбъект.Зарегистрировал = ТекущийПользователь;
				ДокументОбъект.Записать();
				
				Делопроизводство.ЗаписатьСостояниеДокумента(
					ДокументОбъект.Ссылка, 
					ДатаРегистрации, 
					Перечисления.СостоянияДокументов.Зарегистрирован, 
					ТекущийПользователь);
					
			КонецЕсли;	
			
		КонецЕсли;
Показать
5. luda33 04.12.13 15:23 Сейчас в теме
А в документообороте есть автоматическая регистрация при создании внутреннего документа?
6. uri1978 128 04.12.13 16:10 Сейчас в теме
(5) luda33,
По-умолчанию нет, эта статья как раз и показывает как это реализовать. Хотя я столкнулся с проблемами. Например, пользователь записывает внутренний документ и продолжает его редактирование. При этом через минуту происходит автоматическая регистрация и пользователь уже не может сохранить изменения которые он вносил.
7. luda33 04.12.13 19:46 Сейчас в теме
(6) uri1978, как так получается?
у нас тоже - пользователи не регистрируют ничего, им это не надо - а доки оказываются зарегистрированными
как так не знаю
уже отключили запрет менять документы после регистрации

а сейчас возникла необходимость регистрировать при создании документа, - что бы номер сразу при заполнении попадал в файл (из шаблона)
видимо придется воспользоваться этим обработчиком, только не при утверждении
8. Killgur 45 06.12.13 00:20 Сейчас в теме
(6) uri1978,
Регистрация происходит отдельным обработчиком с записью документа, а в этот момент документ оказывается открытым и данные на форме не соответствуют записанным и естественно документ не сохраняется.
Мое применение как раз и было нацелено, что регистрация происходит когда изменения уже не нужны.

(7) luda33,
Посмотрите изменение состояний документа. Там есть информация о том кто и когда зарегистрировал.
Регистрация при создании документа - скорее всего без изменения конфигурации не получится.
9. uri1978 128 06.12.13 12:33 Сейчас в теме
(8)
У меня внутренний документ, который должен быть зарегистрирован, не проходит бизнес процессов. Т.е. по нему нет утверждений или согласований. Соответственно я его могу регистрировать только при записи. И по этой причине и происходит "коллизия".
10. graser 7 22.07.14 12:15 Сейчас в теме
на 8.3 не работает, затыкается вот здесь Объект = Задача.Предмет.ПолучитьОбъект();
У задачи предмет описан как Список
11. lavdeenko 26 02.03.18 13:01 Сейчас в теме
Ошибка - 3. Включаем обработчик и проверяем по справочнику Произошедшие бизнес-события.
Надо - 3. Включаем обработчик и проверяем по регистру сведений Произошедшие бизнес-события
12. Kontakt 71 10.07.18 11:05 Сейчас в теме
Ребят подскажите, когда происходит автозаполнение файла? Вроде как все настроил, проверил. Все заполняется. Когда ввожу новый документ, автозаполнение не срабатывает в файле. В файле выходят служебные теги при просмотре.
13. CyberBob 4 11.07.18 05:07 Сейчас в теме
(12)Автоматом, должно заполняться при записи документа. Можно ручками ткнуть на автозаполняемый файл правой кнопкой и выбрать "заполнить файл данными документа".
14. user780057 06.11.19 12:10 Сейчас в теме
1с:Документооборот 2.1 КОРП
Привет! Кто нибудь знает как зарезервировать номер для договора,без регистрации документа? Например, есть договор который еще не подписан и не отработан, не оплачен и т.д., но клиент просит номер договора, а его соответственно еще нет.
Идея такая делаем "Волшебную кнопку" нажимаем - резервируем номер сохраняем документ, при этом нумерация договоров продолжается со следующего номера. А этот документ доступен для редактирования. Как можно реализовать по другому, есть идеи?
Ну и моя идея реализуема вообще?
Оставьте свое сообщение

См. также

SALE! 30%

Видеокурс-самоучитель "1С:Документооборот - ГУРУ" для самостоятельного внедрения Промо

Пользователю системы Документооборот и делопроизводство v8 ДО Платные (руб)

Самый детальный и самый полный самоучитель по программе 1С:Документооборот, в котором Вы научитесь правильно работать, настраивать, администрировать и внедрять конфигурацию 1С:Документооборот. Все уроки курса построены на последовательном заполнении пустой базы 1С:Документооборот КОРП в клиент-серверном варианте.

89000 руб.

30.10.2018    19184    5    0    

1С: Документооборот. Роли, использующие объекты адресации. Конфигурация остается типовой (используется расширение)

Информационная безопасность v8 ДО Абонемент ($m)

Расширение функционала документооборота. Реализована возможность использования ролей с объектами адресации. Конфигурация остается типовой (используется расширение)

5 стартмани

10.01.2019    6823    15    sulig    21    

Вывод всей истории в задаче комплексного процесса

Практика программирования v8::Бизнес-процессы ДО УУ Бесплатно (free)

В статье описывается, какие изменения нужно сделать, чтобы в задаче комплексного процесса выводилась вся история (по всем процессам), а не только история текущего процесса.

08.08.2018    5994    0    E_Babaylova    7    

Печать pdf документа со штампом ЭЦП

Печатные формы документов Документооборот и делопроизводство Документооборот и делопроизводство v8 v8::УФ ДО Абонемент ($m)

Печать pdf файла, прикрепленного к внутреннему документу, подписанному ЭЦП, с установкой отметки о подписании.

1 стартмани

24.05.2018    13253    88    App0st0l    12    

Перенос документов и процессов между двумя базами 1С:Документооборота Промо

Обработка документов Перенос данных из 1C8 в 1C8 Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО УУ Платные (руб)

Обработка по переносу документов поможет перенести документы и процессы из одной базы 1С:Документооборот в другую. Версии двух баз должны совпадать, а релизы конфигураций 1С:Документооборот могут быть различными. Главное, чтобы была синхронизирована НСИ.

21000 руб.

09.06.2016    19840    8    4    

Эмулятор скриптов в 1С:Документооборот

Документооборот и делопроизводство Инструментарий разработчика Документооборот и делопроизводство v8 ДО Абонемент ($m)

В 1С:Документообороте можно использовать программный код 1С в пользовательском режиме (не в конфигураторе). Однако если в конфигураторе есть отладчик, то в пользовательском режиме протестировать скрипт достаточно сложно. Внешняя обработка Эмулятор скриптов позволяет вывести результаты скрипта и проверить работу алгоритма на разных документах.

2 стартмани

13.12.2017    12604    88    vlush78    0    

Управление договорами в 1С:Документооборот

Управление бизнес-процессами (BPM) Документооборот и делопроизводство Пользователю системы Бухгалтерский учет Документооборот и делопроизводство v8 ДО УУ Бесплатно (free)

В 1С:Документооборот в релизах 2.1.7 и 2.1.8 концепция учета договоров продолжила свое развитие (появились стороны договора). Это повлияло и на бизнес-процессы (теперь вместо процесса Утверждение надо пользоваться процессом Подписание для договоров). Рассмотрим основные моменты, на которые надо обратить внимание при внедрении управления договорами в 1С:Документооборот.

24.01.2017    32960    0    vlush78    0    

Блокировка повторного запуска комплексного процесса в 1С: Документооборот 2

Администрирование данных 1С Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО Абонемент ($m)

Острой проблемой при работе документооборота стал повторный запуск комплексного процесса. Пользователи несколько раз  запускали один и тот же комплексный процесс по документу, не убедившись, что этот же процесс уже запущен. В результате наступил хаос, все возмущались и недоумевали, почему один и тот же документ приходил на согласование и исполнение несколько раз. 

2 стартмани

04.10.2016    19327    71    zabaluev    25    

Ограничения запуска процессов в 1С:Документооборот Промо

Обработка документов Обработка справочников v8 ДО Платные (руб)

Расширение "Ограничение запуска процессов" позволяет для разных групп пользователей убрать не нужные типы процессов для запуска для разных видов документов.

21000 руб.

03.04.2017    10579    33    0    

Новое в 1С:Документооборот ред. 2.1

Пользователю системы Управленческий учет (прочее) Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО УУ Бесплатно (free)

Фирма 1С не стоит на месте и продолжает радовать нас своими новыми версиями конфигурации 1С:Документооборот. В конце мая 2016 года вышла новая редакция 2.1, которая содержит как принципиально новые возможности, так и улучшение старых функций. В данной статье будут рассмотрены отличия конфигурации 1С:Документооборот редакции 2.1 по сравнению с редакцией 2.0.

15.06.2016    31312    0    vlush78    7    

Нагрузочное тестирование 1С:Документооборот

Производительность и оптимизация (HighLoad) Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО Бесплатно (free)

Перед запуском 1С:Документооборот для средних и крупных внедрений крайне желательно провести нагрузочное тестирование, чтобы проверить корректность и скорость работы системы электронного документооборота в условиях максимальной нагрузки. В данной статье пойдет речь о том, как провести нагрузочное тестирование в 1С:Документооборот без использования 1С:КИП.

28.12.2015    20377    0    vlush78    1    

Права доступа в 1С:Документооборот 2.1 Промо

Информационная безопасность Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО Бесплатно (free)

В программе 1С:Документооборот ред 2.1 механизм системы прав доступа сильно изменился. С одной стороны, права доступа в данной версии стали проще и быстрее, с другой стороны - права по рабочим группам объектов теперь могут противоречить политикам доступа. Разберемся в данной статье как работает механизм прав доступа в 1с документообороте 2.1.

16.09.2016    69051    0    vlush78    0