Дерево решений 1 страница

Т


Обмен данными


 


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

После этого расположим в форме три кнопки: «Создать начальный образ» с именем «КнопкаСоздатьНачальныйОбраз», «Записать изменения» с именем «КнопкаЗаписатьИзменения» и «Прочитать изменения» с именем «КнопкаПрочитатьИзменения»:


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

ПроиедураКнопкаСоздатьНачальныйОбразНажатие(Элемент)

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); Диалог.Заголовок = "Укажите каталог информационной базы:"; Если Диалог.Выбрать() Тогда ПланыОбмена.СоздатьНачальныйОбраз(ПолеВводаОтделение,

"Filе="+Диалог.Каталог);

Предупреждение("Создание начального образа узла завершено."); КонецЕсли; КонецПроцедуры

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

Теперь создадим обработчик нажатия кнопки «Записать изменения»:

ПроцедураКиопкаЗаписатьИзмененияНажатие(Элемент)

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); Диалог.Заголовок = "Укажите файл обмена:"; Если Диалог.Выбрать() Тогда

// Создать ипроинициализаровать объектЗаписьХМL

ЗаписьХМL = Новый ЗаписьХМL; ЗаписьХМL.ОткрыгьФайл(Диалог.ПолноеИмяФайла);

// Создать объект ЗаписьСообщенияОбмена и начать запись сообщения

ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщетм.НачатьЗапись(ЗагшсьХМL, ПолеВводаОтделение);

// Записать содержимое тела сообщения //обмена данными распределенной ИБ

ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения);

ончить запись сообщения и записьХМL

ЗаписьСообщения.ЗакончитьЗапись();


 


434



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


Обмен данными


 


ЗаписьХМL.Закрыть();

Предупреждение("Запись изменений завершена."); КонецЕсли; КонецПроцедуры

В начале процедуры мы вызываем диалог ввода имени файла, в который будут записаны изменения. После этого мы создаем объект 3arwcbXMLдля работы с этим файлом. Затем создаем объект ЗаписьСообщенияОбмена,с помощью которого будем создавать сообщение обмена. В методе НачатьЗапись(),во втором параметре, мы указываем, для какого узла обмена будет создаваться это сообщение. После этого мы выполняем метод ЗаписатьИзменения()объекта ПланыОбменаМенеджер,который и записывает изменения, предназначенные для передачи в выбранный узел, в указанное сообщение обмена. В заключение мы как обычно заканчиваем запись сообщения обмена и закрываем файл.

<*■ Узнай больше!

Следует отметить, что метод ЗаписатьИзменения() позволяет задать максимальное число элементов данных, которые помещаются в сообщение в рамках одной транзакции базы данных. По умолчанию все данные помещаются в сообщение в рамках одной транзакции. Такой режим является рекомендуемым, так как гарантирует согласованность данных, помещаемых в сообщение.

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

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


И последним мы создадим обработчик нажатия кнопки «Прочитать

изменения»:

ПроцедураКнопкаПрочитатьИзмененияНажатие(Элемент)

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Укажите файл обмена:"; Если Диалог.Выбрать() Тогда

// Создать я проинициализароватьобъект ЧтениеХМLЧтениеХМL = Новый ЧтениеХМL; ЧтениеХМL.ОткрытьФайл(Диалог.ПолноеИмяФайла);

// Создатьобъект ЧтениеСообшенияОбмена // и начать чтение сообщения

ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеХМL);

// Прочитать содержимое тела сообщения

ПланыОбмена.ПрочитатьИзмененияЧтениеСообщения);

// Закончить чтение сообщения и чтение XML

ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеХМL. Закрыть();

Предупреждение("Чтение изменений завершено."); КонецЕсли; КонецПроцедуры

В начале процедуры мы снова вызываем диалог ввода имени файла, который будет прочитан, и создаем объект ЧтениеХМЬдля работы с этим файлом. Затем создаем объект ЧтениеСообщенияОбменадля чтения сообщения, содержащегося в указанном файле. Затем методом ПрочитатьИзменения()объекта ПланыОбменаМенеджермы читаем полученное сообщение. В заключение процедуры мы завершаем чтение сообщения обмена и закрываем файл.

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


 


436



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


Обмен данными


 


Следует лишь сделать несколько заключительных замечаний.

При использовании механизма распределенных информационных баз становятся доступными четыре события объект ПланОбменаОбъект,которые позволяют управлять отправкой \ приемом данных на уровне отдельных элементов данных:

• ПриОтправкеДанныхГлавному(),

• ПриОтправкеДанныхПодчиненному(),

• ПриПолученииДанныхОтГлавного(),

• ПриПолученииДанныхОтПодчиненного().

Эти события будут вызываться для каждого элемента данных включаемого в сообщение. Работу этих событий можно увидеть добавив в модуль объекта План обмена следующий текст:

ПроцедураПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)

Сообщить("ПриОтправкеДанныхГлавному "+ЭлементДанных); КонецПроцедуры

ПроцедураПриОтправкеДанныхПодчиненному(ЭлементДанньгх, ОтправкаЭлемента)

Сообщить(" ПриОтправкеДанныхПодчиненному"+ЭлементДанных); КонецПроцедуры

ПроцедураПриПолученииДаннькОтГлавного(ЭлементДанных,ПолучениеЭлемента,

ОтправкаНазад)

Сообщить("ПриПолученииДанныхОтГлавного "+ЭлементДанных); КонецПроцедуры

ПроцедураПриПолученииДанныхОтПодчиненного(ЭлементДанньк,

ПолучениеЭлемента, ОтправкаНазад) Сообщить("ПриПолученииДанныхОтПодчиненного "+ЭлементДанных);

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


Параметр «ОтправкаЭлемента» позволяет управлять тем, какая информация будет помещена в сообщение. Он может принимать три значения:

ОтправкаЭлементаДанных.Авто- значение по умолчанию
- указывает на то, что элемент данных будет помещен в
сообщение,

ОтправкаЭлементаДанных.Удалить- в сообщение будет
помещено значение, предназначенное для удаления этого
элемента данных,

ОтправкаЭлементаДанных.Игнорировать- в сообщение
не будет помещено ничего, связанного с этим элементом
данных.

Параметр «ПолучениеЭлемента» позволяет указать, будет ли прочитанный элемент данных записан в базу данных, или нет. Параметр также может принимать три значения:

• ПолучениеЭлементаДанных.Авто - значение по
умолчанию. Если элемент данных получен от главного узла -
он будет записан всегда. Если элемент данных получен от
подчиненного узла, он будет записан только в случае, если не
зарегистрированы изменения для этого элемента данных,

• ПолучениеЭлементаДанных.Принять - полученный
элемент данных будет записан всегда,

• ПолучениеЭлементаДанных.Игнорировать
проигнорировать получение элемента данных и ничего не
записывать.

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


 


438



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


Обмен данными


 


элемента данных в узле-отправителе будет установлено таким же, как и в нашей базе.

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

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

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

Допустим, необходимо переместить один из подчиненных узлов в корень дерева:


// В информационной базе Узла1

ПланыОбменаМенеджер.УстановитьГлавныйУзел(Узел2);

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

Таким же образом, используя значение параметра метода Неопределено, мы можем отключать от дерева отдельную информационную базу или целое поддерево:

// В информационной базе Узла1

ПланыОбменаМенеджер.УстановитьГлавныйУзел(Неопредеяено);


Для этого следует выполнить следующие действия:

// В информационной базе Узла2

ПланыОбменаМенеджер.УстановитьГлавныйУзел(Неопределено);


440



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


Обмен данными


 


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


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


 


           
   
   
 
 
 


// В информационных базах Узла2, УзлаЗ н Узла4

ПланыОбменаМенеджер.УстанавитьГлавныйУзел(Узел 1);


- какие средства входят в состав механизма универсального

обмена данными

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

данных возможен обмен данными - что такое авторегистрация

- для чего предназначен механизм регистрации изменений - как работает инфраструктура сообщений - каково назначение XML-сериализации - для чего используется запись/чтение документов XML - как создать план обмена

- как настроить конфигурацию для обмена данными - как реализовать обмен данными в общем виде - как реализовать обмен данными в распределенной

информационной базе - как программно управлять обменом данными в

распределенной информационной базе

- как изменить структуру дерева распределенной информационной базы


 


442



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


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

В этой главе мы познакомимся с возможностями, которм предоставляет система 1С:Предприятие 8.0 для поиска и анализ закономерностей в имеющихся данных, и построения прогнозов на основе найденных закономерностей.

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

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

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


Общие сведения об анализе и прогнозировании данных

В

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

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

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

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

Мы хотим проанализировать данные нашей базы в следующем виде: какие существуют наиболее вероятные последовательности покупок товаров одним и тем же клиентом? Иначе говоря - «как обстоят дела сейчас, если взять текущие данные и попробовать определить, какие существуют последовательности покупаемых товаров»?


 


444



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


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


 


В терминах 1С:Предприятия 8.0 такой процесс анализа данньп можно представить следующей схемой:

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

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

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


 

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

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

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

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

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

Результат анализа - объект встроенного языка, содержащий информацию о результате анализа. Для каждого типа анализа предусмотрен свой тип результата. Например, результатом анализа данных типа АнализДанныхДеревоРешенийбудет объект типа РезультатАнализаДанныхДеревоРешений.

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


 


446



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

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

Теперь рассмотрим, как выглядит прогнозирование данных Прогнозирование является попыткой предсказать новый результат, на основе некоторой совокупности новых данных и определенной ранее модели. Иными словами, прогнозирование позволяет ответить на вопрос: «как будут обстоять дела, если мы будем иметь такие данные при такой модели их взаимосвязи»?

Возвращаясь к нашему примеру - «какой товар, с большой долей вероятности, клиент приобретет в следующий раз, если до этого он совершал вот такие покупки, и текущие последовательности покупок товаров выглядят следующим образом»?

В терминах 1С:Предприятия 8.0 этот процесс прогнозирования данных можно представить следующей схемой:


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

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

Модель прогноза - специальный объект, позволяющий выполнять
прогноз на основании входных данных. Тип модели зависит от типа
анализа данных. Например, модель, созданная для анализа данных
АнализДанныхПоискАссоциацийбудет иметь тип

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

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


IX


 


448



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


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


Цанщ


 


Если обобщить обе схемы, представленные выше, то анализ и прогнозирование данных в терминах 1С:Предприятия 8.0 можно представить следующим образом:

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


Анализ данных

О

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

Общая статистика

Т

ип анализа АнилизДанныхОбщаяСтатистикапозволяет получать общестатистические показатели выборки, которую представляют исходные данные.

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

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

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