СправочникСписок.Отбор.Ссылка.Значение. 1 страница

11,11

3 2

Ч 3


Дерево решений



 


 


464



Использование основных объектов конфигурации


Анализ и прогнозирование данных


 


           
   
 
 
 
   


Ошибки кпассиФикзции

Кластерный анализ

Т

ип анализа АнализДанныхКластеризацияпозволяет разделить исходный набор исследуемых объектов на группы объектов, таким образом, чтобы каждый объект был более схож с объектами из своей группы, чем с объектами других групп. Анализируя в дальнейшем полученные группы, называемые кластерами, можно определить, чем характеризуется та или иная группа, принять решение о методах работы с объектами различных групп.

Например, при помощи кластерного анализа можно разделить клиентов, с которыми работает компания на группы, для того, чтобы применять различные стратегии при работе с ними.

При помощи параметров кластерного анализа аналитик может настроить алгоритм, по которому будет производиться разбиение, а также может динамически изменять состав характеристик, учитываемых при анализе, настраивать для них весовые коэффициенты.

Результат кластеризации может быть выведен в дендрограмму специальный объект, предназначенный для отображения последовательных связей между объектами.


Типы колонок источника данных:

• Не используется - колонка не используется при анализе.

• Входная - колонка используется для группирования объектов.

• Прогнозируемая - будет создан прогноз для значения колонки
для каждого кластера.

• ВходнаяИПрогнозируемая - колонка используется как
входная и как прогнозируемая.

• Ключ - ключевая колонка, предназначенная для
идентификации объекта.

Параметры:

• КоличествоКластеров - (Число)- количество искомых
кластеров.

• ТипЗаполненияТаблицы - (все поля, используемые поля,
ключевые поля, не заполнять) - какие поля выводить в таблицу
кластеризации.

• Стандартизация - (не стандартизировать, стандартизировать) -
необходимость стандартизации данных. Если необходимо
стандартизировать данные, то анализатор предварительно
приведет все характеристики объектов к одной весовой
категории.

• МераРасстояния - (ЕвклидоваМетрика,
ЕвклидоваМетрикаВКвадрате, МетрикаГорода,
МетрикаДоминирования) - каким образом вычислять
расстояние между объектами.

• МетодКластеризации - (БлижняяСвязь, ДальняяСвязь,
КСредних, ЦентрТяжести) - каким методом выполнять
кластеризацию.

Пример

д

ля анализа мы возьмем те же поля справочника «Контрагенты», что и в предыдущем примере: «КоличествоРозничныхТочек», «КоличествоАвтомобилей»,


 


466



Использование основных объектов конфигурации


Анализ и прогнозирование данных


 


           
   
 
   



«ВремяРаботыОрганизации» «ПрекращениеОтношений». значение поля «Ссылка»:


«ВремяЗаключенияДоговора» и В качестве ключа мы используем


Центрыкластеров


 



Результат анализа будет выглядеть следующим образом:


Расстояния между кластерами


Кластерный анализ

Денрограмма связей



Параметры анализа

Количество искомых кластеров: 3

Стандартизация: Стандартизировать

Мера расстояния: Евклидова метрика в квадрате

Метод кластеризации: Метод центра тяжести

Колонки источника данных Входныеколонки

Информация о данных

Количествообъектов: 9

Результат анализа

Найденокластеров: 3



 


 


468



Использование основных объектов конфигурации


Анализ и прогнозирование данных


 


Модель прогноза

О

бъект модель прогноза представляет собой специальный объект, который создается из результата анализа данных, и позволяет в дальнейшем строить прогнозы для новых данных.

Например, модель прогноза поиска ассоциаций, созданная при анализе покупок клиентов, может быть использована при работе с осуществляющим покупку клиентом, для того, чтобы предложить ему товары, которые он с определенной степенью вероятности приобретет вместе с теми товарами, которые он уже выбрал.

Объект Модель прогноза можно получить из соответствующих объектов результат анализа путем выполнения метода СоздатьМодельПрогноза().




В дальнейшем для модели прогноза можно задать некоторый набор исходных данных и получить результат прогноза в виде таблицы значений.


Источник данных для модели прогноза задается при помощи свойства ИсходныеДанные,а для получения результата прогноза необходимо выполнить метод Выполнить().

Используя соответствующие свойства модели прогноза можно настраивать для нее входные колонки, колонки самой модели и колонки результата.

Кроме этого каждая из моделей прогноза содержит дополнительные свойства, определяемые типом анализа, к которому относится модель прогноза.

Пример

В

качестве примера мы рассмотрим использование модели прогноза данных при оформлении покупки, выполняемой контрагентом.

Предположим, что периодически проводится анализ данных базы типа поиск ассоциаций, и сохраняется актуальная модель прогноза.

Тогда, при формировании расходной накладной контрагента, мы можем использовать эту модель прогноза для того, чтобы исходя из состава расходной накладной, предложить контрагенту дополнительные товары, которые он, с большой долей вероятности, может приобрести.

Предположим, контрагент оформляет следующую покупку:


 


470



Использование основных объектов конфигурации


Анализ и прогнозирование данных


 


         
 
 
   
 
   



Тогда менеджер, нажав на кнопку «Предложение», может откры список товаров, которые, с большой долей вероятности, также имеет смысл предложить этому клиенту:


Построитель отчета анализа данных

О

бъект ПостроительОтчетаАнализаДанных позволяет представить данные анализа в виде табличного документа. Структура такого табличного документа определяется типом анализа, для каждого из типов анализа документ будет содержать определенный набор областей.

Объект ПостроительОтчетаАнализаДанныхможет

использоваться для выполнения трех различных задач.

Во-первых, для визуального отображения существующего результата анализа данных.

Во-вторых, для интерактивной настройки параметров анализа данных, выполнения анализа и отображения полученного результата. В-третьих, для настройки параметров модели прогноза.

Отображение существующего результата анализа

О

бъект ПостроительОтчетаАнализаДанных может быть использован для отображения результата анализа данных, который был получен ранее. Для этого можно с помощью стандартного конструктора создать новый объект ПостроительОтчетаАнализаДанныхи в методе Вывести()передать ему существующий результат анализа:

Результат анализа


Построитель = Новый ПостроителъОтчетаАнализаДанных; Построитель.Вывести(РезультатАнализа, ТабличныйДокумент);


472



Использование основных объектов конфигурации


Анализ и прогнозирование данны>


 


Настройка параметров и выполнение анализа

О

бъект ПостроительОтчетаАнализаДанных может быТь использован для выполнения анализа с интерактивной настройкой параметров и последующего отображения результата.

Исходные данные для анализа задаются свойством ИсточникДанных.Свойства НастройкаКолоноки Параметрыпозволяют интерактивно настраивать колонки анализа (через табличные поля), и задавать параметры для выбранного типа анализа который задается свойством ТипАнализа.Кроме того, построитель отчета анализа данных допускает переопределение стандартного макета отчета путем использования свойства Макет.

Вдальнейшем методом Выполнить()можно получить результат анализа данных, который будет доступен через свойство построителя Результат.Таким образом, при необходимости, его можно сохранить в базе данных. Если же сохранения результата не требуется, можно выполнить метод Вывести(),который выведет данные результата анализа, полученного методом Выполнить().

Кроме всего перечисленного,

ПостроительОтчетаАнализаДанныхпозволяет получить объект АнализДанных,соответствующий всем интерактивным настройкам, выполненным в построителе, методом ПолучитьАнализ():


Настройка параметров модели прогноза



О

бъект ПостроительОтчетаАнализаДанных может быть использован для интерактивной настройки параметров модели прогноза (через табличные поля). Для этого следует использовать его свойство МодельПрогноза,в которое передается настраиваемая модель. После того, как настройка модели выполнена, результат прогноза может быть получен методом модели прогноза Выполнить():


 





 


 


474



Использование основных объектов конфигурации


Что нового мы узнали

- чем анализ данных отличается от прогнозирования - какие объекты встроенного языка обеспечивают работу механизма анализа данных

- какие объекты встроенного языка обеспечивают работу
механизма прогнозирования данных

- какие типы анализа данных реализованы в платформе

- как работать с моделью прогноза - что такое построитель отчета анализа данных

- как получить визуальное представление результата
анализа данных

- как настроить параметры модели прогноза


Глава 15. Создание документа ввода начальных остатков

