Справочные материалы по 1С
Анализ данных в 1С 8.x
Как получить данные о товарах продаваемых вместе?
Анализ = Новый АнализДанных;
// Выбранный тип анализа как раз и указывает на то, что ищем
// "совместно продаваемые" товары.
Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.Регистратор Как ДокументПродажи,
| ПродажиКомпанииОбороты.Номенклатура
|ИЗ
| РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты
|УПОРЯДОЧИТЬ ПО
| ДокументПродажи";
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);
// Получить продажи за указанный период.
// Выбрана периодичность по Регистратору, т.к. необходимо получить
// данные о совместных продажах в рамках одной покупки.
Анализ.ИсточникДанных = Запрос.Выполнить();
// Выполнить анализ в соответствии с указанным источником.
РезультатАнализа = Анализ.Выполнить();
// Для вывода результата анализа воспользуемся построителем
// отчета анализа данных.
Построитель = Новый ПостроительОтчетаАнализаДанных();
Построитель.Макет = Неопределено;
Построитель.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
ТабДок = Новый ТабличныйДокумент;
Построитель.Вывести(РезультатАнализа, ТабДок);
ТабДок.Показать();
Как порекомендовать сопутствующие товары?
Анализ = Новый АнализДанных;
// Найти ассоциации.
Анализ.ТипАнализа = Тип("АнализДанныхПоискАссоциаций");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.Регистратор КАК ДокументПродажи,
| ПродажиКомпанииОбороты.Номенклатура
|ИЗ
| РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор) КАК ПродажиКомпанииОбороты
|УПОРЯДОЧИТЬ ПО
| ДокументПродажи";
// Ассоциации ищем подокументно, это определяется поведением
// объекта "АнализДанных" "по умолчанию" при выборе
// периодичности виртуальной таблицы Регистратор
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);
Анализ.ИсточникДанных = Запрос.Выполнить();
РезультатАнализа = Анализ.Выполнить();
// Исходя из полученного анализа создать прогноз.
МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза();
// ТЗ- таблица значений, содержащая данные о том,
// какие номенклатурные позиции вошли в "текущую" покупку.
МодельПрогноза.ИсточникДанных = ТЗ;
// ТП - элемент управления "Табличное поле" связанный через
// свойство "Данные" с реквизитом формы "ТП" (тип ТаблицаЗначений)
ТП = МодельПрогноза.Выполнить();
ЭлементыФормы.ТП.СоздатьКолонки();
Как посмотреть, что будет покупаться в дальнейшем?
ТабДок = Новый ТабличныйДокумент;
Анализ = Новый АнализДанных;
// Нужно спрогнозировать цепочку событий, поэтому выбираем
// тип анализа "Поиск последовательностей".
Анализ.ТипАнализа = Тип("АнализДанныхПоискПоследовательностей");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.ДоговорВзаиморасчетовПокупателя.Владелец КАК Контрагент,
| ПродажиКомпанииОбороты.Номенклатура,
| ПродажиКомпанииОбороты.Период
|ИЗ
| РегистрНакопления.ПродажиКомпании.Обороты(&НачПериода, &КонПериода, Регистратор)
КАК ПродажиКомпанииОбороты";
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);
Анализ.ИсточникДанных = Запрос.Выполнить();
Колонка = Анализ.НастройкаКолонок.Найти("Период");
// Указать, что колонка "Период" имеет тип "Время",
// что "позволит понять" хронологию событий
Колонка.ТипКолонки = ТипКолонкиАнализаДанныхПоискПоследовательностей.Время;
РезультатАнализа = Анализ.Выполнить();
МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза();
// ТЗ- таблица значений, содержащая исходные данные для прогноза
// например, какой контрагент, какой товар закупил (исходя из чего
// попытаемся узнать, что они еще закупят).
МодельПрогноза.ИсточникДанных = ТЗ;
// ТП - элемент управления "Табличное поле" связанный через
// свойство "Данные" с реквизитом формы "ТП"
//(тип ТаблицаЗначений)
ТП = МодельПрогноза.Выполнить();
ЭлементыФормы.ТП.СоздатьКолонки();
// Построитель - реквизит формы, имеющий тип
// ПостроительОтчетаАнализаДанных. Ряд табличных полей
// в диалоге могут быть связаны со свойствами - коллекциями
// данного объекта
Построитель.ТипАнализа = Тип("АнализДанныхПоискПоследовательностей");
Построитель.Вывести(РезультатАнализа, ТабДок);
ТабДок.Показать();