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

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

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

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

Добавлен: 28.06.2023

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

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

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

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

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

| ВходящиеДокументы.Ссылка КАК Ссылка,

| ВходящиеДокументы.Заголовок КАК Заголовок,

| ВходящиеДокументы.РегистрационныйНомер КАК РегистрационныйНомер,

| ВходящиеДокументы.ДатаРегистрации КАК ДатаРегистрации,

| 0 КАК ИндексКартинки,

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

|ИЗ

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

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиДокументов КАК СвязьПредметПереписки

| ПО ВходящиеДокументы.Ссылка = СвязьПредметПереписки.Документ

| И (СвязьПредметПереписки.ТипСвязи = ЗНАЧЕНИЕ(Справочник.ТипыСвязей.ПредметПереписки))

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиДокументов КАК СвязьВОтветНа

| ПО ВходящиеДокументы.Ссылка = СвязьВОтветНа.Документ

| И (СвязьВОтветНа.ТипСвязи = ЗНАЧЕНИЕ(Справочник.ТипыСвязей.ПолученВОтветНа))

|ГДЕ

| СвязьВОтветНа.СвязанныйДокумент = &Ссылка

| И СвязьПредметПереписки.СвязанныйДокумент = &ПредметПереписки

| И (НЕ ВходящиеДокументы.ПометкаУдаления)

|

|УПОРЯДОЧИТЬ ПО

| ДатаСоздания";

КонецЕсли;

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

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

Запрос.УстановитьПараметр("Ссылка", Ссылка);

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

Выборка = Запрос.Выполнить().Выбрать();

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

НоваяСтрока = СтрокаДерева.Строки.Добавить();

ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);

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

Отправлен = ПолучитьПризнакОтправлен(Выборка.Ссылка, Ссылка.Отправитель, Ссылка.Подписал);

НоваяСтрока.ИндексКартинки = ?(Отправлен, 1, 3);

КонецЕсли;

ЗаполнитьПодчиненныеДокументы(НоваяСтрока, ПараметрыДокумент);

КонецЦикла;

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

// Заполнить дерево переписки

Функция ЗаполнитьДерево(Дерево, ПараметрыДокумент) Экспорт

Дерево.Строки.Очистить();

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

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

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

| ВходящийДокумент.Ссылка КАК Ссылка,

| ВходящийДокумент.ДатаРегистрации,

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

| ВходящийДокумент.Заголовок,

| ВходящийДокумент.ДатаСоздания КАК ДатаСоздания

|ИЗ

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

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиДокументов КАК СвязьПредметПереписки

| ПО ВходящийДокумент.Ссылка = СвязьПредметПереписки.Документ

| И (СвязьПредметПереписки.ТипСвязи = ЗНАЧЕНИЕ(Справочник.ТипыСвязей.ПредметПереписки))


| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиДокументов КАК СвязьВОтветНа

| ПО ВходящийДокумент.Ссылка = СвязьВОтветНа.Документ

| И (СвязьВОтветНа.ТипСвязи = ЗНАЧЕНИЕ(Справочник.ТипыСвязей.ПолученВОтветНа))

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиДокументов КАК СвязьВОтветНаПредметПереписки

| ПО (СвязьВОтветНа.СвязанныйДокумент = СвязьВОтветНаПредметПереписки.Документ)

| И (СвязьВОтветНаПредметПереписки.ТипСвязи = ЗНАЧЕНИЕ(Справочник.ТипыСвязей.ПредметПереписки))

|ГДЕ

| СвязьПредметПереписки.СвязанныйДокумент = &ПредметПереписки