В нашей информационной базе, как, впрочем, и в любой другой, обязательно следует предусмотреть возможность ввода начальных остатков в регистры. Это необходимо для того, чтобы пользователи могли начать работу с нашей информационной базой не с «чистого листа», а с некоторого «исходного состояния», которое было в их прежней системе учета (пусть даже они вели учет на бумаге).

Задача ввода начальных остатков отличается от прочих алгоритмов изменения состояния регистров нашей информационной базы тем, что подразумевает изменение данных непосредственно в регистрах, без использования каких-либо промежуточных алгоритмов (заполнения документов данными, проведения документов, контроля правильности данных, указанных в документах и пр.).

Рассмотрим пример ввода начальных остатков регистра накопления «ОстаткиМатериалов». Для выполнения этой задачи мы создадим документ, в котором будем вручную редактировать его движения по регистру «ОстаткиМатериалов» прямо в форме документа.

Откроем конфигуратор и создадим новый объект конфигурации Документ с именем «ВводНачальныхОстатковНоменклатуры». На закладке «Движения» запретим проведение документа (поскольку сами будем формировать записи регистра), и отметим, что движения документа будут находиться в регистре накопления «ОстаткиМатериалов». После этого перейдем на закладку «Формы» и создадим основную форму документа.


 


476



Использование основных объектов конфигурации


Создание документа ввода начальных остатков


 


Раздвинем форму вниз и разместим в ней табличное поле
командной панелью. Зададим имя табличного поля
«ОстаткиМатериалов» и тип значения

«РегистрНакопленияНаборЗаписей.ОстаткиМатериалов»:


Удалим из табличного поля колонки «Регистратор» и «Активность» (они нам не понадобятся), и изменим размеры формы и расположение элементов управления:


 




 


 


В свойствах табличного поля укажем, что источником данных для него будут являться движения документа по регистру «ОстаткиМатериалов»:


Запустим 1С:Предприятие в режиме отладки и проверим работу нашего документа.

Введем в документ следующие данные:


 




 


Обратите внимание на то, что дата документа не совпадает с датами отдельных записей, которые мы создаем в движениях документа.


478



Использование основных объектов конфигурации


Создание документа ввода начальных остатков


 


Нажмем «Записать», и из формы списка документа откроем движения нашего документа в регистре «ОстаткиМатериалов» (кнопка «Перейти»).

Вы видите, что записи регистра накопления в точности соответствуют тем, которые мы создали в документе:


Снова запустим 1С:Предприятие в режиме отладки, откроем наш документ и нажмем «Записать». Открыв движения документа в регистре «ОстаткиМатериалов» увидим, что значение поля «Период» у всех записей стало равно дате документа:


 




 


 


Таким образом, мы добились поставленной цели: с одной стороны, задавая дату документа, мы можем фиксировать момент внесения изменений в записи регистра, с другой стороны - для каждой создаваемой нами записи регистра, мы можем указать индивидуальное значение поля «Период».

Теперь займемся «ужесточением» требований, предъявляемых к тому, как наш документ формирует записи регистра, и рассмотрим два типичных варианта.

Первое требование, которое мы реализуем, будет заключаться в том, что записи регистра должны формироваться той же датой, что и дата документа. Иначе говоря, синхронизируем дату движений с датой документа.

Для этого в обработчик события «Перед записью» формы документа добавим следующий текст:


Можно сказать, что мы достигли поставленной цели, но лишь в ситуации, когда запись документа выполняется интерактивными средствами.

Если программно вызвать метод Записать()у объекта нашего документа, он будет записан без участия формы документа. Это значит, что событие «При записи» формы документа вызвано не будет, и наш код обработчика не отработает.

Чтобы предусмотреть возможность синхронизации периода движений документа с датой документа и в случае программной записи объекта Документ, следует использовать обработчик события «Перед записью» объекта документ, а не формы документа.


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Для Каждого ЗаписьРегистра Из Движения.ОстаткиМатериалов Цикл

ЗаписьРегистра.Период = Дата; КонецЦикла; КонецПроцедуры


480



Использование основных объектов конфигурации


Создание документа ввода начальных остатков


 


Событие «Перед записью», в случае интерактивной запи документа, сначала будет вызвано у формы документа, а затем объекта документ (смотри схему событий в раздел «Последовательность событий при записи документа из форм документа» на странице 581). Поэтому вернемся в конфигуратоп удалим из модуля формы добавленный нами текст и создадим обработчик события «Перед записью» в модуле объекта документ:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведення) //Определить нужно ли обновлять дату вдвижениях

