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

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

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

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

Добавлен: 28.06.2023

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

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

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

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

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

КонецЕсли;

Если СвязанныйДокумент <> Неопределено Тогда

Если ТипЗнч(СвязанныйДокумент) = Тип("Строка")

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

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

" И (ТИПЗНАЧЕНИЯ(НастройкаСвязей.СсылкаНа) = ТИПЗНАЧЕНИЯ(&СвязанныйДокумент)) ";

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

Иначе

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

" И (НастройкаСвязей.СсылкаНа = &ВидДокументаСсылкаНа

| ИЛИ НастройкаСвязей.СсылкаНа В (&РодителиСсылкаНа)

| ИЛИ НастройкаСвязей.СсылкаНа = &ПустаяСсылкаНа) ";

ВидДокументаСсылкаНа = СвязанныйДокумент.ВидДокумента;

РодителиСсылкаНа = ПолучитьРодителей(ВидДокументаСсылкаНа);

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

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

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

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

КонецЕсли;

КонецЕсли;

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

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

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

НоваяСтрока.ТипСвязи = Выборка.ТипСвязи;

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

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

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

НоваяСтрока.ТипСсылкаИз = "СправочникСсылка.ВходящиеДокументы";

НоваяСтрока.ТипСсылкаИзПредставление = "Входящий документ";

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

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

НоваяСтрока.ТипСсылкаИзПредставление = "Исходящий документ";

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

НоваяСтрока.ТипСсылкаИз = "СправочникСсылка.ВнутренниеДокументы";

НоваяСтрока.ТипСсылкаИзПредставление = "Внутренний документ";

ИначеЕсли ТипЗнч(Выборка.СсылкаИз) = Тип("СправочникСсылка.Файлы") Тогда

НоваяСтрока.ТипСсылкаИз = "СправочникСсылка.Файлы";

НоваяСтрока.ТипСсылкаИзПредставление = "Файл";

КонецЕсли;

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

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


НоваяСтрока.ТипСсылкаНаПредставление = "Входящий документ";

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

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

НоваяСтрока.ТипСсылкаНаПредставление = "Исходящий документ";

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

НоваяСтрока.ТипСсылкаНа = "СправочникСсылка.ВнутренниеДокументы";

НоваяСтрока.ТипСсылкаНаПредставление = "Внутренний документ";

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

НоваяСтрока.ТипСсылкаНа = "Строка";

НоваяСтрока.ТипСсылкаНаПредставление = "Внешний ресурс";

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

НоваяСтрока.ТипСсылкаНа = "СправочникСсылка.Файлы";

НоваяСтрока.ТипСсылкаНаПредставление = "Файл";

КонецЕсли;

НоваяСтрока.ХарактерСвязи = Выборка.ХарактерСвязи;

НоваяСтрока.ТипОбратнойСвязи = Выборка.ТипОбратнойСвязи;

НоваяСтрока.ХарактерОбратнойСвязи = Выборка.ХарактерОбратнойСвязи;

КонецЦикла;

Возврат НастройкиСвязи;

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

Процедура УстановитьСвязь(

Документ,

НачальныйСвязанныйДокумент,

СвязанныйДокумент,

ТипСвязи,

Установил = Неопределено,

ДатаУстановки = Неопределено,

Комментарий = "") Экспорт

Если НачальныйСвязанныйДокумент = СвязанныйДокумент Тогда

Возврат;

КонецЕсли;

Если ЗначениеЗаполнено(НачальныйСвязанныйДокумент) Тогда

Если ЗначениеЗаполнено(СвязанныйДокумент) Тогда

СвязиДокументов.УдалитьСвязь(Документ, НачальныйСвязанныйДокумент, ТипСвязи);

СвязиДокументов.СоздатьСвязь(Документ, СвязанныйДокумент, ТипСвязи, Установил, ДатаУстановки, Комментарий);

Иначе

СвязиДокументов.УдалитьСвязь(Документ, НачальныйСвязанныйДокумент, ТипСвязи);

