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

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

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

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

Добавлен: 28.06.2023

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

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

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

|ГДЕ

| ЖурналПередачиДокументов.Документ = &Документ

| И ЖурналПередачиДокументов.Возвращен = ЛОЖЬ";

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

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

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

Возврат 0;

КонецЕсли;

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

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

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

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

// Формирует строку информации о держателях документа

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

Если Не ЗначениеЗаполнено(Документ) Тогда

Возврат "";

КонецЕсли;

ОригиналПередан = "";

ОригиналПереданДата = '00010101';

ОригиналПереданМассив = Новый Массив;

ОригиналПереданКоличество = 0;

КопияПередана = "";

КопияПереданаДата = '00010101';

КопияПереданаМассив = Новый Массив;

КопияПереданаКоличество = 0;

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

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

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

| ЖурналПередачиДокументов.ТипЭкземпляра КАК ТипЭкземпляра,

| ЖурналПередачиДокументов.Пользователь КАК Пользователь,

| ЖурналПередачиДокументов.Период КАК ДатаПередачи,

| ЖурналПередачиДокументов.НомерЭкземпляра КАК НомерЭкземпляра

|ИЗ

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

|ГДЕ

| ЖурналПередачиДокументов.Документ = &Документ

| И ЖурналПередачиДокументов.Возвращен = ЛОЖЬ";

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

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

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

Если Выборка.ТипЭкземпляра = Перечисления.ТипыЭкземпляров.Оригинал Тогда

Если ОригиналПереданМассив.Найти(Выборка.Пользователь) = Неопределено Тогда

ОригиналПередан = ОригиналПередан + Строка(Выборка.Пользователь) + ", ";

ОригиналПереданМассив.Добавить(Выборка.Пользователь);

КонецЕсли;

ОригиналПереданКоличество = ОригиналПереданКоличество + 1;

ОригиналПереданДата = Выборка.ДатаПередачи;

ИначеЕсли Выборка.ТипЭкземпляра = Перечисления.ТипыЭкземпляров.Копия Тогда

Если КопияПереданаМассив.Найти(Выборка.Пользователь) = Неопределено Тогда

КопияПередана = КопияПередана + Строка(Выборка.Пользователь) + ", ";

КопияПереданаМассив.Добавить(Выборка.Пользователь);

КонецЕсли;

КопияПереданаКоличество = КопияПереданаКоличество + 1;

КопияПереданаДата = Выборка.ДатаПередачи;

КонецЕсли;

КонецЦикла;

Если ОригиналПередан <> "" Тогда

ОригиналПередан = Лев(ОригиналПередан, СтрДлина(ОригиналПередан) - 2);

Если ОригиналПереданКоличество = 1 Тогда


ОригиналПередан = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

НСтр("ru = 'Оригинал находится у пользователя %1 с %2'"),

ОригиналПередан,

Формат(ОригиналПереданДата, "ДФ=dd.MM.yyyy"));

ИначеЕсли ОригиналПереданКоличество > 1 Тогда

Если ОригиналПереданМассив.Количество() = 1 Тогда

ОригиналПередан = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

НСтр("ru = 'Оригиналы находятся у пользователя %1'"),

ОригиналПередан);

Иначе

ОригиналПередан = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

НСтр("ru = 'Оригиналы находятся у пользователей %1'"),

ОригиналПередан);

КонецЕсли;

КонецЕсли;

КонецЕсли;

Если КопияПередана <> "" Тогда

КопияПередана = Лев(КопияПередана, СтрДлина(КопияПередана) - 2);

Если КопияПереданаКоличество = 1 Тогда

КопияПередана = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

НСтр("ru = 'Копия находится у пользователя %1 с %2'"),

КопияПередана,

Формат(КопияПереданаДата, "ДФ=dd.MM.yyyy"));

ИначеЕсли КопияПереданаКоличество > 1 Тогда

Если КопияПереданаМассив.Количество() = 1 Тогда

КопияПередана = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

НСтр("ru = 'Копии находятся у пользователя %1'"),

КопияПередана);

Иначе

КопияПередана = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

НСтр("ru = 'Копии находятся у пользователей %1'"),

КопияПередана);

КонецЕсли;

КонецЕсли;

КонецЕсли;

Если ОригиналПередан <> "" И КопияПередана <> "" Тогда

Возврат ОригиналПередан + Символы.ПС + КопияПередана;

Иначе

Возврат ОригиналПередан + КопияПередана;

КонецЕсли;

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

// Получает актуальное состояние дела

Функция ПолучитьСостояниеДела(Дело) Экспорт

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

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

КонецЕсли;

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

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

"ВЫБРАТЬ

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

|ИЗ

| РегистрСведений.СостоянияДелХраненияДокументов.СрезПоследних(, ДелоХраненияДокументов = &Дело) КАК СостоянияДелХраненияДокументов";

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

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

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

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

КонецЕсли;

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

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

Возврат Выборка.Состояние;

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


// Возвращает режим выбора вида документа

Функция ПолучитьРежимВыбораВидаДокумента(ТипДокумента) Экспорт

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

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

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

ВидДокумента = "ВидыИсходящихДокументов";

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

ВидДокумента = "ВидыВнутреннихДокументов";

КонецЕсли;

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

Запрос.Текст = СтрЗаменить(

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

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

|ГДЕ

| ВЫБОР

| КОГДА ЛОЖЬ В

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

| ЛОЖЬ

| ИЗ

| &ВидДокумента КАК ТаблицаВидаДокументов

| ГДЕ

| ТаблицаВидаДокументов.ЭтоГруппа)

