- •Содержание
- •Введение
- •1 Описание предметной области
- •2 Постановка задачи
- •3 Структура прикладного решения
- •3.1 Перечисления
- •3.2 Справочники
- •Описание параметров получения данных;
- •Описание макетов полей и группировок и др.
- •4 Анализ данных в 1с:Предприятие 8.2 на примере проведения кластерного анализа, общей статистики и поиска последовательностей
- •4.1 Кластерный анализ на платформе 1с:Предприятие 8.2
- •4.2 Общая статистика на платформе 1с:Предприятие 8.2
- •4.3 Поиск последовательностей на платформе 1с:Предприятие 8.2
- •5 Описание работы системы
- •Список использованных источников
- •Приложение а
- •Листинг программы Модуль отчета «Проекты сотрудника»
- •Модуль отчета «Затраты за период»
- •Модуль отчета «Динамика финансирования»
- •Модуль отчета «Кластерный анализ»
- •Модуль формы обработки «Приоритет ремонта»
- •Модуль формы обработки «Статистика домов»
- •Модуль формы обработки «Статистика ремонта»
- •Модуль формы обработки «Поиск последовательностей»
Модуль отчета «Динамика финансирования»
Процедура ДействияФормыОтчет1Сформировать(Кнопка)
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(Отчет1)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Диаграмма = ЭлементыФормы.Диаграмма;
Отчет1(Диаграмма, Номер_проекта);
//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА
КонецПроцедуры
Процедура Отчет1(Диаграмма, Номер_проекта) Экспорт
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Отчет1)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Решение.Финансирование КАК Финансирование,
| Решение.Дата КАК Дата
|ИЗ
| Документ.Решение КАК Решение
|ГДЕ
| Решение.Номер_проекта = &Номер_проекта
|ИТОГИ
| СУММА(Финансирование)
|ПО
| Дата";
Запрос.УстановитьПараметр("Номер_проекта", Номер_проекта);
Результат = Запрос.Выполнить();
Диаграмма.Обновление = Ложь;
Диаграмма.Очистить();
Диаграмма.АвтоТранспонирование = Ложь;
Точка = Диаграмма.УстановитьТочку("Финансирование");
ВыборкаДата = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДата.Следующий() Цикл
Серия = Диаграмма.УстановитьСерию(ВыборкаДата.Дата);
Серия.Текст = ВыборкаДата.Дата;
Серия.Расшифровка = ВыборкаДата.Дата;
Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаДата.Финансирование, Серия.Расшифровка);
КонецЦикла;
Диаграмма.АвтоТранспонирование = Истина;
Диаграмма.Обновление = Истина;
//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры
Модуль отчета «Кластерный анализ»
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
КонецПроцедуры
Процедура ПриЗакрытии()
КонецПроцедуры
Процедура ДействияФормыОтчетСформировать(Кнопка)
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(Отчет)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
Отчет(ТабДок);
//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА
КонецПроцедуры
Процедура Отчет(ТабДок) Экспорт
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Отчет)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
//кластеризация
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СтатусПроектаСрезПоследних.НарядНаРемонт,
| СтатусПроектаСрезПоследних.НарядНаРемонт.Затраты - СтатусПроектаСрезПоследних.Финансирование КАК Поле1
|ИЗ
| РегистрСведений.СтатусПроекта.СрезПоследних(&текущ, ) КАК СтатусПроектаСрезПоследних
|ГДЕ
| СтатусПроектаСрезПоследних.НарядНаРемонт.Затраты - СтатусПроектаСрезПоследних.Финансирование > 0";
Запрос.УстановитьПараметр("текущ",ТекущаяДата());
//Запрос.УстановитьПараметр("Статус1",Перечисления.Статус.Заморожен);
//Запрос.УстановитьПараметр("Статус2",Перечисления.Статус.Не_обслужен);
Результат = Запрос.Выполнить();
Анализ = Новый АнализДанных;
Анализ.ТипАнализа = Тип("АнализДанныхКластеризация");
///
Анализ.Параметры.типзаполнениятаблицы.значение=ТипЗаполненияТаблицыРезультатаАнализаДанных.ИспользуемыеПоля;
///
Анализ. ИсточникДанных = Результат.Выгрузить();
// выбор метрики
Анализ.Параметры.МераРасстояния.Значение = ТипМерыРасстоянияАнализаДанных.ЕвклидоваМетрикаВКвадрате;
// выбор метода кластеризации
Анализ.Параметры.МетодКластеризации.Значение = МетодКластеризации.КСредних;
//анализ
//анализ.Параметры.КоличествоКластеров.значение=4;
РезультатАнализа = Анализ.Выполнить();
//выгрузка результата анализа в табличное поле кластеризация
кластеризация=РезультатАнализа.ТаблицаКластеризации;
кластеризация.Колонки.Удалить(1);
//конец кластер анализа
//Параметры
МенВрТаб = Новый МенеджерВременныхТаблиц;
времтаб = Новый Запрос;
времтаб.МенеджерВременныхТаблиц=МенВрТаб;
времтаб.Текст = "ВЫБРАТЬ
| табл.НарядНаРемонт КАК Наряд,
| табл.Кластер
|ПОМЕСТИТЬ временнаятаблица
|ИЗ
| &таблица КАК табл
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| временнаятаблица.Кластер,
| МАКСИМУМ(СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование) КАК Поле1
|ИЗ
| временнаятаблица КАК временнаятаблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СтатусПроекта.СрезПоследних(&дата, ) КАК СтатусПроектаСрезПоследних
| ПО временнаятаблица.Наряд = СтатусПроектаСрезПоследних.НарядНаРемонт
|
|СГРУППИРОВАТЬ ПО
| временнаятаблица.Кластер
|
|УПОРЯДОЧИТЬ ПО
| Поле1";
времтаб.УстановитьПараметр("дата",ТекущаяДата());
времтаб.УстановитьПараметр("таблица", кластеризация);
финклстер=времтаб.Выполнить();
//////////////////////
Макет = ОтчетОбъект.ПолучитьМакет("Отчет");
//временная таблица
МенВрТаб = Новый МенеджерВременныхТаблиц;
времтаб = Новый Запрос;
времтаб.МенеджерВременныхТаблиц=МенВрТаб;
времтаб.Текст = "ВЫБРАТЬ
| табл.НарядНаРемонт КАК Наряд,
| табл.Кластер
|ПОМЕСТИТЬ временнаятаблица
|ИЗ
| &таблица КАК табл
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| временнаятаблица.Наряд,
| СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование КАК ТребФ,
| ВЫБОР
| КОГДА СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование МЕЖДУ 0 И &к1
| ТОГДА ""Высокий""
| ИНАЧЕ ВЫБОР
| КОГДА СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование МЕЖДУ &к1 И &к2
| ТОГДА ""Средний""
| ИНАЧЕ ВЫБОР
| КОГДА СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование МЕЖДУ &к2 И &к3
| ТОГДА ""Низкий""
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ КАК Срочность
|ИЗ
| РегистрСведений.СтатусПроекта.СрезПоследних(&дата, ) КАК СтатусПроектаСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ временнаятаблица КАК временнаятаблица
| ПО СтатусПроектаСрезПоследних.НарядНаРемонт = временнаятаблица.Наряд
|ГДЕ
| СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование > 0
|
|СГРУППИРОВАТЬ ПО
| временнаятаблица.Наряд,
| СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование,
| ВЫБОР
| КОГДА СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование МЕЖДУ 0 И &к1
| ТОГДА ""Высокий""
| ИНАЧЕ ВЫБОР
| КОГДА СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование МЕЖДУ &к1 И &к2
| ТОГДА ""Средний""
| ИНАЧЕ ВЫБОР
| КОГДА СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование МЕЖДУ &к2 И &к3
| ТОГДА ""Низкий""
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| ТребФ";
времтаб.УстановитьПараметр("дата",ТекущаяДата());
времтаб.УстановитьПараметр("таблица", кластеризация);
времтаб.УстановитьПараметр("к1",финклстер.Выгрузить()[0][1]);
времтаб.УстановитьПараметр("к2",финклстер.Выгрузить()[1][1]);
времтаб.УстановитьПараметр("к3",финклстер.Выгрузить()[2][1]);
Результат=времтаб.Выполнить();
//запрос для отчёта
//Запрос = Новый Запрос;
////Запрос.МенеджерВременныхТаблиц=МенВрТаб;
//Запрос.Текст =
//"ВЫБРАТЬ
//| Наряд_на_ремонт.Номер,
//| Наряд_на_ремонт.Затраты
//|ИЗ
//| Документ.Наряд_на_ремонт КАК Наряд_на_ремонт";
//Результат = Запрос.Выполнить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры
