Файл: Разработка регламента выполнения процесса «Управление документооборотом» (1 Построение бизнес-процессов «как есть»).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.06.2023

Просмотров: 344

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

|Дело,

|ОткрытьФайл, СохранитьКак, НастроитьСписок, ВывестиСписок, Изменить,

|КонтекстноеМенюФайлыОткрытьФайл, КонтекстноеМенюФайлыСохранитьКак");

Иначе

ДоступныеПоля = Новый Структура("

|ОткрытьФайл, СохранитьКак, НастроитьСписок, ВывестиСписок, Изменить,

|КонтекстноеМенюФайлыОткрытьФайл, КонтекстноеМенюФайлыСохранитьКак");

КонецЕсли;

ИначеЕсли Состояние = Перечисления.СостоянияДокументов.Проект

Или Состояние = Перечисления.СостоянияДокументов.НеСогласован

Или Состояние = Перечисления.СостоянияДокументов.НеУтвержден Тогда

ДоступныеПоля = "";

НедоступныеПоля = Новый Структура("Подписал, Утвердил, Дело");

ИначеЕсли Состояние = Перечисления.СостоянияДокументов.НаСогласовании Тогда

ДоступныеПоля = Новый Структура("

|Состояние, Папка,

|ВизыСогласования, ВизыСогласованияСоздать, ВизыСогласованияИзменить, ВизыСогласованияУдалить, ВизыСогласованияКонтекстноеМенюСоздать, ВизыСогласованияКонтекстноеМенюИзменить, ВизыСогласованияКонтекстноеМенюУдалить, ВизыСогласованияКонтекстноеМенюОбновить,

|ЗакончитьРедактирование, Занять, Освободить, Редактировать, СохранитьИзменения, ОбновитьИзФайлаНаДиске, ФайлыЗашифровать, ФайлыРасшифровать, ФайлыКонтекстноеМенюЗашифровать, ФайлыКонтекстноеМенюРасшифровать,

|КонтекстноеМенюФайлыЗакончитьРедактирование, КонтекстноеМенюФайлыЗанять, КонтекстноеМенюФайлыОсвободить, КонтекстноеМенюФайлыРедактировать, КонтекстноеМенюФайлыСохранитьИзменения, КонтекстноеМенюФайлыОбновитьИзФайлаНаДиске,

|Файлы, СоздатьФайл, ОткрытьФайл, СохранитьКак, НастроитьСписок, ВывестиСписок, Изменить,

|КонтекстноеМенюФайлыОткрытьФайл, КонтекстноеМенюФайлыСохранитьКак");

ИначеЕсли Состояние = Перечисления.СостоянияДокументов.НаУтверждении Тогда

ДоступныеПоля = Новый Структура("

|Состояние, Папка,

|Подписал, Утвердил,

|ЗакончитьРедактирование, Занять, Освободить, Редактировать, СохранитьИзменения, ОбновитьИзФайлаНаДиске, ФайлыЗашифровать, ФайлыРасшифровать, ФайлыКонтекстноеМенюЗашифровать, ФайлыКонтекстноеМенюРасшифровать,

|КонтекстноеМенюФайлыЗакончитьРедактирование, КонтекстноеМенюФайлыЗанять, КонтекстноеМенюФайлыОсвободить, КонтекстноеМенюФайлыРедактировать, КонтекстноеМенюФайлыСохранитьИзменения, КонтекстноеМенюФайлыОбновитьИзФайлаНаДиске,

|Файлы, СоздатьФайл, ОткрытьФайл, СохранитьКак, НастроитьСписок, ВывестиСписок, Изменить,

|КонтекстноеМенюФайлыОткрытьФайл, КонтекстноеМенюФайлыСохранитьКак");


ИначеЕсли Состояние = Перечисления.СостоянияДокументов.Согласован

Или Состояние = Перечисления.СостоянияДокументов.Утвержден Тогда

Если РольДелопроизводитель Тогда

ДоступныеПоля = Новый Структура("

|Состояние, Папка,

|Зарегистрировать, НоменклатураДел,

|ОткрытьФайл, СохранитьКак, НастроитьСписок, ВывестиСписок, Изменить,

|КонтекстноеМенюФайлыОткрытьФайл, КонтекстноеМенюФайлыСохранитьКак");

Иначе

ДоступныеПоля = Новый Структура("

|Состояние,

|ОткрытьФайл, СохранитьКак, НастроитьСписок, ВывестиСписок, Изменить,

|КонтекстноеМенюФайлыОткрытьФайл, КонтекстноеМенюФайлыСохранитьКак");

КонецЕсли;

КонецЕсли;

Для Каждого Элемент Из Форма.Элементы Цикл

Если ТипЗнч(Элемент) = Тип("ГруппаФормы") И Элемент.Имя <> "ГруппаСвойства" Тогда

Продолжить;

КонецЕсли;

Если ТипЗнч(Элемент) = Тип("ДекорацияФормы") Тогда

Продолжить;

КонецЕсли;

Если ТипЗнч(Элемент) = Тип("КнопкаФормы") И Элемент.Родитель.Имя = "ФормаКоманднаяПанель" Тогда

Продолжить;

КонецЕсли;

Если ТипЗнч(Элемент) = Тип("КнопкаФормы") И Элемент.Родитель.Имя = "КоманднаяПанельФормыСоздатьНаОсновании" Тогда

Продолжить;

КонецЕсли;

Если ТипЗнч(Элемент) = Тип("КнопкаФормы") И Элемент.Родитель.Имя = "ФормаСоздатьНаОсновании" Тогда

Продолжить;

КонецЕсли;

Если ТипЗнч(Элемент) = Тип("КнопкаФормы") И Элемент.Родитель.Имя = "КоманднаяПанельФормыПечать" Тогда

Продолжить;

КонецЕсли;

Если ТипЗнч(Элемент) = Тип("КнопкаФормы") И Элемент.Родитель.Имя = "ФормаПечать" Тогда

Продолжить;

КонецЕсли;

Если НеизменяемыеПоля.Свойство(Элемент.Имя) Тогда

Продолжить;

КонецЕсли;

РодительНеИзменяемоеПоле = Ложь;

ТекущийРодитель = Элемент.Родитель;

Пока ТипЗнч(ТекущийРодитель) <> Тип("УправляемаяФорма") Цикл

Если НеизменяемыеПоля.Свойство(ТекущийРодитель.Имя) Тогда

РодительНеИзменяемоеПоле = Истина;

Прервать;

КонецЕсли;

ТекущийРодитель = ТекущийРодитель.Родитель;

КонецЦикла;

Если РодительНеИзменяемоеПоле Тогда

Продолжить;

КонецЕсли;

Если ДоступныеПоля = "" Тогда

Если (НедоступныеПоля <> "") И НедоступныеПоля.Свойство(Элемент.Имя) Тогда

Доступность = Ложь;

Иначе

Доступность = Истина;

КонецЕсли;

ИначеЕсли ДоступныеПоля.Свойство(Элемент.Имя) Тогда

Доступность = Истина;

Иначе

Доступность = Ложь;

КонецЕсли;

Если ТипЗнч(Элемент) = Тип("КнопкаФормы") Тогда

Элемент.Доступность = Доступность;


Иначе

Элемент.ТолькоПросмотр = Не Доступность;

КонецЕсли;

КонецЦикла;

КонецЕсли;

// доступность поля состояние зависит от настройки

Если Не Константы.РазрешитьРучноеИзменениеСостоянияДокументов.Получить()

И Константы.ИспользоватьБизнесПроцессыИЗадачи.Получить() Тогда

Форма.Элементы.Состояние.ТолькоПросмотр = Истина;

КонецЕсли;

КонецПроцедуры

// Получает контактное лицо корреспондента

Функция КонтактноеЛицоКорреспондента(Корреспондент) Экспорт

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1

| КонтактныеЛица.Ссылка КАК КонтактноеЛицо

|ИЗ

| Справочник.КонтактныеЛица КАК КонтактныеЛица

|ГДЕ

| КонтактныеЛица.Владелец = &Владелец

| И (НЕ КонтактныеЛица.ПометкаУдаления)

| И ЛОЖЬ В

| (ВЫБРАТЬ

| ЛОЖЬ КАК ЗначениеЛожь

| ИЗ

| (ВЫБРАТЬ ПЕРВЫЕ 2

| ИСТИНА КАК ЗначениеИстина

| ИЗ

| Справочник.КонтактныеЛица КАК КонтактныеЛица

| ГДЕ

| (НЕ КонтактныеЛица.ПометкаУдаления)

| И КонтактныеЛица.Владелец = &Владелец

| ) КАК ВыбранныеОбъекты

| ИМЕЮЩИЕ

| КОЛИЧЕСТВО(ВыбранныеОбъекты.ЗначениеИстина) = 1)";

Запрос.УстановитьПараметр("Владелец", Корреспондент);

Результат = Запрос.Выполнить();

Если Не Результат.Пустой() Тогда

Выборка = Результат.Выбрать();

Выборка.Следующий();

Возврат Выборка.КонтактноеЛицо;

КонецЕсли;

Возврат Неопределено;

КонецФункции

// Возвращает количество документов переданного вида

Функция КоличествоДокументовПоВидуДокумента(ВидДокумента) Экспорт

УстановитьПривилегированныйРежим(Истина);

Если ТипЗнч(ВидДокумента) = Тип("СправочникСсылка.ВидыВнутреннихДокументов") Тогда

Тип = "ВнутренниеДокументы";

ИначеЕсли ТипЗнч(ВидДокумента) = Тип("СправочникСсылка.ВидыВходящихДокументов") Тогда

Тип = "ВходящиеДокументы";

ИначеЕсли ТипЗнч(ВидДокумента) = Тип("СправочникСсылка.ВидыИсходящихДокументов") Тогда

Тип = "ИсходящиеДокументы";

КонецЕсли;

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| КОЛИЧЕСТВО(*) КАК Количество

|ИЗ

| Справочник." + Тип + "

|ГДЕ

| ВидДокумента = &ВидДокумента

| И РегистрационныйНомер <> """"";

Запрос.УстановитьПараметр("ВидДокумента", ВидДокумента);

Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда

Возврат 0;

КонецЕсли;

Выборка = Результат.Выбрать();

Выборка.Следующий();

Возврат Выборка.Количество;

КонецФункции

// Возвращает количество документов для переданного нумератора


Функция КоличествоДокументовПоНумератору(Нумератор) Экспорт

УстановитьПривилегированныйРежим(Истина);

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| КОЛИЧЕСТВО(*) КАК Количество

|ИЗ

| Справочник.ВходящиеДокументы КАК ВходящиеДокументы

|ГДЕ

| ВходящиеДокументы.ВидДокумента.Нумератор = &Нумератор

| И ВходящиеДокументы.РегистрационныйНомер <> """"

|

|ОБЪЕДИНИТЬ ВСЕ

|

|ВЫБРАТЬ

| КОЛИЧЕСТВО(*)

|ИЗ

| Справочник.ИсходящиеДокументы КАК ИсходящиеДокументы

|ГДЕ

| ИсходящиеДокументы.ВидДокумента.Нумератор = &Нумератор

| И ИсходящиеДокументы.РегистрационныйНомер <> """"

|

|ОБЪЕДИНИТЬ ВСЕ

|

|ВЫБРАТЬ

| КОЛИЧЕСТВО(*)

|ИЗ

| Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы

|ГДЕ

| ВнутренниеДокументы.ВидДокумента.Нумератор = &Нумератор

| И ВнутренниеДокументы.РегистрационныйНомер <> """"";

Запрос.УстановитьПараметр("Нумератор", Нумератор);

Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда

Возврат 0;

КонецЕсли;

Возврат Результат.Выгрузить().Итог("Количество");

КонецФункции

// Возвращает количество документов с пустым видом

Функция КоличествоДокументовСПустымВидом(ТипДокумента) Экспорт

УстановитьПривилегированныйРежим(Истина);

Если ТипДокумента = "ВходящийДокумент" Тогда

ТекстЗапроса =

"ВЫБРАТЬ

| КОЛИЧЕСТВО(*) КАК Количество

|ИЗ

| Справочник.ВходящиеДокументы КАК ВходящиеДокументы

|ГДЕ

| ВходящиеДокументы.ВидДокумента = ЗНАЧЕНИЕ(Справочник.ВидыВходящихДокументов.ПустаяСсылка)";

ИначеЕсли ТипДокумента = "ИсходящийДокумент" Тогда

ТекстЗапроса =

"ВЫБРАТЬ

| КОЛИЧЕСТВО(*) КАК Количество

|ИЗ

| Справочник.ИсходящиеДокументы КАК ИсходящиеДокументы

|ГДЕ

| ИсходящиеДокументы.ВидДокумента = ЗНАЧЕНИЕ(Справочник.ВидыИсходящихДокументов.ПустаяСсылка)";

ИначеЕсли ТипДокумента = "ВнутреннийДокумент" Тогда

ТекстЗапроса =

"ВЫБРАТЬ

| КОЛИЧЕСТВО(*) КАК Количество

|ИЗ

| Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы

|ГДЕ

| ВнутренниеДокументы.ВидДокумента = ЗНАЧЕНИЕ(Справочник.ВидыВнутреннихДокументов.ПустаяСсылка)";

КонецЕсли;

Запрос = Новый Запрос(ТекстЗапроса);

Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда

Возврат 0;

КонецЕсли;

Выборка = Результат.Выбрать();

Выборка.Следующий();

Возврат Выборка.Количество;

КонецФункции

// Инициализирует персональные настройки работы с документами - для использования на клиенте


Функция ПолучитьПерсональныеНастройкиРаботыСДокументамиСервер() Экспорт

Настройки = Новый Структура;

ПоказыватьПредупреждениеПриРегистрации = ХранилищеОбщихНастроек.Загрузить("НастройкиРаботыСДокументами", "ПоказыватьПредупреждениеПриРегистрации");

Если ПоказыватьПредупреждениеПриРегистрации = Неопределено Тогда

ПоказыватьПредупреждениеПриРегистрации = Истина;

ХранилищеОбщихНастроек.Сохранить("НастройкиРаботыСДокументами", "ПоказыватьПредупреждениеПриРегистрации", ПоказыватьПредупреждениеПриРегистрации);

КонецЕсли;

Настройки.Вставить("ПоказыватьПредупреждениеПриРегистрации", ПоказыватьПредупреждениеПриРегистрации И ПолучитьФункциональнуюОпцию("ИспользоватьСостоянияДокументов"));

СпособОтраженияПередачиКорреспонденту = ХранилищеОбщихНастроек.Загрузить("НастройкиРаботыСДокументами", "СпособОтраженияПередачиКорреспонденту");

Если СпособОтраженияПередачиКорреспонденту = Неопределено Тогда

СпособОтраженияПередачиКорреспонденту = Перечисления.СпособыОтраженияПередачиКорреспонденту.ЗадаватьВопрос;

ХранилищеОбщихНастроек.Сохранить("НастройкиРаботыСДокументами", "СпособОтраженияПередачиКорреспонденту", СпособОтраженияПередачиКорреспонденту);

КонецЕсли;

Настройки.Вставить("СпособОтраженияПередачиКорреспонденту", СпособОтраженияПередачиКорреспонденту);

УстановитьПривилегированныйРежим(Истина);

Настройки.Вставить("ИспользоватьФайлыУВходящихДокументов", Константы.ИспользоватьФайлыУВходящихДокументов.Получить());

Настройки.Вставить("ИспользоватьФайлыУИсходящихДокументов", Константы.ИспользоватьФайлыУИсходящихДокументов.Получить());

Возврат Настройки; // параметры доступны только для чтения

КонецФункции

// Возвращает ключ записи регистра сведений ЖурналПередачиДокументов

Функция ПолучитьКлючЖурналаПередачи(Период, Документ, ТипЭкземпляра, НомерЭкземпляра) Экспорт

Ключ = РегистрыСведений.ЖурналПередачиДокументов.СоздатьКлючЗаписи(

Новый Структура("Период, Документ, ТипЭкземпляра, НомерЭкземпляра",

Период,

Документ,

ТипЭкземпляра,

НомерЭкземпляра));

Возврат Ключ;

КонецФункции

// Возвращает количество держателей документа

Функция КоличествоКомуПереданДокумент(Документ) Экспорт

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| КОЛИЧЕСТВО(*) КАК Количество

|ИЗ

| РегистрСведений.ЖурналПередачиДокументов КАК ЖурналПередачиДокументов