repo1219 @ Сегодня, 20:45
,
Вот как я формирую данные
ДанныеСотрудниковЗапериод = Новый Структура;
СписокСотрудников = Новый Массив;
Для Каждого Стр Из Сотрудники Цикл
Если Стр.Выбран Тогда
СписокСотрудников.Добавить(Стр.Сотрудник);
КонецЕсли;
КонецЦикла;
СоотПоказателейКИменамВЗапросе = Новый Соответствие;
СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.ОбщиеВремяЗвонка, "ВремяЗвонков");
СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.КоличествоВходящихЗвонков, "Входящее");
СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.КоличествоИсходящихЗвонков, "Исходящее");
СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.КоличествоЗаказов, "КоличествоЗаказов");
СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.ОбщаяСуммаЗаказа, "СуммаЗаказов");
СоотПоказателейКИменамВЗапросе.Вставить(Перечисления.ПоказателиСотрудников.НизкаяАктивность, "СлабаяАктивность");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Пользователи.Ссылка КАК Пользователь,
| ЕСТЬNULL(Званки.ВремяЗвонков, 0) КАК ВремяЗвонков,
| ЕСТЬNULL(Званки.Входящее, 0) КАК Входящее,
| ЕСТЬNULL(Званки.Исходящее, 0) КАК Исходящее,
| ЕСТЬNULL(Заказы.КоличествоЗаказов, 0) КАК КоличествоЗаказов,
| ЕСТЬNULL(Заказы.СуммаЗаказов, 0) КАК СуммаЗаказов,
| ЕСТЬNULL(Активность.СлабаяАктивность, 0) КАК СлабаяАктивность
|ИЗ
| Справочник.Пользователи КАК Пользователи
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| Событие.Ответственный КАК Пользователь,
| СУММА(РАЗНОСТЬДАТ(Событие.НачалоСобытия, Событие.ОкончаниеСобытия, СЕКУНДА)) КАК ВремяЗвонков,
| СУММА(ВЫБОР
| КОГДА Событие.ТипСобытия = ЗНАЧЕНИЕ(Перечисление.ВходящееИсходящееСобытие.Входящее)
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ) КАК Входящее,
| СУММА(ВЫБОР
| КОГДА Событие.ТипСобытия = ЗНАЧЕНИЕ(Перечисление.ВходящееИсходящееСобытие.Исходящее)
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ) КАК Исходящее
| ИЗ
| Документ.Событие КАК Событие
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияЗвонков КАК ИсторияЗвонков
| ПО Событие.ИдЗвонка = ИсторияЗвонков.ИДЗвонка
| И (ИсторияЗвонков.ВидНеобработаногоЗвонка = ЗНАЧЕНИЕ(Перечисление.ВидыНеобработаныхЗвонков.Недозвон))
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИзбранныеКонтрагентыДляКнигиТелефонии КАК ИзбранныеКонтрагентыДляКнигиТелефонии
| ПО Событие.Контрагент = ИзбранныеКонтрагентыДляКнигиТелефонии.Контрагент
| ГДЕ
| Событие.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И Событие.Ответственный В(&Сотрудник)
| И РАЗНОСТЬДАТ(Событие.НачалоСобытия, Событие.ОкончаниеСобытия, МИНУТА) <= 70
| И Событие.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыСобытий.ТелефонныйЗвонок)
| И НЕ Событие.НачалоСобытия = ДАТАВРЕМЯ(1, 1, 1)
| И НЕ Событие.ОкончаниеСобытия = ДАТАВРЕМЯ(1, 1, 1)
| И Событие.НачалоСобытия < Событие.ОкончаниеСобытия
| И ИсторияЗвонков.ВидНеобработаногоЗвонка ЕСТЬ NULL
| И ИзбранныеКонтрагентыДляКнигиТелефонии.Контрагент ЕСТЬ NULL
|
| СГРУППИРОВАТЬ ПО
| Событие.Ответственный) КАК Званки
| ПО (Званки.Пользователь = Пользователи.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ЗаказПокупателя.Ответственный КАК Пользователь,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказПокупателя.Ссылка) КАК КоличествоЗаказов,
| СУММА(ЗаказПокупателя.СуммаДокумента) КАК СуммаЗаказов
| ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
| ГДЕ
| ЗаказПокупателя.Ответственный В(&Сотрудник)
| И ЗаказПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И НЕ ЗаказПокупателя.ПометкаУдаления
| И НЕ ЗаказПокупателя.СтатусЗаказа.СтатусОтмена
|
| СГРУППИРОВАТЬ ПО
| ЗаказПокупателя.Ответственный) КАК Заказы
| ПО (Заказы.Пользователь = Пользователи.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| СлабаяАктивностьМенеджеров.Менеджер КАК Пользователь,
| КОЛИЧЕСТВО(СлабаяАктивностьМенеджеров.ВидСобытия) КАК СлабаяАктивность
| ИЗ
| РегистрСведений.СлабаяАктивностьМенеджеров КАК СлабаяАктивностьМенеджеров
| ГДЕ
| СлабаяАктивностьМенеджеров.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И СлабаяАктивностьМенеджеров.Менеджер В(&Сотрудник)
|
| СГРУППИРОВАТЬ ПО
| СлабаяАктивностьМенеджеров.Менеджер) КАК Активность
| ПО Пользователи.Ссылка = Активность.Пользователь
|ГДЕ
| Пользователи.Ссылка В(&Сотрудник)";
Запрос.УстановитьПараметр("Сотрудник", СписокСотрудников);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
РезультатЗапроса = Запрос.Выполнить();
Выб = РезультатЗапроса.Выбрать();
Пока Выб.Следующий() Цикл
ТекущийПоказательПользователя = 0;
ИмяКолонкиСотрудникаВРасшифровке = НумерацияСотрудников.Получить(Выб.Пользователь);
Для Каждого Стр Из Показатели Цикл
Если Стр.Выбран Тогда
Если Стр.Показатель = Перечисления.ПоказателиСотрудников.НизкаяАктивность Тогда
ТекущийПоказательПользователя = ТекущийПоказательПользователя + Выб[СоотПоказателейКИменамВЗапросе.Получить(Стр.Показатель)] * Стр.Коэффициент * -1;
Иначе
ТекущийПоказательПользователя = ТекущийПоказательПользователя + Выб[СоотПоказателейКИменамВЗапросе.Получить(Стр.Показатель)] * Стр.Коэффициент;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ДанныеСотрудниковЗапериод.Вставить(ИмяКолонкиСотрудникаВРасшифровке, ТекущийПоказательПользователя);
МинимальныйПоказательПоСотруднику = Мин(МинимальныйПоказательПоСотруднику, ?(ТекущийПоказательПользователя = 0, МинимальныйПоказательПоСотруднику, ТекущийПоказательПользователя));
МаксимальныйПоказательПоСотруднику = Макс(МаксимальныйПоказательПоСотруднику, ?(ТекущийПоказательПользователя = 0, МаксимальныйПоказательПоСотруднику, ТекущийПоказательПользователя));
СоотвествМин=новый Соответствие;
Для каждого Значения из расшифровка.колонки.Количество()цикл
СоотвествМин.Вставить(МинимальныйПоказательПоСотруднику,Значения);
конеццикла;
Возврат ДанныеСотрудниковЗапериод;
Сообщение отредактировал Vofka - 13.05.20, 8:18