В начало

Выгрузка отчета в структуру

 

Листинг. Модуль формы

&НаСервере

Функция Выгрузить_ОтчетДляРуководителей_вСтруктуру(Знач ДатаНачалаВзаимодействий, Знач ДатаОкончанияВзаимодействий)

 

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

           

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

            Запрос.Текст = СКД.НаборыДанных.НаборДанных1.Запрос;

            Запрос.Текст = Запрос.Текст + Символы.ПС + Символы.Таб + "И 1 = 1";

            Запрос.Текст = Запрос.Текст + Символы.ПС + Символы.Таб + "И 2 = 2";

           

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

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

           

            //Отбор только по Взаимодействиям из Слайда 9

            мВзаимодействий = Новый Массив;

            мВзаимодействий.Добавить("Обходы");

            мВзаимодействий.Добавить("Входящий телефонный звонок");

            мВзаимодействий.Добавить("Встреча в офисе");

            мВзаимодействий.Добавить("Телефонный звонок клиенту");

 

            Запрос.Текст = СтрЗаменить(Запрос.Текст, "1 = 1", "втВзаимодествия2.ВидВзаимодействия.Наименование В (&мВзаимодействий)");

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

 

            Запрос.Текст = СтрЗаменить(Запрос.Текст, "2 = 2", "втВзаимодествия2.F1_УправляющаяКомпания.Наименование <> """"");

           

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

           

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

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

            КонецЕсли;   

           

            //============

            //ТЗ

            //============

            ТЗ = Результат.Выгрузить();

            //При сворачивании ДолгСПениВсего > 99 999 999,99,

            //поэтому сначала переводим в миллионы, а потом сворачиваем

           

            Для Каждого Эл Из ТЗ Цикл

                       

                        Если ЗначениеЗаполнено(Эл.ДолгСПениВсего) Тогда

                                   Эл.ДолгСПениВсего = Эл.ДолгСПениВсего / 1000000;//В млн. руб.

                        Иначе

                                   Эл.ДолгСПениВсего = 0;

                        КонецЕсли;

                       

                        Если ЗначениеЗаполнено(Эл.СуммаЕИРЦ_Задание1483) Тогда

                                   Эл.СуммаЕИРЦ_Задание1483 = Эл.СуммаЕИРЦ_Задание1483 / 1000000;//В млн. руб.

                        Иначе

                                   Эл.СуммаЕИРЦ_Задание1483 = 0;

                        КонецЕсли;   

                       

            КонецЦикла;//ТЗ

                       

            ТЗ.Свернуть("F1_УправляющаяКомпания, ВидВзаимодействия", "ДолгСПениВсего, СуммаЕИРЦ_Задание1483");//Сворачиваем ТЗ

            ТЗ.Колонки.Добавить("Конверсия", Новый ОписаниеТипов("Число"));

           

            Для Каждого Эл Из ТЗ Цикл

                        Если ЗначениеЗаполнено(Эл.ДолгСПениВсего) Тогда

                                   Эл.Конверсия = Эл.СуммаЕИРЦ_Задание1483 / Эл.ДолгСПениВсего * 100;

                        Иначе

                                   Эл.Конверсия = 0;

                        КонецЕсли;              

            КонецЦикла;

 

            //============================

            //Находим порядок УК для таблицы

            //============================

            ТЗ1 = ТЗ.Скопировать();

            ТЗ1.Свернуть("F1_УправляющаяКомпания", "Конверсия");      

            ТЗ1.Сортировать("Конверсия Возр");//Сортируем ТЗ по возрастанию, а вставлять потом будем по убыванию

            мПорядокУК = ТЗ1.ВыгрузитьКолонку("F1_УправляющаяКомпания");

           

            //==========

            //Массив

            //==========

            мВых = Новый Массив;

            Для Каждого Эл Из ТЗ Цикл

                                                          

                        стТемп = Новый Структура;

                        стТемп.Вставить("УК", Эл.F1_УправляющаяКомпания);

                        стТемп.Вставить("ВидВзаимодействия", Эл.ВидВзаимодействия);

                        стТемп.Вставить("Долг", Окр(Эл.ДолгСПениВсего, 1));//В млн. руб., точность 1

                        стТемп.Вставить("Оплата", Окр(Эл.СуммаЕИРЦ_Задание1483, 1));//В млн. руб., точность 1

                        стТемп.Вставить("Конверсия", Окр(Эл.Конверсия, 0));

                       

                        мВых.Добавить(стТемп);

            КонецЦикла;

           

            стВых = Новый Структура;

            стВых.Вставить("ПорядокУК", мПорядокУК);

            стВых.Вставить("ДанныеДляСлайда", мВых);

           

            Возврат стВых;

           

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