<<

стр. 8
(всего 11)

СОДЕРЖАНИЕ

>>


И последним мы создадим обработчик нажатия кнопки «Прочитать
ЗаписьХМL.Закрыть();
изменения»:
Предупреждение("Запись изменений завершена.");
КонецЕсли; КонецПроцедуры
ПроцедураКнопкаПрочитатьИзмененияНажатие(Элемент)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
В начале процедуры мы вызываем диалог ввода имени файла, в Диалог.Заголовок = "Укажите файл обмена:"; Если Диалог.Выбрать() Тогда
который будут записаны изменения. После этого мы создаем объект
3arwcbXML для работы с этим файлом. Затем создаем объект // Создать я проинициализаровать объект ЧтениеХМL
ЧтениеХМL = Новый ЧтениеХМL;
ЗаписьСообщенияОбмена, с помощью которого будем создавать
ЧтениеХМL.ОткрытьФайл(Диалог.ПолноеИмяФайла);
сообщение обмена. В методе НачатьЗапись(), во втором параметре,
мы указываем, для какого узла обмена будет создаваться это // Создать объект ЧтениеСообшенияОбмена //
и начать чтение сообщения
сообщение. После этого мы выполняем метод ЗаписатьИзменения()
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
объекта ПланыОбменаМенеджер, который и записывает изменения, ЧтениеСообщения.НачатьЧтение(ЧтениеХМL);
предназначенные для передачи в выбранный узел, в указанное
// Прочитать содержимое тела сообщения
сообщение обмена. В заключение мы как обычно заканчиваем запись
ПланыОбмена.ПрочитатьИзмененияЧтениеСообщения);
сообщения обмена и закрываем файл.
// Закончить чтение сообщения и чтение XML
ЧтениеСообщения.ЗакончитьЧтение();
<*¦ Узнай больше! ЧтениеХМL. Закрыть();
Следует отметить, что метод ЗаписатьИзменения() позволяет
Предупреждение("Чтение изменений завершено.");
задать максимальное число элементов данных, которые помещаются КонецЕсли; КонецПроцедуры
в сообщение в рамках одной транзакции базы данных. По умолчанию
все данные помещаются в сообщение в рамках одной транзакции.
В начале процедуры мы снова вызываем диалог ввода имени файла,
Такой режим является рекомендуемым, так как гарантирует
который будет прочитан, и создаем объект ЧтениеХМЬ для работы с
согласованность данных, помещаемых в сообщение.
этим файлом. Затем создаем объект ЧтениеСообщенияОбмена для
Но при создании сообщения в многопользовательском режиме чтения сообщения, содержащегося в указанном файле. Затем методом
могут быть конфликты блокировок между транзакцией, в которой ПрочитатьИзменения() объекта ПланыОбменаМенеджер мы
данные помещаются в сообщение, и транзакциями, выполняемыми читаем полученное сообщение. В заключение процедуры мы
другими пользователями. Для снижения вероятности возникновения завершаем чтение сообщения обмена и закрываем файл.
таких конфликтов можно задать значение этого параметра, Проверить работу нашей обработки можно на примере,
отличное от значения no умолчанию. Чем меньше значение аналогичном приведенному в разделе универсального обмена
Данными.
параметра, тем меньше вероятность конфликта блокировок, но
выше вероятность помещения в сообщение несогласованных данных.
Учитывая все вышесказанное, идеальным вариантом являегпсЯ
выполнения обмена данными в монопольном режиме. Однако такой
вариант не всегда приемлем, в силу специфики организации работы
конкретных информационных баз.




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


Следует лишь сделать несколько заключительных замечаний. Параметр «ОтправкаЭлемента» позволяет управлять тем, какая
информация будет помещена в сообщение. Он может принимать три
При использовании механизма распределенных информационных
значения:
баз становятся доступными четыре события объект
ПланОбменаОбъект, которые позволяют управлять отправкой \
• ОтправкаЭлементаДанных.Авто - значение по умолчанию
приемом данных на уровне отдельных элементов данных:
- указывает на то, что элемент данных будет помещен в
• ПриОтправкеДанныхГлавному(), сообщение,
• ПриОтправкеДанныхПодчиненному(), • ОтправкаЭлементаДанных.Удалить - в сообщение будет
• ПриПолученииДанныхОтГлавного(), помещено значение, предназначенное для удаления этого
• ПриПолученииДанныхОтПодчиненного(). элемента данных,
Эти события будут вызываться для каждого элемента данных • ОтправкаЭлементаДанных.Игнорировать - в сообщение
включаемого в сообщение. Работу этих событий можно увидеть не будет помещено ничего, связанного с этим элементом
данных.
добавив в модуль объекта План обмена следующий текст:
Параметр «ПолучениеЭлемента» позволяет указать, будет ли
ПроцедураПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
прочитанный элемент данных записан в базу данных, или нет.
Сообщить("ПриОтправкеДанныхГлавному "+ЭлементДанных);
Параметр также может принимать три значения:
КонецПроцедуры

• ПолучениеЭлементаДанных.Авто - значение по
ПроцедураПриОтправкеДанныхПодчиненному(ЭлементДанньгх, ОтправкаЭлемента)
умолчанию. Если элемент данных получен от главного узла -
Сообщить(" ПриОтправкеДанныхПодчиненному"+ЭлементДанных);
КонецПроцедуры он будет записан всегда. Если элемент данных получен от
подчиненного узла, он будет записан только в случае, если не
ПроцедураПриПолученииДаннькОтГлавного(ЭлементДанных,ПолучениеЭлемента,
зарегистрированы изменения для этого элемента данных,
ОтправкаНазад)
• ПолучениеЭлементаДанных.Принять - полученный
Сообщить("ПриПолученииДанныхОтГлавного "+ЭлементДанных);
элемент данных будет записан всегда,
КонецПроцедуры
• ПолучениеЭлементаДанных.Игнорировать
ПроцедураПриПолученииДанныхОтПодчиненного(ЭлементДанньк,
проигнорировать получение элемента данных и ничего не
ПолучениеЭлемента, ОтправкаНазад)
записывать.
Сообщить("ПриПолученииДанныхОтПодчиненного "+ЭлементДанных);

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



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


элемента данных в узле-отправителе будет установлено таким же, как // В информационной базе Узла1
ПланыОбменаМенеджер.УстановитьГлавныйУзел(Узел2);
и в нашей базе.
В заключение следует сказать о том, что механизм распределенных
При этом будут удалены все записи регистрации изменений
информационных баз содержит программное средство
конфигурации Узла1, относящиеся к Узлу2, т.к. передача изменений
реконфигурирования структуры узлов распределенной базы.
конфигурации будет возможна теперь только от Узла2 к Узлу1. Записи
Для этого следует использовать метод УстановитьГлавныйУзел()
регистрации изменения данных удалены не будут, т.к. передача
объекта ПланыОбменаМенеджер. В параметре этого метода
изменений данных будет по-прежнему возможна между этими узлами.
передается ссылка на узел плана обмена распределенной
Таким же образом, используя значение параметра метода
информационной базы, который устанавливается главным для
Неопределено, мы можем отключать от дерева отдельную
текущей базы. Также в этом параметре может быть передано значение
информационную базу или целое поддерево:
Неопределено, и это приведет к тому, что у текущей
информационной базы будет отсутствовать главный узел.
Рассмотрим несколько вариантов реконфигурирования структуры
узлов распределенной информационной базы.
Допустим, необходимо переместить один из подчиненных узлов в
корень дерева:




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




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

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




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


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


- какие средства входят в состав механизма универсального
обмена данными
- для чего предназначен объект конфигурации План обмена -
каковы основные составляющие плана обмена - что такое
узлы плана обмена - что такое состав плана обмена, и для
каких элементов
данных возможен обмен данными -
// В информационных базах Узла2, УзлаЗ н Узла4
что такое авторегистрация
ПланыОбменаМенеджер.УстанавитьГлавныйУзел(Узел 1);
- для чего предназначен механизм регистрации изменений -
как работает инфраструктура сообщений - каково
назначение XML-сериализации - для чего используется
запись/чтение документов XML - как создать план обмена
- как настроить конфигурацию для обмена данными - как
реализовать обмен данными в общем виде - как
реализовать обмен данными в распределенной
информационной базе - как программно управлять
обменом данными в
распределенной информационной базе
- как изменить структуру дерева распределенной
информационной базы




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



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

В общем случае анализ и прогнозирование данных связаны
В этой главе мы познакомимся с возможностями, которм
следующим образом. Анализ данных позволяет найти
предоставляет система 1С:Предприятие 8.0 для поиска и анализ
неочевидные закономерности в анализируемых данных, и
закономерностей в имеющихся данных, и построения прогнозов на
представить их в виде легко воспринимаемого результата.
основе найденных закономерностей.
Прогнозирование позволяет, на основе проведенного анализа
Следует заметить, что наше изложение будет касаться лищь
данных, предсказать последующие события или значения некоторых
непосредственно тех механизмов, которые реализованы в платформе
характеристик для новых исходных данных.
1С:Предприятия 8.0. Для получения базовой теоретической
Таким образом, результаты анализа являются основой, на которой
информации по методам анализа данных, соответствующим
строятся последующие прогнозы.
реализованным моделям, следует обратиться к специальной
литературе. Мы полагаем, что разработчик, приступающий к анализу Например, в нашей базе имеются данные о том, какие товары и
данных, уже владеет необходимыми теоретическими знаниями. когда приобретались нашими клиентами. Было замечено, что если
клиент приобретал, скажем, диван «Сказка», то через некоторое время
Поскольку анализ данных подразумевает наличие большого объема
он, зачастую, приобретал и кресло «Сказка», из того же набора мягкой
исходной информации, для всех примеров, рассматриваемых далее, мы
мебели.
будем использовать не информационную базу нашего OOO «На все
руки мастер», а некую абстрактную базу данных, которая позволит Мы хотим проанализировать данные нашей базы в следующем
проиллюстрировать работу анализа и прогнозирования данных. виде: какие существуют наиболее вероятные последовательности
На диске информационно - технологического сопровождения, в покупок товаров одним и тем же клиентом? Иначе говоря - «как
обстоят дела сейчас, если взять текущие данные и попробовать
составе демонстрационной конфигурации «Анализ данных», вы
определить, какие существуют последовательности покупаемых
можете найти универсальную обработку «Консоль анализа данных»,
товаров»?
которая позволит вам работать с анализом данных в любом
прикладном решении без какого-либо программирования.




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


В терминах 1С:Предприятия 8.0 такой процесс анализа данньп • поиск ассоциаций предназначен для поиска часто
можно представить следующей схемой: встречаемых групп характеристик объектов и создания правил
ассоциации «Если ... To ...» (например, такой анализ может
быть использован для поиска групп товаров, часто
покупаемых вместе),
• поиск последовательностей - применяется для выявления
цепочек событий часто наблюдаемых в источнике данных
(например, это может быть цепочка товаров или услуг,
которые часто последовательно приобретают клиенты),
• дерево решений - предназначен для выявления
закономерностей того, что объект относится к тому или иному
классу (например, при помощи дерева решения можно
проанализировать какие характеристики клиента влияют на то,
что он перейдет к другому поставщику),
• кластерный анализ - при помощи кластерного анализа можно
объединить объекты в группы (кластеры), в которых будут
находиться объекты, наиболее схожие по ряду характеристик.
Например, можно сгруппировать клиентов по их
характеристикам и деятельности, чтобы в дальнейшем
проанализировав полученные кластеры принять решение о
стратегии работы с клиентами определенных групп.
Анализ данных - объект встроенного языка (АнализДанных),
непосредственно выполняющий анализ данных. Объекту
устанавливается источник данных, задаются параметры,
Источник данных - представляет исходные данные для анализа. В настраиваются колонки анализа данных. Результатом работы данного
качестве источника данных может выступать результат запроса, объекта является результат анализа данных, тип которого зависит от
область ячеек табличного документа или таблица значений. типа анализа. Каждому типу анализа соответствует свой тип
Тип анализа - определяет вид результата, к которому должны быть результата анализа.
сведены исходные данные. Система поддерживает пять различных Результат анализа - объект встроенного языка, содержащий
типов анализа: информацию о результате анализа. Для каждого типа анализа
предусмотрен свой тип результата. Например, результатом анализа
общая статистика - позволяет получить общу ю

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




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

Источник данных - таблица значений, результат запроса или
для создания модели прогноза. Любой результат анализа данны
область табличного документа, содержащая информацию, по которой
может быть сохранен для последующего использования.
необходимо построить прогноз. Например, для модели прогноза
Теперь рассмотрим, как выглядит прогнозирование данных МодельПрогнозаПоискАссоциаций, выборка может содержать
Прогнозирование является попыткой предсказать новый результат, на перечень товаров документа продажи. Результат же работы модели
основе некоторой совокупности новых данных и определенной ранее может рекомендовать, какие товары можно еще предложить
модели. Иными словами, прогнозирование позволяет ответить на покупателю.
вопрос: «как будут обстоять дела, если мы будем иметь такие данные
Модель прогноза - специальный объект, позволяющий выполнять
при такой модели их взаимосвязи»?
прогноз на основании входных данных. Тип модели зависит от типа
Возвращаясь к нашему примеру - «какой товар, с большой долей
анализа данных. Например, модель, созданная для анализа данных
вероятности, клиент приобретет в следующий раз, если до этого он АнализДанныхПоискАссоциаций будет иметь тип
совершал вот такие покупки, и текущие последовательности покупок МодельПрогнозаПоискАссоциаций. Такая модель сможет выдавать
товаров выглядят следующим образом»? прогнозы типа: «т.к. данный покупатель купил заданный набор
В терминах 1С:Предприятия 8.0 этот процесс прогнозирования товаров, то с определенной вероятностью он должен купить и другой
данных можно представить следующей схемой: набор товаров». На вход модели прогноза передается источник данных
для прогноза. Результатом является таблица значений, содержащая
прогнозируемые значения.
Таблица значений - таблица значений, состоящая из колонок,
согласно настройкам результирующих колонок модели прогноза,
содержащая прогнозируемые данные. Конкретное содержание
таблицы определяется типом анализа данных.




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

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

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

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


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

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




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

При выводе отчета при помощи построителя отчета анализа
• среднее значение - среднее арифметическое значений
данных, будет создана круговая диаграмма по относительной частоте
выборки,
значений в выборке.
• размах - разность между максимальным и минимальным
Типы колонок источника данных:
значением выборки,
• стандартное отклонение - среднее квадратичное отклонение
• Не используется - колонка не участвует в анализе,
равное корню квадратному из дисперсии выборки,
• Входная - содержит исходные данные для анализа.
• медиана - значение, лежащее в середине выборки
Параметры анализа данных при общестатистическом анализе не
упорядоченной по возрастанию или убыванию. Другими
задаются.
словами медиана делит выборку пополам; одна половина
выборки имеет значения меньше медианы, другая - больше. В
Пример
случае четного числа значений выборки, медиана


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




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

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


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

Типы колонок источника данных:
Количествообьектов: 20


Непрерывные поля
• Не используется - колонка не используется в анализе.
• Объект - колонка содержит объект, например документ
«Оказание услуги».
Дискретные поля
• Элемент - колонка содержит элемент, например
номенклатуру из документа «Оказание услуги».
Контрагент
Количество значений: 20
Параметры:
Количествоуникальных значений; 6
Мода: Федоров Д.Е.


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


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


объект с его характеристиками. Событийный - источник
Пример
данных содержит список событий. Например, состав


В
документа «Оказание услуги». качестве примера возьмем данные регистра «Продажи»: поле
ИспользованиеЧисловыхЗначений ˜ (как булево, как число) «Регистратор» и измерение «Номенклатура»:
как интерпретировать числовые значения. Можно
интерпретировать числовые значения как числа или как
логические значения, т.е. рассматривать ноль как Ложь, а все
остальные ненулевые значения как Истина.
ИгнорироватьНезаполненныеЗначения ˜ (Булево) - Как
использовать незаполненные значения. Т.е. игнорировать их
или нет.
Порядок - (по достоверности, по значимости, по количеству
случаев) - определяет порядок отображения данных в
результате анализа.




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

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


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

Поддерживается поиск по иерархии, что позволяет отслеживать не
Минимальный процент случаев:
Минимальнаядостоверность: 60
только последовательности конкретных событий, но и
Минимальная значимость: 0
Отсечениеправил: Избыточные
последовательности родительских групп.
Колонки источника данных
Набор параметров анализа позволяет ограничивать временные
Входные колонки
расстояния между элементами искомых последовательностей, а также
регулировать точность получаемых результатов.
Типы колонок источника данных:
Информация о данньк
Количество элементов: 12
Количество обьектов: 11
• Не используется - колонка не используется в анализе.
Средиее количество элементов в объекте: 1,82

• Элемент - колонка содержит исследуемый элемент.
Результат анализа
Например, в случае исследования продаж, это может быть
Найдено часто встречаемых групп: 4
колонка, содержащая товар.
Найдено ассоциативных правил: 5


• Последовательность - колонка содержащая
Часто встречаемые группы
последовательности. Например, это может быть контрагент.
• Время - время события.
Параметры:

• МинимальныйПроцентСлучаев - (Число) - минимальное
число последовательностей, в которых должен наблюдаться
шаблон последовательности.
• ПоискПоИерархии - (Булево) - необходимо ли осуществлять
поиск по иерархии.
• МинимальныйИнтервал - (Булево) - признак того, что
установлен минимальный интервал между наблюдаемыми
событиями. Установка минимального интервала означает, что
для того, чтобы элементы попали в искомую
последовательность необходимо, чтобы временной интервал
между элементами был не менее установленного.
• ЕдиницаМинимальногоИнтервала - единица минимального
интервала




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

Пример
КратностъМинималъногоИнтервала - (Число) - кратность


В
минимального интервала качестве примера снова возьмем данные регистра «Продажи»:
МаксималъныйИнтервал - (Булево) - признак того, что измерения «Номенклатура», «Контрагент» и поле «Период»:
установлен максимальный интервал между наблюдаемыми
событиями. Установка максимального интервала означает, что
для того, чтобы элементы попали в искомую
последовательность необходимо, чтобы временной интервал
между элементами был не более установленного.
ЕдиницаМаксималъногоИнтервала - единица максимального
интервала
КратностъМаксималъногоИнтервала - (Число) - кратность
максимального интервала
ИнтервапЭквивалентностиВремени - (Булево) - признак
того, что установлен интервал эквивалентности времени
между наблюдаемыми событиями. Если установлен интервал
эквивалентности времени, то события, временной интервал
между которыми меньше интервала эквивалентности времени
считаются произошедшими в одно время.
ЕдиницаИнтервалаЭквталентностиВремени — единица
интервала эквивалентности времени
КратностьИнтервалаЭквталентностиВремени - (Число) -
кратность интервала эквивалентности времени
Минимальная длина - (Число) - минимальная длина
последовательности.
Порядок - (по длине, по количеству случаев) - определяет
порядок отображения данных в результате анализа.




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

Результат анализа будет выглядеть следующим образом: какому классу следует отнести некий новый объект, необходимо
отвечая на вопросы в узлах пройти цепочку от корня до листа дерева,
переходя к дочерним узлам в случае утвердительного ответа и к
соседнему узлу в случае отрицательного.
Поиск последовательностей
Набор параметров анализа позволяет регулировать точность
полученного дерева.
Параметры анализа
Минимальный процент случаев: 10
Типы колонок источника данных:
Минимальный интервал:
Максимальный интервал:
Интервал эквивалентности времени:
• Неиспользуемая - колонка не используется в анализе,
Минимальная длина последовательности: 2

• Входная - колонка будет использоваться как атрибут для
Информация о данных
создания узлов дерева, содержит характеристику
Количество элементов: 12
исследуемого объекта.
Количество последовательностей: 6

• Прогнозируемая - колонка, содержащая классификацию.
Результат анализа
Например - признак того, что контрагент перешел к другому
Найдено последовательностей: 2
поставщику.
Последовательности
Параметры:

• МинимальноеКоличествоСлучаев - (Число) - минимальное
количество случаев в узле.
• МаксимальнаяГлубина - (Число) - максимальная глубина
дерева.
• ТипУпрощения - (не упрощать, упрощать) - тип упрощения
дерева решений. Упрощать или не упрощать построенное
Дерево решений


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


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


Результат анализа будет иметь следующий вид:
Пример


Н
а этот раз мы проанализируем данные справочника
«Контрагенты». В качестве входных колонок мы используем
Дерево решений
сп
поля реквизитов равочника
«КоличествоРозничныхТочек», «КоличествоАвтомобилей»
«ВремяРаботыОрганизации» и «ВремяЗаключенияДоговора»' Параметры анализа
Прогнозируемой колонкой будет поле реквизита справочника Минимальноеколичествоэлементов вузле: 0
Максимальная глубина дерева: 1 000
«Контрагенты» - «ПрекращениеОтношений». Тип упрощения дерева решений: Упрошать


Колонки источника данных
Входные колонки
Имя колонки Тип данных
Количест в оРозничныхТочек Непреры в ный
Количест во А в томобилей Непрерывный
ВремяРаботыОрганизации Дискретный
ВремяЗаключенияДоговора Дискретный

Прогнозируемые колонки
Имя колонки Тип данных
ПрекрашениеОтношений Дискретный


Информация о данных
Количество объектов ч3
Количество классов:


Результат анализа
32
Глубина дерева решений: 3
Количество внутренних узлов: 11,11
Количество листьев' Ошибка,
%:




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




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

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

• Не используется - колонка не используется при анализе.
Ошибки кпассиФикзции

• Входная - колонка используется для группирования объектов.
• Прогнозируемая - будет создан прогноз для значения колонки
для каждого кластера.
• ВходнаяИПрогнозируемая - колонка используется как
входная и как прогнозируемая.
• Ключ - ключевая колонка, предназначенная для
идентификации объекта.
Параметры:

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


Т
стандартизировать данные, то анализатор предварительно
ип анализа АнализДанныхКластеризация позволяет
приведет все характеристики объектов к одной весовой
разделить исходный набор исследуемых объектов на группы
категории.
объектов, таким образом, чтобы каждый объект был более
• МераРасстояния - (ЕвклидоваМетрика,
схож с объектами из своей группы, чем с объектами других групп.
ЕвклидоваМетрикаВКвадрате, МетрикаГорода,
Анализируя в дальнейшем полученные группы, называемые
МетрикаДоминирования) - каким образом вычислять
кластерами, можно определить, чем характеризуется та или иная
расстояние между объектами.
группа, принять решение о методах работы с объектами различных
• МетодКластеризации - (БлижняяСвязь, ДальняяСвязь,
групп.
КСредних, ЦентрТяжести) - каким методом выполнять
Например, при помощи кластерного анализа можно разделить
кластеризацию.
клиентов, с которыми работает компания на группы, для того, чтобы
применять различные стратегии при работе с ними.
Пример

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



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


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




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



Кластерный анализ
Денрограмма связей
Параметры анализа
Количество искомых кластеров: 3
Стандартизация: Стандартизировать
Мера расстояния: Евклидова метрика в квадрате
Метод кластеризации: Метод центра тяжести

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




Информация о данных
Количествообъектов: 9

Результат анализа
Найденокластеров: 3




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


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


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


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




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


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


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

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


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




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




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



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

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


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


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




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



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




477
476
Создание документа ввода начальных остатков
Использование основных объектов конфигурации

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




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




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




479
478
Использование основных объектов конфигурации Создание документа ввода начальных остатков


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




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

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Для Каждого ЗаписьРегистра Из Движения.ОстаткиМатериалов Цикл
ЗаписьРегистра.Период = Дата;
КонецЦикла; КонецПроцедуры




480 481
Использование основных объектов конфигурации Создание документа ввода начальных остатков


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


482 483
следует размешать в обработчике события набора записей. Все
Глава 16. Легким движением брюки
попытки изменить данные регистра будут сведены, в конечном счете, к
превращаются...
записи именно набора записей.
Вот мы и создали с вами небольшое прикладное решение, которое
позволило автоматизировать работу нашей ремонтной фирмы OOO
«На все руки мастер». Теперь настало время для одного чудесного
превращения.
Дело в том, что наше прикладное решение настолько понравилось
сотрудникам OOO «На все руки мастер», что они рассказали о нем
своим соседям - косметическому салону «Королева красоты».
Сотрудники салона посмотрели, как работает наше прикладное
решение, и обратились к нам с просьбой автоматизировать и их салон
тоже.
И мы, конечно же, с радостью согласились, по одной простой
причине: мы с вами создали универсальную конфигурацию,
подходящую для автоматизации практически любой деятельности,
связанной с оказанием услуг.
Все, что нам осталось теперь сделать, чтобы наша конфигурация
смогла работать в косметическом салоне, - просто создать новую
информационную базу с нашей конфигурацией, и заполнить ее
новыми данными, - сотрудниками и новой номенклатурой. Все
механизмы учета, которые мы с вами создавали, не были привязаны к
какой-либо специфике конкретного предприятия, а потому могут с
успехом использоваться на любом другом предприятии, имеющем
аналогичную область деятельности.
Таким образом, даже если в косметическом салоне пожелают иметь
дополнительную функциональность, нам потребуется всего лишь
дописать несколько модулей к нашей конфигурации, что гораздо
эффективнее, чем создавать заново индивидуальное решение только
для данного предприятия.




485
484
Часть III. Специальные приемы Глава 1. Общие приемы
разработки Существует ряд приемов использования объектов конфигурации,
которые нельзя отнести только к какому-то одному виду объектов.
Такие приемы мы собрали в этой главе.
Третья часть нашей книги будет посвящена некоторым конкретным
приемам использования тех или иных объектов конфигурации
которые могут потребоваться разработчику в процессе создания и
модификации конфигурации.




486 487
Специальные приемы разработки Общие приемы




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

Алгоритм организации подборов
Для иллюстрации механизма подбора информации в форме мы будем
использовать задачу подбора элементов справочника в табличную
часть документа, как наиболее распространенную. Поскольку
механизм подбора реализован на уровне форм, то в других случаях
просто будут задействованы иные прикладные объекты, сам
механизм подбора не изменится.
Для организации подбора в форму документа следует открыть
форму справочника как подчиненную форме документа, либо
элементу управления, расположенному в форме документа. Способ
получения формы справочника может быть любым, также как и сама
форма справочника, которая будет использована. Важно лишь то, что
эта форма должна быть открыта как подчиненная.
Результат подбора будет доступен в обработчике события
«Обработка выбора» формы документа или элемента управления (в
В форме документа, в обработчик события нажатия кнопки
зависимости от подчинения формы справочника). «Подбор» добавим следующий текст:
Событие «Обработка выбора» будет вызвано в двух случаях:
ПроцедураКоманднаяПанель1Подбор(Кнопка)
• когда в форме справочника будет выполнен интерактивный
ФормаПодбора = Справочники.Номенклатура
выбор, ПолучитьФормуВыбора( ,ЭлементыФормы.Материалы);
ФормаПодбора.Открыть(); КонецПроцедуры
• когда в форме справочника будет вызван метод
ОповеститьОВыборе().
Затем создадим обработчик события «Обработка выбора»
Различные способы подбора мы проиллюстрируем на примере табличного поля «Материалы», расположенного в форме документа
подбора элементов справочника «Номенклатура» в документ «ПриходнаяНакладная»:
«ПриходнаяНакладная».
Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение,
Одиночный подбор СтандартнаяОбработка)



П
НоваяСтрока = Материалы.Добавить();
ри одиночном подборе форма справочника будет
НоваяСтрока.Материал = ВыбранноеЗначение;
закрываться сразу после выбора элемента. Для выбора ЭлементыФормы.Материалы.ТекущаяСтрока = НоваяСтрока;
КонецПроцедуры
следующего элемента необходимо будет снова инициировать
подбор.

488 489
Общие приемы
Специальные приемы разработки

В форме документа «ПриходнаяНакладная» внесем в обработчик
Запустите 1С:Предприятие в режиме отладки и проверьте работу
события нажатия кнопки «Подбор» следующие изменения:
одиночного подбора.

Множественный подбор Процедура КоманднаяПанельШодбор(Кнопка)



П
ФормаПодбора = Справочники.Номенклатура
ри множественном подборе форма справочника будех .ПолучитьФормуСписка(, ЭлементыФормы.Материалы);
открыта до тех пор, пока пользователь не закроет ее ФормаПодбора.РежимВыбора = Истина;
//ФормаПодбора.ЗакрыватьПриВыборе = Ложь;
интерактивно или пока не будет вызван метод формы ФормаПодбора.МножественныйВыбор = Истина;
Закрыть(). ФормаПодбора.Открыть();
КонецПроцедуры
Для разнообразия создадим форму списка справочника
«Номенклатура» и затем в форме документа «ПриходнаяНакладная», в
В обработчик события «Обработка выбора» добавим обход массива
обработчик события нажатия кнопки «Подбор» внесем следующие
переданных элементов:
изменения:

ПроцедураКоманднаяПанельШодбор(Кнопка) Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение,
ФормаПодбора = Справочники.Номенклатура СтандартнаяОбработка)
.ПолучитьФормуСписка( ,ЭлементыФормы.Материалы); Для СчетчикЦикла = 0 по РезультатВыбора.ВГраница() цикл
ФормаПодбора.РежимВыбора = Истина; НоваяСтрока = Материалы.Добавить(); НоваяСтрока.Материал =
РезультатВыбора[СчетчикЦикла]; КонецЦикла; КонецПроцедуры
ФормаПодбора.ЗакрыватьПриВыборе = Ложь;
ФормаПодбора.Открыть(); КонецПроцедуры

Свойство «ЗакрыватьПриВыборе» как раз и будет задавать режим Запустите 1С:Предприятие в режиме отладки и проверьте работу
множественного выбора. Установка же свойства «РежимВыбора» множественного подбора (множественный выбор в табличном поле
понадобилась нам, так как в этом примере для получения подчиненной выполняется при нажатой кнопке «Control»).
формы мы используем метод ПолучитьФормуСписка(). Полученная Теперь, если вы удалите комментарий в обработчике события
этим методом форма будет иметь свойство «РежимВыбора» нажатия кнопки «Подбор», то получите вариант «множественного
установленным в Ложь (в отличие от получения формы методом подбора с использованием множественного выбора».
ПолучитьФормуВыбора(), когда «РежимВыбора» устанавливается в
Использование метода ОповеститьОВыборе()
Истина).


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


Е ще одним способом организации подбора является дополнительной информации. В этом случае метод
возможность использования свойства ОповеститьОВыборе() вызывается тогда, когда вся необходимая
информация подбора сформирована.
формы
«Множественный выбор». Это свойство разрешает Также метод ОповеститьОВыборе() может использоваться в тех
случаях, когда требуется передать в форму документа не только
множественный выбор в табличных полях формы. В этом случае
в форму документа будет возвращен не элемент справочника, а массив
элементов, выбранных в табличном поле формы справочника.
491
490
О6
Щие приемы


выбранный элемент справочника (или массив элементов), а некоторую Ввод на основании

М
произвольную структуру данных.
еханизм ввода на основании может быть использован для
ввода новых объектов различного типа (документы,
справочники, планы видов характеристик и т.д.). Мы
рассмотрим этот механизм на примере ввода новых
документов, как наиболее распространенном.
Для каждого объекта конфигурации Документ можно разрешить
его ввод на основании других объектов базы данных и возможность
являться основанием для других объектов. Действия по заполнению
реквизитов при вводе на основании должны быть описаны в модуле
объекта Документ, в обработчике события «Обработка заполнения».
Есть возможность использовать конструктор ввода на основании,
который позволяет визуальными средствами конструировать текст
обработчика.
Рассмотрим пример, когда документ «ОказаниеУслуги» будет
вводиться на основании элемента справочника «Клиенты».
Откроем окно редактирования объекта конфигурации Документ
«ОказаниеУслуги» и добавим новый реквизит документа -
«ОбъектОснование» с типом СправочникСсылка.Клиенты.
Создание такого реквизита не является обязательной частью
механизма ввода на основании и понадобится нам только для того,
чтобы в последствии построить цепочку зависимых документов.




493
492
Общие приемы
Специальные приемы разработки

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


Определим состав объектов и вызовем конструктор ввода на
основании...




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

ПроцедураОбработкаЗаполненш(Основание)
//{{_КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором. II При
повторном использовании конструктора, // внесенные
вручную изменения будут утеряны!!!



495
494
Специальные приемы разработки Общие приемы


Если ТипЗнч(Основание) = Тип("СправочникСсылка.Клиенты") Тогда
Объекты, введенные на основании
// Заполнение шапки




Н
Клиент = Основание.Ссылка;
аряду с тем, что платформа содержит механизмы,
ОбъектОснование = Основание.Ссылка;
позволяющие создавать одни объекты на основании других,
КонецЕсли;
каких-либо специальных механизмов для анализа цепочек
//} }_KOHCTPyKTOP_BBOД HA_OCHOBAHИИ
КонецПроцедуры связанных объектов платформа не содержит.
Для решения подобной задачи, мы дадим некоторые рекомендации,
Как видите, для каждого типа объекта-основания формируется своя которые могут быть положены в основу конкретного решения.
ветка условия Если..., в которой происходит заполнение реквизитов
Для построения цепочек связанных объектов необходимо у
нового документа. каждого объекта, который будет вводиться на основании, создать
Запустите 1С:Предприятие в режиме отладки и проверьте работу служебный реквизит для хранения ссылки на объект-основание. Затем
ввода на основании. Обратите внимание, что в командной панели следует создать объект конфигурации КритерийОтбора, который
формы списка справочника «Клиенты» появилась кнопка «Ввести на будет использоваться для установки отбора по требуемому значению
служебного реквизита. В дальнейшем, для получения всех объектов,
основании»:
введенных на основании, достаточно будет установить нужное
значение отбора в критерии отбора.

Объект конфигурации Критерий отбора


О
бъект конфигурации Критерий отбора предназначен для
задания правил, по которым может выполняться отбор
объектов.
Этот объект используется в случае поиска
различной информации, когда, например, требуется отобрать все
документы, в которых используется (в реквизитах и в табличных
частях) определенный контрагент, при этом можно учитывать также и
другие условия отбора информации (например, поиск ведется только
среди проведенных документов или в определенном интервале дат).

Отбор объектов, введенных на основании


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

<<

стр. 8
(всего 11)

СОДЕРЖАНИЕ

>>