Авторегистрация документа при подписании
!С Документооборот 2.1
Иногда требуется автоматическая регистрация документов в момент их подписания должностным лицом. Данный вопрос можно решить без изменения кода и открытия конфигуратора.
Переходим в раздел «Настройка и администрирование» — «Бизнес-события» — «Дополнительные обработчики»
Создаём новый обработчик
Записываем в него такой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | // Поиск объекта Задача = Событие.Источник; Выполнять = Ложь; Если ТипЗнч(Задача.БизнесПроцесс) = Тип("БизнесПроцессСсылка.Утверждение") Тогда Если Задача.БизнесПроцесс.РезультатУтверждения = Перечисления.РезультатыУтверждения.Утверждено Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Предметы.РольПредмета, | Предметы.Предмет |ИЗ | Задача.ЗадачаИсполнителя.Предметы КАК Предметы |ГДЕ | Предметы.Ссылка = &ЗадачаСсылка"; Запрос.УстановитьПараметр("ЗадачаСсылка",Задача); Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Объект = Выборка.Предмет.ПолучитьОбъект(); Если ТипЗнч(Объект.Ссылка) = Тип("СправочникСсылка.ВнутренниеДокументы") Тогда Если (СокрЛП(Объект.ВидДокумента) = "Сигнал") Тогда Выполнять = Истина; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; Если Выполнять Тогда // Регистрация Нумератор = Нумерация.ПолучитьНумераторДокумента(Объект); Если ЗначениеЗаполнено(Нумератор) Тогда // автоматическая нумерация ДатаРегистрации = ТекущаяДата(); ТекущийПользователь = Пользователи.ТекущийПользователь(); Объект.ДатаРегистрации = ДатаРегистрации; // сформируем текущий номер СтруктураПараметров = НумерацияКлиентСервер.ПолучитьПараметрыНумерации(Объект); Нумерация.СформироватьЧисловойНомерДокумента(СтруктураПараметров, Объект.ЧисловойНомер); ОписанияОшибок = Новый СписокЗначений; СтруктураПараметров = НумерацияКлиентСервер.ПолучитьПараметрыНумерации(Объект); Нумерация.СформироватьСтроковыйНомерДокумента(СтруктураПараметров, Объект.РегистрационныйНомер, ОписанияОшибок); Объект.Зарегистрировал = ТекущийПользователь; Объект.Записать(); Делопроизводство.ЗаписатьСостояниеДокумента( Объект.Ссылка, ДатаРегистрации, Перечисления.СостоянияДокументов.Зарегистрирован, ТекущийПользователь); КонецЕсли; КонецЕсли; |
На вкладке «Подписки» указать событие – Выполнение задачи
Включить обработчик
В настройках вида документа добавить автоматическую нумерацию
Если нужного нумератора нет, добавить
Выбрать полученную нумерацию
Записать закрыть
Проверить результат
Должно выполняться фоновое задание «Обработка произошедших бизнес-событий»
В регистре «Произошедшие бизнес события» всё должно выполняться без ошибок
Комментарии закрыты