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