КонецЕсли;

Иначе

Если ЗначениеЗаполнено(СвязанныйДокумент) Тогда

СвязиДокументов.СоздатьСвязь(Документ, СвязанныйДокумент, ТипСвязи, Установил, ДатаУстановки, Комментарий);

КонецЕсли;

КонецЕсли;

НачальныйСвязанныйДокумент = СвязанныйДокумент;

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

Процедура ОбновитьСвязиДокумента(СвязанныйДокумент) Экспорт

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

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

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

"ВЫБРАТЬ

| СвязиДокументов.Документ,

| СвязиДокументов.ТипСвязи,

| СвязиДокументов.СвязанныйДокумент

|ИЗ

| РегистрСведений.СвязиДокументов КАК СвязиДокументов


|ГДЕ

| СвязиДокументов.СвязанныйДокумент = &СвязанныйДокумент";

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

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

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

МенеджерЗаписи = РегистрыСведений.СвязиДокументов.СоздатьМенеджерЗаписи();

МенеджерЗаписи.Документ = Выборка.Документ;

МенеджерЗаписи.ТипСвязи = Выборка.ТипСвязи;

МенеджерЗаписи.СвязанныйДокумент = Выборка.СвязанныйДокумент;

МенеджерЗаписи.УдалитьСвязанныйДокумент = Неопределено;

МенеджерЗаписи.СвязаннаяСтрока = "";

МенеджерЗаписи.Прочитать();

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

Получатели = СвязанныйДокумент.Получатели;

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

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

Отправлен = Получатели[0].Отправлен;

ИначеЕсли Получатели.Найти(Ложь, "Отправлен") = Неопределено Тогда

Отправлен = Истина;

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

ВходящийДокумент = МенеджерЗаписи.Документ;

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

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

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

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

Иначе

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

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

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

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

КонецЕсли;

КонецЕсли;

КонецЕсли;

Если Отправлен <> МенеджерЗаписи.СвязанныйДокументОтправлен Тогда

МенеджерЗаписи.Записать();

КонецЕсли;

КонецЕсли;

КонецЦикла;

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

Функция УстановитьРеквизитыПриДобавленииСвязи(ДокументСсылка, УникальныйИдентификаторДокумента, ТипСвязи) Экспорт

РеквизитыИзменены = Ложь;

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

Если (ТипСвязи = Справочники.ТипыСвязей.ПервичноеОбращение) И (Не ДокументСсылка.Повторное) Тогда

ДокументОбъект = ДокументСсылка.ПолучитьОбъект();

ЗаблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка, , УникальныйИдентификаторДокумента);

ДокументОбъект.Повторное = Истина;

ДокументОбъект.Записать();

РазблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка, УникальныйИдентификаторДокумента);


РеквизитыИзменены = Истина;

КонецЕсли;

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

ДокументОбъект = ДокументСсылка.ПолучитьОбъект();

ЗаблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка,, УникальныйИдентификаторДокумента);

ДокументОбъект.Дубликат = Истина;

ДокументОбъект.Записать();

РазблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка, УникальныйИдентификаторДокумента);

РеквизитыИзменены = Истина;

КонецЕсли;

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

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

ДокументОбъект = ДокументСсылка.ПолучитьОбъект();

ЗаблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка,, УникальныйИдентификаторДокумента);

ДокументОбъект.НеДействует = Истина;

ДокументОбъект.Записать();

РазблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка, УникальныйИдентификаторДокумента);

РеквизитыИзменены = Истина;

КонецЕсли;

КонецЕсли;

Возврат РеквизитыИзменены;

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

Функция УстановитьРеквизитыПриУдаленииСвязи(ДокументСсылка, УникальныйИдентификаторДокумента, ТипСвязи) Экспорт

РеквизитыИзменены = Ложь;

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

Если (ТипСвязи = Справочники.ТипыСвязей.ПервичноеОбращение) И ДокументСсылка.Повторное Тогда