| И (СвязьВОтветНа.СвязанныйДокумент ЕСТЬ NULL

| ИЛИ ЕСТЬNULL(СвязьВОтветНаПредметПереписки.СвязанныйДокумент, """") <> &ПредметПереписки)

| И (НЕ ВходящийДокумент.ПометкаУдаления)

|

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

|

|ВЫБРАТЬ

| ИсходящийДокумент.Ссылка,

| ИсходящийДокумент.ДатаРегистрации,

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

| ИсходящийДокумент.Заголовок,

| ИсходящийДокумент.ДатаСоздания

|ИЗ

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

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиДокументов КАК СвязьПредметПереписки

| ПО ИсходящийДокумент.Ссылка = СвязьПредметПереписки.Документ

| И (СвязьПредметПереписки.ТипСвязи = ЗНАЧЕНИЕ(Справочник.ТипыСвязей.ПредметПереписки))

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиДокументов КАК СвязьВОтветНа

| ПО ИсходящийДокумент.Ссылка = СвязьВОтветНа.Документ

| И (СвязьВОтветНа.ТипСвязи = ЗНАЧЕНИЕ(Справочник.ТипыСвязей.ОтправленВОтветНа))

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СвязиДокументов КАК СвязьВОтветНаПредметПереписки

| ПО (СвязьВОтветНа.СвязанныйДокумент = СвязьВОтветНаПредметПереписки.Документ)

| И (СвязьВОтветНаПредметПереписки.ТипСвязи = ЗНАЧЕНИЕ(Справочник.ТипыСвязей.ПредметПереписки))

|ГДЕ

| СвязьПредметПереписки.СвязанныйДокумент = &ПредметПереписки

| И (СвязьВОтветНа.СвязанныйДокумент ЕСТЬ NULL

| ИЛИ ЕСТЬNULL(СвязьВОтветНаПредметПереписки.СвязанныйДокумент, """") <> &ПредметПереписки)

| И (НЕ ИсходящийДокумент.ПометкаУдаления)

|

|УПОРЯДОЧИТЬ ПО

| ДатаСоздания";

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

ТаблДокументов = Запрос.Выполнить().Выгрузить();

ТаблДокументов.Сортировать("ДатаРегистрации");

Для Каждого Строка Из ТаблДокументов Цикл

НоваяСтрока = Дерево.Строки.Добавить();

ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);

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


НоваяСтрока.ИндексКартинки = 0;

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

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

НоваяСтрока.ИндексКартинки = 1;

Иначе

НоваяСтрока.ИндексКартинки = 3;

КонецЕсли;

КонецЕсли;

ЗаполнитьПодчиненныеДокументы(НоваяСтрока, ПараметрыДокумент);

КонецЦикла;

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

// Выводит номенклатуру дел в дерево

Процедура ЗаполнитьДеревоНоменклатурыДел(Дерево, Год, Организация) Экспорт

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

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

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

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

| РазделыНоменклатурыДел.Индекс КАК Индекс,

| РазделыНоменклатурыДел.Наименование,

| РазделыНоменклатурыДел.ПометкаУдаления,

| РазделыНоменклатурыДел.Ссылка КАК Ссылка,

| РазделыНоменклатурыДел.Родитель

|ИЗ

| Справочник.РазделыНоменклатурыДел КАК РазделыНоменклатурыДел ";

Условие = "";

Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоОрганизациям") И ЗначениеЗаполнено(Организация) Тогда

Условие = Условие + " (Организация = &Организация) И ";

Запрос.УстановитьПараметр("Организация", Организация);

КонецЕсли;

Если ЗначениеЗаполнено(Год) Тогда

Условие = Условие + " (Год = &Год) И ";

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

КонецЕсли;

Если Условие <> "" Тогда

ТекстЗапроса = ТекстЗапроса + " ГДЕ " + Лев(Условие, СтрДлина(Условие)-2);

КонецЕсли;

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

" ИТОГИ ПО

| Ссылка ТОЛЬКО ИЕРАРХИЯ

|АВТОУПОРЯДОЧИВАНИЕ";

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

Выборка = Запрос.Выполнить().Выбрать();

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

Если Не ЗначениеЗаполнено(Выборка.Ссылка) Тогда

Продолжить;

КонецЕсли;

Родитель = Выборка.Родитель;

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

СтрокаРодитель = Дерево;

Иначе

СтрокаРодитель = Дерево.Строки.Найти(Родитель, "Ссылка", Истина);

КонецЕсли;

НоваяСтрока = СтрокаРодитель.Строки.Добавить();

НоваяСтрока.Ссылка = Выборка.Ссылка;

НоваяСтрока.Наименование = Выборка.Индекс + " " + Выборка.Наименование;

НоваяСтрока.ИндексКартинки = ?(Выборка.ПометкаУдаления, 1, 0);

НоваяСтрока.ЭтоГруппа = Истина;

КонецЦикла;

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

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

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

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

| НоменклатураДел.Индекс,

| НоменклатураДел.Наименование,

| НоменклатураДел.ПометкаУдаления,


| НоменклатураДел.Ссылка КАК Ссылка,

| НоменклатураДел.Раздел

|ИЗ

| Справочник.НоменклатураДел КАК НоменклатураДел ";

Условие = "";

Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоОрганизациям") И ЗначениеЗаполнено(Организация) Тогда

Условие = Условие + " (Организация = &Организация) И ";

Запрос.УстановитьПараметр("Организация", Организация);

КонецЕсли;

Если ЗначениеЗаполнено(Год) Тогда

Условие = Условие + " (Год = &Год) И ";

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

КонецЕсли;

Если Условие <> "" Тогда

ТекстЗапроса = ТекстЗапроса + " ГДЕ " + Лев(Условие, СтрДлина(Условие)-2);

КонецЕсли;

ТекстЗапроса = ТекстЗапроса + " УПОРЯДОЧИТЬ ПО Индекс";

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

Выборка = Запрос.Выполнить().Выбрать();

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

Если Выборка.Раздел.Пустая() Тогда

СтрокаРодитель = Дерево;

Иначе

СтрокаРодитель = Дерево.Строки.Найти(Выборка.Раздел, "Ссылка", Истина);

КонецЕсли;

Если СтрокаРодитель <> Неопределено Тогда

НоваяСтрока = СтрокаРодитель.Строки.Добавить();

НоваяСтрока.Ссылка = Выборка.Ссылка;

НоваяСтрока.Наименование = Выборка.Индекс + " " + Выборка.Наименование;

НоваяСтрока.ИндексКартинки = ?(Выборка.ПометкаУдаления, 3, 2);

НоваяСтрока.ЭтоГруппа = Ложь;

КонецЕсли;

КонецЦикла;

Если Дерево.Строки.Количество() > 0 Тогда

НоваяСтрока = Дерево.Строки.Добавить();

НоваяСтрока.Ссылка = Справочники.НоменклатураДел.ПустаяСсылка();

НоваяСтрока.Наименование = НСтр("ru = '<Номенклатура дел не указана>'");

НоваяСтрока.ИндексКартинки = 2;

НоваяСтрока.ЭтоГруппа = Ложь;

КонецЕсли;

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

// Выводит дела (тома) в дерево

Процедура ЗаполнитьДеревоДелТомов(Дерево, Год, Организация) Экспорт

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

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

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

| ДелаХраненияДокументов.Ссылка,

| ДелаХраненияДокументов.Наименование,

| ДелаХраненияДокументов.ПометкаУдаления,

| ДелаХраненияДокументов.НоменклатураДел.Раздел КАК Раздел

|ИЗ

| Справочник.ДелаХраненияДокументов КАК ДелаХраненияДокументов";

Условие = "";

Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетПоОрганизациям") И ЗначениеЗаполнено(Организация) Тогда

Условие = Условие + " (ДелаХраненияДокументов.Организация = &Организация) И ";

Запрос.УстановитьПараметр("Организация", Организация);

КонецЕсли;

Если ЗначениеЗаполнено(Год) Тогда

Условие = Условие + " (ДелаХраненияДокументов.НоменклатураДел.Год = &Год) И ";


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

КонецЕсли;

Если Условие <> "" Тогда

ТекстЗапроса = ТекстЗапроса + " ГДЕ " + Лев(Условие, СтрДлина(Условие)-2);

КонецЕсли;

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

" УПОРЯДОЧИТЬ ПО

| ДелаХраненияДокументов.НоменклатураДел.Индекс,

| ДелаХраненияДокументов.НомерТома";

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

ТаблицаДела = Запрос.Выполнить().Выгрузить();

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

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

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

| РазделыНоменклатурыДел.Индекс,

| РазделыНоменклатурыДел.Наименование,

| РазделыНоменклатурыДел.ПометкаУдаления,

| РазделыНоменклатурыДел.Ссылка КАК Ссылка,

| РазделыНоменклатурыДел.Родитель

|ИЗ

| Справочник.РазделыНоменклатурыДел КАК РазделыНоменклатурыДел

|ГДЕ

| РазделыНоменклатурыДел.Ссылка В(&Разделы)

|ИТОГИ ПО

| Ссылка ТОЛЬКО ИЕРАРХИЯ

|АВТОУПОРЯДОЧИВАНИЕ";

Запрос.УстановитьПараметр("Разделы", ТаблицаДела.ВыгрузитьКолонку("Раздел"));

Выборка = Запрос.Выполнить().Выбрать();

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

Если Не ЗначениеЗаполнено(Выборка.Ссылка) Тогда

Продолжить;

КонецЕсли;

Родитель = Выборка.Родитель;

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

СтрокаРодитель = Дерево;

Иначе

СтрокаРодитель = Дерево.Строки.Найти(Родитель, "Ссылка", Истина);

КонецЕсли;

НоваяСтрока = СтрокаРодитель.Строки.Добавить();

НоваяСтрока.Ссылка = Выборка.Ссылка;

НоваяСтрока.Наименование = Выборка.Индекс + " " + Выборка.Наименование;

НоваяСтрока.ИндексКартинки = ?(Выборка.ПометкаУдаления, 1, 0);

НоваяСтрока.ЭтоГруппа = Истина;

КонецЦикла;

Для Каждого Строка Из ТаблицаДела Цикл

Если Строка.Раздел.Пустая() Тогда

СтрокаРодитель = Дерево;

Иначе

СтрокаРодитель = Дерево.Строки.Найти(Строка.Раздел, "Ссылка", Истина);

КонецЕсли;

Если СтрокаРодитель <> Неопределено Тогда

НоваяСтрока = СтрокаРодитель.Строки.Добавить();

НоваяСтрока.Ссылка = Строка.Ссылка;

НоваяСтрока.Наименование = Строка.Наименование;

НоваяСтрока.ИндексКартинки = ?(Строка.ПометкаУдаления, 3, 2);

НоваяСтрока.ЭтоГруппа = Ложь;

КонецЕсли;

КонецЦикла;

Если Дерево.Строки.Количество() > 0 Тогда

НоваяСтрока = Дерево.Строки.Добавить();

НоваяСтрока.Ссылка = Справочники.ДелаХраненияДокументов.ПустаяСсылка();

НоваяСтрока.Наименование = НСтр("ru = '<Дело (том) не указано>'");

НоваяСтрока.ИндексКартинки = 2;

НоваяСтрока.ЭтоГруппа = Ложь;

КонецЕсли;

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

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