Файл: Разработка регламента выполнения процесса «Управление документооборотом» (1 Построение бизнес-процессов «как есть»).pdf
Добавлен: 28.06.2023
Просмотров: 347
Скачиваний: 2
СОДЕРЖАНИЕ
1 Построение бизнес-процессов «как есть»
1.1 Описание предметной области. Постановка задачи
1.2 Выбор средства для моделирования бизнес-процессов
1.3 Моделирование бизнес-процессов «как есть»
2 Построение бизнес-процессов «как должно быть»
2.1 Предлагаемые мероприятия по улучшению бизнес-процессов
| И ДескрипторыДоступаОбъектовПользователи.ОсновнойОбъектАдресации = &ОсновнойОбъектАдресации
| И ДескрипторыДоступаОбъектовПользователи.ДополнительныйОбъектАдресации = &ДополнительныйОбъектАдресации";
Запрос.УстановитьПараметр("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации);
Запрос.УстановитьПараметр("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации);
Запрос.УстановитьПараметр("Пользователь", РольИсполнителя);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
// Поиск дескрипторов по ТЧ РабочаяГруппа
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДескрипторыДоступаОбъектовРабочаяГруппа.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаОбъектов.РабочаяГруппа КАК ДескрипторыДоступаОбъектовРабочаяГруппа
|ГДЕ
| ДескрипторыДоступаОбъектовРабочаяГруппа.Участник = &Участник
| И ДескрипторыДоступаОбъектовРабочаяГруппа.ОсновнойОбъектАдресации = &ОсновнойОбъектАдресации
| И ДескрипторыДоступаОбъектовРабочаяГруппа.ДополнительныйОбъектАдресации = &ДополнительныйОбъектАдресации";
Запрос.УстановитьПараметр("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации);
Запрос.УстановитьПараметр("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации);
Запрос.УстановитьПараметр("Участник", РольИсполнителя);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
Иначе
// Обработка записи нового набора записей
Для каждого Эл Из Источник Цикл
РольИсполнителя = Эл.РольИсполнителя;
ОсновнойОбъектАдресации = Эл.ОсновнойОбъектАдресации;
ДополнительныйОбъектАдресации = Эл.ДополнительныйОбъектАдресации;
// Поиск дескрипторов по ТЧ Пользователи
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДескрипторыДоступаОбъектовПользователи.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаОбъектов.Пользователи КАК ДескрипторыДоступаОбъектовПользователи
|ГДЕ
| ДескрипторыДоступаОбъектовПользователи.Пользователь = &Пользователь
| И ДескрипторыДоступаОбъектовПользователи.ОсновнойОбъектАдресации = &ОсновнойОбъектАдресации
| И ДескрипторыДоступаОбъектовПользователи.ДополнительныйОбъектАдресации = &ДополнительныйОбъектАдресации";
Запрос.УстановитьПараметр("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации);
Запрос.УстановитьПараметр("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации);
Запрос.УстановитьПараметр("Пользователь", РольИсполнителя);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
// Поиск дескрипторов по ТЧ РабочаяГруппа
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДескрипторыДоступаОбъектовРабочаяГруппа.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаОбъектов.РабочаяГруппа КАК ДескрипторыДоступаОбъектовРабочаяГруппа
|ГДЕ
| ДескрипторыДоступаОбъектовРабочаяГруппа.Участник = &Участник
| И ДескрипторыДоступаОбъектовРабочаяГруппа.ОсновнойОбъектАдресации = &ОсновнойОбъектАдресации
| И ДескрипторыДоступаОбъектовРабочаяГруппа.ДополнительныйОбъектАдресации = &ДополнительныйОбъектАдресации";
Запрос.УстановитьПараметр("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации);
Запрос.УстановитьПараметр("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации);
Запрос.УстановитьПараметр("Участник", РольИсполнителя);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
// Обрабатывает запись набора записей РС СведенияОПользователях
Процедура ПриЗаписиСведенийОПользователях(Источник)
Если Константы.ДобавлятьРуководителямДоступПодчиненных.Получить() Тогда
Если Источник.ДополнительныеСвойства.Свойство("СтароеПодразделение") Тогда
// Если подразделение пользователя было изменено, то
// выполняется обновление прав, зависящих от пользователя
Немедленно = Не ДокументооборотПраваДоступаПовтИсп.ОтложенноеОбновлениеПравДоступа();
ЗначениеОтбора = Источник.Отбор.Пользователь.Значение;
Если ЗначениеЗаполнено(ЗначениеОтбора) Тогда
ОбновитьПраваПоПользователю(ЗначениеОтбора, Немедленно);
Иначе
Для каждого Эл Из Источник Цикл
ОбновитьПраваПоПользователю(Эл.Пользователь, Немедленно);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Обрабатывает запись правообразующих констант
Процедура ПриЗаписиКонстанты(Источник)
Если ТипЗнч(Источник) = Тип("КонстантаМенеджерЗначения.ИспользоватьУчетПоОрганизациям") Тогда
// Обработка всех дескрипторов, у которых установлен реквизит Организация
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДескрипторыДоступаОбъектов.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаОбъектов КАК ДескрипторыДоступаОбъектов
|ГДЕ
| ДескрипторыДоступаОбъектов.Организация <> &ПустаяОрганизация";
Запрос.УстановитьПараметр("ПустаяОрганизация", Справочники.Организации.ПустаяСсылка());
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Дескриптор = ВыборкаДетальныеЗаписи.Ссылка;
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(Дескриптор);
ОбновитьПраваСвязанныхДескрипторовПоДескриптору(Дескриптор);
КонецЦикла;
ИначеЕсли ТипЗнч(Источник) = Тип("КонстантаМенеджерЗначения.ИспользоватьГрифыДоступа") Тогда
// Обработка всех дескрипторов, у которых установлен реквизит ГрифДоступа
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДескрипторыДоступаОбъектов.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаОбъектов КАК ДескрипторыДоступаОбъектов
|ГДЕ
| ДескрипторыДоступаОбъектов.ГрифДоступа <> &ГрифДоступа";
Запрос.УстановитьПараметр("ГрифДоступа", Справочники.ГрифыДоступа.ПустаяСсылка());
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Дескриптор = ВыборкаДетальныеЗаписи.Ссылка;
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(Дескриптор);
ОбновитьПраваСвязанныхДескрипторовПоДескриптору(Дескриптор);
КонецЦикла;
ИначеЕсли ТипЗнч(Источник) = Тип("КонстантаМенеджерЗначения.ИспользоватьВопросыДеятельности") Тогда
// Обработка всех дескрипторов, у которых установлен реквизит ВопросДеятельности
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДескрипторыДоступаОбъектов.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаОбъектов КАК ДескрипторыДоступаОбъектов
|ГДЕ
| ДескрипторыДоступаОбъектов.ВопросДеятельности <> &ВопросДеятельности";
Запрос.УстановитьПараметр("ВопросДеятельности", Справочники.ВопросыДеятельности.ПустаяСсылка());
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Дескриптор = ВыборкаДетальныеЗаписи.Ссылка;
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(Дескриптор);
ОбновитьПраваСвязанныхДескрипторовПоДескриптору(Дескриптор);
КонецЦикла;
ИначеЕсли ТипЗнч(Источник) = Тип("КонстантаМенеджерЗначения.ИспользоватьВидыИсходящихДокументов") Тогда
// Обработка всех дескрипторов, у которых установлен реквизит ВидОбъекта
// типа Справочник.ВидыИсходящихДокументов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДескрипторыДоступаОбъектов.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаОбъектов КАК ДескрипторыДоступаОбъектов
|ГДЕ
| ДескрипторыДоступаОбъектов.ВидОбъекта <> &ВидОбъекта
| И ТИПЗНАЧЕНИЯ(ДескрипторыДоступаОбъектов.ВидОбъекта) = ТИП(Справочник.ВидыИсходящихДокументов)";
Запрос.УстановитьПараметр("ВидОбъекта", Справочники.ВидыИсходящихДокументов.ПустаяСсылка());
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Дескриптор = ВыборкаДетальныеЗаписи.Ссылка;
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(Дескриптор);
ОбновитьПраваСвязанныхДескрипторовПоДескриптору(Дескриптор);
КонецЦикла;
ИначеЕсли ТипЗнч(Источник) = Тип("КонстантаМенеджерЗначения.ИспользоватьВидыВходящихДокументов") Тогда
// Обработка всех дескрипторов, у которых установлен реквизит ВидОбъекта
// типа Справочник.ВидыВходящихДокументов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДескрипторыДоступаОбъектов.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаОбъектов КАК ДескрипторыДоступаОбъектов
|ГДЕ
| ДескрипторыДоступаОбъектов.ВидОбъекта <> &ВидОбъекта
| И ТИПЗНАЧЕНИЯ(ДескрипторыДоступаОбъектов.ВидОбъекта) = ТИП(Справочник.ВидыВходящихДокументов)";
Запрос.УстановитьПараметр("ВидОбъекта", Справочники.ВидыВходящихДокументов.ПустаяСсылка());
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Дескриптор = ВыборкаДетальныеЗаписи.Ссылка;
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(Дескриптор);
ОбновитьПраваСвязанныхДескрипторовПоДескриптору(Дескриптор);
КонецЦикла;
ИначеЕсли ТипЗнч(Источник) = Тип("КонстантаМенеджерЗначения.ИспользоватьВидыВнутреннихДокументов") Тогда
// Обработка всех дескрипторов, у которых установлен реквизит ВидОбъекта
// типа Справочник.ВидыВнутреннихДокументов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДескрипторыДоступаОбъектов.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаОбъектов КАК ДескрипторыДоступаОбъектов
|ГДЕ
| ДескрипторыДоступаОбъектов.ВидОбъекта <> &ВидОбъекта
| И ТИПЗНАЧЕНИЯ(ДескрипторыДоступаОбъектов.ВидОбъекта) = ТИП(Справочник.ВидыВнутреннихДокументов)";
Запрос.УстановитьПараметр("ВидОбъекта", Справочники.ВидыВнутреннихДокументов.ПустаяСсылка());
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Дескриптор = ВыборкаДетальныеЗаписи.Ссылка;
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(Дескриптор);
ОбновитьПраваСвязанныхДескрипторовПоДескриптору(Дескриптор);
КонецЦикла;
ИначеЕсли ТипЗнч(Источник) = Тип("КонстантаМенеджерЗначения.ДобавлятьРуководителямДоступПодчиненных") Тогда
// Обновление всех дескрипторов
// ДескрипторыДоступаОбъектов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДескрипторыДоступаОбъектов.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаОбъектов КАК ДескрипторыДоступаОбъектов";
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Справочники.ДескрипторыДоступаОбъектов.ОбновитьПрава(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
// ДескрипторыДоступаРегистров
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДескрипторыДоступаРегистров.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаРегистров КАК ДескрипторыДоступаРегистров";
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Справочники.ДескрипторыДоступаРегистров.ОбновитьПрава(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
// ДескрипторыДоступаФайлов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДескрипторыДоступаФайлов.Ссылка
|ИЗ
| Справочник.ДескрипторыДоступаФайлов КАК ДескрипторыДоступаФайлов";
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Справочники.ДескрипторыДоступаФайлов.ОбновитьПрава(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
КонецЕсли;