1С Документооборот. Добавление автоподстановки
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 54 55 56 57 58 59 60 61 62 63 |
Функция НачальникПРБСогласование(БизнесПроцессОбъект, ИмяПредмета) Экспорт СтрокаПредмета = БизнесПроцессОбъект.Предметы.Найти(ИмяПредмета,"ИмяПредмета"); Если СтрокаПредмета <> Неопределено Тогда Если Не ЗначениеЗаполнено(СтрокаПредмета.Предмет) Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Автоподстановка не может быть выполнена, так как не указан предмет ""%1"" процесса.'"), Строка(ИмяПредмета)); КонецЕсли; Если ТипЗнч(СтрокаПредмета.Предмет) <> Тип("СправочникСсылка.ВнутренниеДокументы") Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Автоподстановка не может быть выполнена для предмета ""%1"" процесса.'"), Строка(ИмяПредмета)); КонецЕсли; АвторДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаПредмета.Предмет, "Подготовил"); Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | СведенияОПользователяхДокументооборот.Подразделение КАК Подразделение |ПОМЕСТИТЬ ПодразделениеПользователя |ИЗ | РегистрСведений.СведенияОПользователяхДокументооборот КАК СведенияОПользователяхДокументооборот |ГДЕ | СведенияОПользователяхДокументооборот.Пользователь = &Пользователь | |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | СведенияОПользователяхДокументооборот.Пользователь КАК Пользователь |ИЗ | ПодразделениеПользователя КАК ПодразделениеПользователя | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОПользователяхДокументооборот КАК СведенияОПользователяхДокументооборот | ПО ПодразделениеПользователя.Подразделение = СведенияОПользователяхДокументооборот.Подразделение |ГДЕ | СведенияОПользователяхДокументооборот.Пользователь <> &Пользователь | И НЕ СведенияОПользователяхДокументооборот.Пользователь.Недействителен | И СведенияОПользователяхДокументооборот.Должность.Наименование = ""начальник бюро (ПР) "" "; Запрос.УстановитьПараметр("Пользователь", АвторДокумента); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); МассивСборщиков = Новый Массив(); // Ищем начальника ПРБ Пока Выборка.Следующий() Цикл МассивСборщиков.Добавить(Выборка.Пользователь); КонецЦикла; Возврат МассивСборщиков; Иначе ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не найден предмет ""%1"" процесса.'"), Строка(ИмяПредмета)); КонецЕсли; КонецФункции |
Вызов новой автоподстановки также прописываем в общем модуле «ШаблоныБизнесПроцессовПереопределяемый». Для этого в 1С Документооборот аннотацией «Вместо» перехватываем функцию «ПолучитьСписокДоступныхФункций» и добавляем строки
|
1 2 |
ДоступныеФункции.Добавить("ШаблоныБизнесПроцессовПереопределяемый.НачальникПРБСогласование(Объект, ИмяПредмета)",СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1.Начальник ПРБ согласование'"),Строка(ИмяПредмета))); |
С программной частью все готово!
Теперь необходимо зайти в пользовательском режиме работы в 1С:Документооборот.
Открываем выбор автоподстановок и видим, что добавленной в списке нет
Чтобы она появилась в списке, необходимо щелкнуть по нему правой клавишей мышки и выбрать «Обновить автоподстановки»



Комментарии закрыты