0
Feunoir
22.04.16
✎
11:52
|
Всего мнений: 10
Выношу на всеобщее обсуждение красоту и утончённость кода. Писал сотрудник франчайзи.
Процедура ЗаписьОбИстеченииСрокаДокументаТС() Экспорт
ПравоНастройка = ПланыВидовХарактеристик.уатПраваИНастройки.ДниДоОкончанияДействияДокументовТС;
СписокПользователей = Новый Массив;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Пользователи.Ссылка
|ИЗ
| Справочник.Пользователи КАК Пользователи";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий()Цикл
СписокПользователей.Добавить(Выборка.Ссылка);
КонецЦикла;
СписокДиспетчеров = ОтобратьДиспетчеровПоОрганизации(СписокПользователей);
ЗапросНастроек = Новый Запрос;
ЗапросНастроек.Текст =
"ВЫБРАТЬ
| уатПраваИНастройки.Объект,
| уатПраваИНастройки.ПравоНастройка,
| уатПраваИНастройки.Значение
|ИЗ
| РегистрСведений.уатПраваИНастройки КАК уатПраваИНастройки
|ГДЕ
| уатПраваИНастройки.ПравоНастройка = &ПравоНастройка";
ЗапросНастроек.УстановитьПараметр("ПравоНастройка", ПравоНастройка);
ТаблНастроек = ЗапросНастроек.Выполнить().Выгрузить();
ЗапросОрганизаций = Новый Запрос;
ЗапросОрганизаций.Текст =
"ВЫБРАТЬ
| Организации.Ссылка
|ИЗ
| Справочник.Организации КАК Организации";
ТаблОрганизаций = ЗапросОрганизаций.Выполнить().Выгрузить();
Для Каждого СтрокаОрганизаций Из ТаблОрганизаций Цикл
Организация = СтрокаОрганизаций.Ссылка;
Для Каждого СтрокаНастроек из ТаблНастроек Цикл
Если Организация = СтрокаНастроек.Объект Тогда
ДатаОкончания = ТекущаяДата() + СтрокаНастроек.Значение * 86400;
КонецЕсли;
КонецЦикла;
ЗапросДокументов = Новый Запрос;
ЗапросДокументов.Текст =
"ВЫБРАТЬ
| уатДокументыТС.ВидДокумента,
| уатДокументыТС.Номер,
| уатДокументыТС.ТС,
| уатДокументыТС.ДатаОкончания,
| уатДокументыТС.ТС.Организация
|ИЗ
| РегистрСведений.уатДокументыТС КАК уатДокументыТС
|ГДЕ
| уатДокументыТС.ДатаОкончания <= &ДатаОкончания";
ЗапросДокументов.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
ТаблДокументов = ЗапросДокументов.Выполнить().Выгрузить();
Для Каждого Диспетчер из СписокДиспетчеров Цикл
Индекс = 0;
ЗапросГруппы = Новый Запрос;
ЗапросГруппы.Текст =
"ВЫБРАТЬ
| ГруппыПользователей.Ссылка
|ИЗ
| Справочник.ГруппыПользователей КАК ГруппыПользователей";
Группы = ЗапросГруппы.Выполнить().Выгрузить();
МассивГрупп = Новый Массив;
Для каждого СтрокаГруппы из Группы Цикл
Для каждого Стр из СтрокаГруппы.Ссылка.Состав Цикл
Если Стр.Пользователь = Диспетчер Тогда
МассивГрупп.Добавить(СтрокаГруппы);
КонецЕсли;
КонецЦикла;
КонецЦикла;
//Выбираем записи из регистра с группами в которые входит выбранный пользователь
ЗапросДоступа = Новый Запрос;
ЗапросДоступа.Текст =
"ВЫБРАТЬ
| ордс_НастройкаПравДоступаПользователей.ОбъектДоступа
|ИЗ
| РегистрСведений.ордс_НастройкаПравДоступаПользователей КАК ордс_НастройкаПравДоступаПользователей
|ГДЕ
| ордс_НастройкаПравДоступаПользователей.Пользователь В (&МассивГрупп)";
ЗапросДоступа.УстановитьПараметр("МассивГрупп", МассивГрупп);
РезультатДоступа = ЗапросДоступа.Выполнить().Выгрузить();
МассивДоступа = Новый Массив;
Для Каждого СтрокаДоступа Из РезультатДоступа Цикл
МассивДоступа.Добавить(СтрокаДоступа.ОбъектДоступа);
КонецЦикла;
Для Каждого СтрокаДокументов Из ТаблДокументов Цикл
Для Каждого ЭлементДоступа Из МассивДоступа Цикл
Если ЭлементДоступа = СтрокаДокументов.ТС.Организация И
Организация = СтрокаДокументов.ТС.Организация Тогда
МенеджерЗаписи = РегистрыСведений.НапоминанияПользователя.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Пользователь = Диспетчер;
МенеджерЗаписи.ВремяСобытия = ТекущаяДата() + Индекс;
МенеджерЗаписи.СрокНапоминания = ТекущаяДата() + Индекс;
МенеджерЗаписи.Описание = "Внимание! " + Строка(СтрокаДокументов.ДатаОкончания) +
" Истекает срок документа " + Строка(СтрокаДокументов.ВидДокумента) +
" № " + Строка(СтрокаДокументов.Номер) +
" ТС " + Строка(СтрокаДокументов.ТС);
МенеджерЗаписи.Записать();
Индекс = Индекс + 1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
|
|
57
Starhan
22.04.16
✎
13:38
|
(55)Я вот тоже не понимаю этих претензий чувак по любому либо в мыле делал, либо у него еще опыта не хватало, а его кинули на серьезное дело.
Вот если бы это был всеми уважаемый дядька про кодер, тогда понятно.
Это больше, чем божественно! |
|