ОбновитьДатуДвижений = ЭтоНовый() Или

Движения.ОстаткиМатериалов.Модифицированность(); Если Не ОбновитьДатуДвижений Тогда // Проверить, что дата изменилась

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

Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);

Запрос.Текст =

"ВЫБРАТЬ

| Дата

|ИЗ

| Документ.ВводНачальныхОстатковНоменклатуры

|ГДЕ Ссылка = &ТекущийДокумент";

Выборка = Запрос.Выполнить().Выбрать(); Выборка.СледующийО;

ОбновитьДатуДвижений = Выборка.Дата оДата; КонецЕсли;

//Установить всем новую дату, если нужно

Если ОбновитьДатуДвижений Тогда Если Не Движения.ОстаткиМатериалов.Выбран() И

Не Движения.ОстаткиМатериалов.Модифицированность() Тогда Движения.ОстаткиМатериалов.Прочитать(); КонецЕсли; Для Каждого ЗаписьРегистра Из Движения.ОстаткиМатериалов Цикл

ЗаписьРегистра.Период = Дата; КонецЦикла; КонецЕсли;

Как вы видите, в этом случае обработчик содержит больше кода за счет дополнительных проверок, которые выполняются в результат того, что возможна как интерактивная, так и программная запис объекта.


Поясним содержание обработчика. Если записывается новый документ или были изменены его движения - следует обновить дату движений. В противном случае мы считываем запросом дату документа из базы данных и сравниваем ее с датой, установленной у записываемого объекта. Если даты разные - также следует обновить дату движений.

Перед установкой даты мы проверяем, был ли прочитан набор записей в свойстве «Движения» объекта и изменялся ли он. Если оба этих условия ложны - это значит, что набор записей в свойстве «Движения» объекта пуст, и это состояние не связано с его изменением. В этом случае, чтобы предотвратить ошибочное удаление записей в регистре (перезапись пустым набором записей), мы предварительно читаем движения из регистра в набор записей в свойстве «Движения». Затем, как и в предыдущем случае, устанавливаем нужную дату для всех записей этого набора. При выполнении записи объекта Документ, этот набор будет записан в регистр накопления.

Запустим 1С:Предприятие в режиме отладки и убедимся, что указав новую дату для нашего документа и записав его, мы получим движения в регистре накопления с новой датой.

В процессе записи нашего документа можно управлять не только периодом записей регистра накопления, но и значениями других полей регистра.

Например, по аналогичному принципу может быть создан документ «Операция», позволяющий вводить ручные операции в регистр бухгалтерии. При этом, вероятно, кроме управления периодом записей регистра, вам потребуется управлять значением поля «Активность» («включать» и «выключать» проводки документа) и т.д.

В заключение следует сказать, что выбор обработчика, в котором будет размещен текст процедуры, зависит от логики работы создаваемого объекта. Если конфигурация не предусматривает программной записи объекта - можно выбрать обработчик модуля формы. Если предполагается и программная модификация объекта -следует выбирать обработчик модуля объекта.

Заметьте, что оба эти способа не исключают модификацию записей регистра через объект Регистр<...>НаборЗаписей.<имя регистра>.Поэтому, если логика конфигурации подразумевает возможность программной модификации объекта набор записей, код обработки


 


482



следует размешать в обработчике события набора записей. Все попытки изменить данные регистра будут сведены, в конечном счете, к записи именно набора записей.


Глава 16. Легким движением брюки превращаются...

Вот мы и создали с вами небольшое прикладное решение, которое позволило автоматизировать работу нашей ремонтной фирмы OOO «На все руки мастер». Теперь настало время для одного чудесного превращения.

Дело в том, что наше прикладное решение настолько понравилось сотрудникам OOO «На все руки мастер», что они рассказали о нем своим соседям - косметическому салону «Королева красоты». Сотрудники салона посмотрели, как работает наше прикладное решение, и обратились к нам с просьбой автоматизировать и их салон тоже.

И мы, конечно же, с радостью согласились, по одной простой причине: мы с вами создали универсальную конфигурацию, подходящую для автоматизации практически любой деятельности, связанной с оказанием услуг.