| ТОГДА ИСТИНА

| ИНАЧЕ ЛОЖЬ В

| (ВЫБРАТЬ

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

| ИЗ

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

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

| ИЗ

| &ВидДокумента КАК ТаблицаВидаДокументов

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

| ИМЕЮЩИЕ

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

| КОНЕЦ", "&ВидДокумента", "Справочник." + ВидДокумента);

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

БыстрыйВыборВидаДокумента = Результат.Пустой();

Возврат БыстрыйВыборВидаДокумента;

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

// Проверяет проверку возможности отнесения документа в дело

Функция ДелоМожетСодержатьДокумент(ТипПроверки, ЗначениеПроверки, Дело) Экспорт

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

Если ТипПроверки = "ВидыДокументов" Тогда

Если ЗначениеЗаполнено(ЗначениеПроверки) И Дело.НоменклатураДел.ВидыДокументов.Количество() > 0 Тогда

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

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

"ВЫБРАТЬ

| ИСТИНА

|ГДЕ

| &ВидДокумента В ИЕРАРХИИ

| (ВЫБРАТЬ

| ВидыДокументов.ВидДокумента

| ИЗ

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

| ГДЕ

| ВидыДокументов.Ссылка = &НоменклатураДел)";

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

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

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

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

Возврат Ложь;

КонецЕсли;

КонецЕсли;

ИначеЕсли ТипПроверки = "Корреспонденты" Тогда

Если ЗначениеЗаполнено(ЗначениеПроверки) И Дело.НоменклатураДел.Корреспонденты.Количество() > 0 Тогда

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

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

"ВЫБРАТЬ

| ИСТИНА

|ГДЕ

| &Корреспондент В ИЕРАРХИИ

| (ВЫБРАТЬ

| Корреспонденты.Корреспондент

| ИЗ

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


| ГДЕ

| Корреспонденты.Ссылка = &НоменклатураДел)";

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

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

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

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

Возврат Ложь;

КонецЕсли;

КонецЕсли;

ИначеЕсли ТипПроверки = "ВопросыДеятельности" Тогда

Если ЗначениеЗаполнено(ЗначениеПроверки) И Дело.НоменклатураДел.ВопросыДеятельности.Количество() > 0 Тогда

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

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

"ВЫБРАТЬ

| ИСТИНА

|ГДЕ

| &ВопросДеятельности В ИЕРАРХИИ

| (ВЫБРАТЬ

| ВопросыДеятельности.ВопросДеятельности

| ИЗ

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

| ГДЕ

| ВопросыДеятельности.Ссылка = &НоменклатураДел)";

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

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

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

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

Возврат Ложь;

КонецЕсли;

КонецЕсли;

КонецЕсли;

Возврат Истина;

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

// Возвражает Истина, если корреспондент является юридическим лицом

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

Возврат ЗначениеЗаполнено(Корреспондент)

И ТипЗнч(Корреспондент) = Тип("СправочникСсылка.Корреспонденты")

И (Корреспондент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо

Или Корреспондент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель

Или Корреспондент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицоНеРезидент);

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

// Возвражает структуру данных корреспондента

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

ДанныеКорреспондента = Новый Структура;

ДанныеКорреспондента.Вставить("КорреспондентЮрЛицо", КорреспондентЮрЛицо(Корреспондент));

ДанныеКорреспондента.Вставить("КонтактноеЛицо", КонтактноеЛицоКорреспондента(Корреспондент));

Возврат ДанныеКорреспондента;

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

Процедура УдалитьВременныеСохраненныеПоиски(ТекущийПользователь) Экспорт

СписокСохраненныхПоисков = ХранилищеНастроекДанныхФорм.ПолучитьСписок("Обработка.ПоискПоРеквизитам.Форма.ПоискДокументовИФайлов");

Для Каждого СохраненныйПоиск Из СписокСохраненныхПоисков Цикл

КлючПоиска = СохраненныйПоиск.Значение;

Если Найти(КлючПоиска, "_временный_") > 0 Тогда

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

ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ТекущийПользователь.ИдентификаторПользователяИБ);


Если ПользовательИБ <> Неопределено Тогда

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

КонецЕсли;

КонецЕсли;

КонецЦикла;

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

Функция ПолучитьТекущуюДату() Экспорт

Возврат ТекущаяДатаСеанса();

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

// Получает признак Отправлен

Функция ПолучитьПризнакОтправлен(ИсходящийДокумент, Получатель, Адресат) Экспорт

Отправлен = Ложь;

ПараметрыОтбора = Новый Структура("Получатель", Получатель);

НайденныеСтроки = ИсходящийДокумент.Получатели.НайтиСтроки(ПараметрыОтбора);

Если НайденныеСтроки.Количество() = 1 Тогда

Отправлен = НайденныеСтроки[0].Отправлен;

Иначе

ПараметрыОтбора = Новый Структура("Получатель, Адресат", Получатель, Адресат);

НайденныеСтроки = ИсходящийДокумент.Получатели.НайтиСтроки(ПараметрыОтбора);

Если НайденныеСтроки.Количество() = 1 Тогда

Отправлен = НайденныеСтроки[0].Отправлен;

КонецЕсли;

КонецЕсли;

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

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

// Заполнить подчиненные документы

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

Ссылка = СтрокаДерева.Ссылка;

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

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

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

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

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

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

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

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

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

|ИЗ

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

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

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

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

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

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

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

|ГДЕ

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

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

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

|

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

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

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