ДокументОбъект = ДокументСсылка.ПолучитьОбъект();

ЗаблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка,, УникальныйИдентификаторДокумента);

ДокументОбъект.Повторное = Ложь;

ДокументОбъект.Записать();

РазблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка, УникальныйИдентификаторДокумента);

РеквизитыИзменены = Истина;

КонецЕсли;

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

ДокументОбъект = ДокументСсылка.ПолучитьОбъект();

ЗаблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка,, УникальныйИдентификаторДокумента);

ДокументОбъект.Дубликат = Ложь;

ДокументОбъект.Записать();

РазблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка, УникальныйИдентификаторДокумента);

РеквизитыИзменены = Истина;

КонецЕсли;

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

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


ДокументОбъект = ДокументСсылка.ПолучитьОбъект();

ЗаблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка,, УникальныйИдентификаторДокумента);

ДокументОбъект.НеДействует = Ложь;

ДокументОбъект.Записать();

РазблокироватьДанныеДляРедактирования(ДокументОбъект.Ссылка, УникальныйИдентификаторДокумента);

РеквизитыИзменены = Истина;

КонецЕсли;

КонецЕсли;

Возврат РеквизитыИзменены;

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

// Обработчик обновления информационной базы

//

Процедура ПерейтиНаВерсию_1_2_1_3() Экспорт

Набор = РегистрыСведений.СвязиДокументов.СоздатьНаборЗаписей();

Набор.Отбор.ТипСвязи.Установить(Справочники.ТипыСвязей.Содержит);

Набор.Прочитать();

Набор.Очистить();

Набор.Записать(Истина);

Набор = РегистрыСведений.СвязиДокументов.СоздатьНаборЗаписей();

Набор.Отбор.ТипСвязи.Установить(Справочники.ТипыСвязей.ВходитВКомплект);

Набор.Прочитать();

Набор.Очистить();

Набор.Записать(Истина);

УстановитьКомментарийТипаСвязи(Справочники.ТипыСвязей.ВходитВКомплект, НСтр("ru = 'Ссылка на комплект документов'"));

УстановитьКомментарийТипаСвязи(Справочники.ТипыСвязей.Содержит, НСтр("ru = 'Ссылка на элемент комплекта'"));

СоздатьНастройкуСвязи(Справочники.ТипыСвязей.Содержит,

Справочники.ВидыВнутреннихДокументов.ПустаяСсылка(),

Справочники.ВидыВнутреннихДокументов.ПустаяСсылка(),

Перечисления.ХарактерСвязей.Множественная,

Справочники.ТипыСвязей.ВходитВКомплект,

Перечисления.ХарактерСвязей.Множественная,

Истина);

СоздатьНастройкуСвязи(Справочники.ТипыСвязей.Содержит,

Справочники.ВидыВнутреннихДокументов.ПустаяСсылка(),

Справочники.ВидыВходящихДокументов.ПустаяСсылка(),

Перечисления.ХарактерСвязей.Множественная,

Справочники.ТипыСвязей.ВходитВКомплект,

Перечисления.ХарактерСвязей.Множественная,

Истина);

СоздатьНастройкуСвязи(Справочники.ТипыСвязей.Содержит,

Справочники.ВидыВнутреннихДокументов.ПустаяСсылка(),

Справочники.ВидыИсходящихДокументов.ПустаяСсылка(),

Перечисления.ХарактерСвязей.Множественная,

Справочники.ТипыСвязей.ВходитВКомплект,

Перечисления.ХарактерСвязей.Множественная,

Истина);

СоздатьНастройкуСвязи(Справочники.ТипыСвязей.Содержит,

Справочники.ВидыВнутреннихДокументов.ПустаяСсылка(),

Справочники.Файлы.ПустаяСсылка(),

Перечисления.ХарактерСвязей.Множественная,,,

Истина);

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

Процедура ОбновитьСвязиПриРазделенииИзмерения() Экспорт