1С Документооборот 3.0, автоматическая регистрация после согласования

Ниже инструкция, как настроить автоматическую регистрацию документа после первого согласования.

Для этого нужно создать доп.обработчик:

//Список = Новый СписокЗначений;
//Список.Добавить("Служебная записка (Руководитель)");
//Список.Добавить("Служебная записка (Руководитель -> Коммерческий директор)");
//Список.Добавить("Заявка на оплату");



// Поиск объекта
Задача = Событие.Источник;

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


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

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

Во второй вкладке, нужно добавить подписку по которой будет срабатывать выполнение кода «Задачи процессов: выполнение».

Проверять отработку кода в e1cib/list/РегистрСведений.ПроизошедшиеБизнесСобытия

Также обратите внимание что выполнение происходит в регламентном задании «Обработка детекторов бизнес-событий»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *