РезультатОбработки = "";
Попытка
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ВЫБОР
| КОГДА Согл.Выполнена
| ТОГДА ВЫБОР
| КОГДА Результаты.Результат = ЗНАЧЕНИЕ(Перечисление.ВариантыВыполненияПроцессовИЗадач.Положительно)
| ТОГДА ""Согласовано""
| КОГДА Результаты.Результат = ЗНАЧЕНИЕ(Перечисление.ВариантыВыполненияПроцессовИЗадач.ПоложительноСЗамечаниями)
| ТОГДА ""Согласовано""
| ИНАЧЕ ""Не согласовано""
| КОНЕЦ
| ИНАЧЕ "" ""
| КОНЕЦ КАК Результат,
| Согл.ДатаСогласования КАК Дата,
| Согл.Согласователь,
| ВЫБОР
| КОГДА Согл.Согласователь = Должности.Пользователь
| ТОГДА Должности.Должность
| ИНАЧЕ Согл.СогласовательРоль
| КОНЕЦ КАК Должность,
| Согл.БизнесПроцесс.Дата КАК БизнесПроцессДата,
| Согл.Задача.ТочкаМаршрута КАК ТочкаМаршрута,
| Согл.СогласовательРоль
|ИЗ
| (ВЫБРАТЬ
| Задачи.Задача КАК Задача,
| ВнутрДокументы.Докум КАК Докум,
| БизнесПроцессы.БизнесПроцесс КАК БизнесПроцесс,
| Задачи.ДатаИсполнения КАК ДатаСогласования,
| Задачи.Задача.Исполнитель КАК Согласователь,
| БизнесПроцессы.БизнесПроцесс.Дата КАК ДатаБП,
| Задачи.Выполнена КАК Выполнена,
| Задачи.Задача.РольИсполнителя КАК СогласовательРоль
| ИЗ
| (ВЫБРАТЬ
| ВнутренниеДокументы.Ссылка КАК Докум
| ИЗ
| Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
| ГДЕ
| ВнутренниеДокументы.Ссылка = &ДокумСсылка) КАК ВнутрДокументы
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| СогласованиеПредметы.Ссылка КАК БизнесПроцесс,
| СогласованиеПредметы.Предмет КАК Предмет
| ИЗ
| БизнесПроцесс.Согласование.Предметы КАК СогласованиеПредметы
| ГДЕ
| СогласованиеПредметы.Ссылка.ПометкаУдаления = ЛОЖЬ) КАК Предметы
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| Согласование.Ссылка КАК БизнесПроцесс,
| Согласование.РезультатСогласования КАК РезультатСогласования,
| Согласование.ДатаЗавершения КАК ДатаЗавершения,
| Согласование.Завершен КАК Завершен
| ИЗ
| БизнесПроцесс.Согласование КАК Согласование
| ГДЕ
| Согласование.ПометкаУдаления = ЛОЖЬ) КАК БизнесПроцессы
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ЗадачаИсполнителя.Ссылка КАК Задача,
| ЗадачаИсполнителя.ДатаИсполнения КАК ДатаИсполнения,
| ЗадачаИсполнителя.БизнесПроцесс КАК БизнесПроцесс,
| ЗадачаИсполнителя.СостояниеБизнесПроцесса КАК СостояниеБизнесПроцесса,
| ЗадачаИсполнителя.Выполнена КАК Выполнена
| ИЗ
| Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
| ГДЕ
| ЗадачаИсполнителя.ПометкаУдаления = ЛОЖЬ) КАК Задачи
| ПО БизнесПроцессы.БизнесПроцесс = Задачи.БизнесПроцесс
| ПО Предметы.БизнесПроцесс = БизнесПроцессы.БизнесПроцесс
| ПО ВнутрДокументы.Докум.Ссылка = Предметы.Предмет) КАК Согл
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| РезВып.Объект КАК Объект,
| РезВып.Результат КАК Результат
| ИЗ
| РегистрСведений.РезультатыВыполненияПроцессовИЗадач КАК РезВып) КАК Результаты
| ПО Согл.Задача = Результаты.Объект
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОПользователяхДокументооборот КАК Должности
| ПО Согл.Согласователь = Должности.Пользователь
|
|УПОРЯДОЧИТЬ ПО
| БизнесПроцессДата,
| Согл.ДатаСогласования";
Запрос.УстановитьПараметр("ДокумСсылка", Файл.ВладелецФайла.Ссылка);
Результат = Запрос.Выполнить();
Добавка = "";
Отбор = Новый Структура("Согласователь");
Если Результат.Пустой() = Ложь Тогда
ТабРезультат = Результат.Выгрузить();
Сч = ТабРезультат.Количество();
Пока Сч > 0 Цикл
Сч = Сч - 1;
СтрРез = ТабРезультат.Получить(Сч);
Если СокрЛП(СтрРез.ТочкаМаршрута) = "Согласовать" Тогда
Отбор.Согласователь = СтрРез.Согласователь;
масСтр = ТабРезультат.НайтиСтроки(Отбор);
Если масСтр.Количество()>1 Тогда
Для Каждого Стр Из масСтр Цикл
Если Стр <> СтрРез Тогда
ТабРезультат.Удалить(Стр);
Сч = Сч - 1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Иначе //Задача Ознакомление
ТабРезультат.Удалить(СтрРез);
КонецЕсли;
КонецЦикла;
Для Каждого Выборка Из ТабРезультат Цикл
ФИО = СокрЛП(Выборка.Согласователь.ПредставлениеВДокументах);
ФИО2 = "";
Должн = СокрЛП(Выборка.Должность);
Должн2 = "";
Если СтрДлина(ФИО)>29 Тогда
ПробелНом = СтрНайти(ФИО," ");
ФИО2 = Сред(ФИО,ПробелНом+1);
ФИО = Лев(ФИО,ПробелНом);
КонецЕсли;
Если СтрДлина(Должн)>29 Тогда
ПробелНом = СтрНайти(Должн," ");
Должн2 = Сред(Должн,ПробелНом+1);
Должн = Лев(Должн,ПробелНом);
ПробелНом = СтрНайти(Должн2," ");
Пока (ПробелНом > 0) И ((СтрДлина(Должн)+ПробелНом)<29) Цикл
Должн = Должн + Лев(Должн2,ПробелНом);
Должн2 = Сред(Должн2,ПробелНом+1);
ПробелНом = СтрНайти(Должн2," ");
КонецЦикла;
КонецЕсли;
РезультатОбработки = РезультатОбработки+Добавка+ Должн + Символ(9)+СокрЛП(Выборка.Результат) +Символ(9);
РезультатОбработки = РезультатОбработки+Формат(Выборка.Дата,"ДЛФ=D")+Символ(9)+ ФИО;
Добавка = Символ(13)+Символ(13);
Пока (СтрДлина(ФИО2)>0) ИЛИ (СтрДлина(Должн2)>0) Цикл
ФИО = ФИО2;
ФИО2 = "";
Должн = Должн2;
Должн2 = "";
Если СтрДлина(ФИО)>29 Тогда
ПробелНом = СтрНайти(ФИО," ");
ФИО2 = Сред(ФИО,ПробелНом+1);
ФИО = Лев(ФИО,ПробелНом);
КонецЕсли;
Если СтрДлина(Должн)>29 Тогда
ПробелНом = СтрНайти(Должн," ");
Должн2 = Сред(Должн,ПробелНом+1);
Должн = Лев(Должн,ПробелНом);
ПробелНом = СтрНайти(Должн2," ");
Пока (ПробелНом > 0) И ((СтрДлина(Должн)+ПробелНом)<29)Цикл
Должн = Должн + Лев(Должн2,ПробелНом);
Должн2 = Сред(Должн2,ПробелНом+1);
ПробелНом = СтрНайти(Должн2," ");
КонецЦикла;
КонецЕсли;
РезультатОбработки = РезультатОбработки+Символ(13)+Должн+Символ(9)+Символ(9)+Символ(9)+ФИО;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Исключение
КонецПопытки;
РезультатОбработки = ?(РезультатОбработки=""," ",РезультатОбработки); |