ВидПоляФормы.ПолеДендрограммы

Свойства · DendrogramField

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

Полное описание, параметры и ограничения

ВидПоляФормы.ПолеДендрограммы (FormFieldType.DendrogramField)

ВидПоляФормы (FormFieldType)

ПолеДендрограммы (DendrogramField)

Доступен, начиная с версии 8.2.

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

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

Показать собственные данные: ПолеДендрограммы

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

Где и как запускать

Собственная внешняя обработка с управляемой формой, толстый управляемый клиент Windows. Реквизит УчебноеДерево типа Дендрограмма и связанное ПолеДерева вида Поле дендрограммы создайте в конфигураторе.

Подготовка

  1. Собственная внешняя обработка с управляемой формой, толстый управляемый клиент Windows. Реквизит УчебноеДерево типа Дендрограмма и связанное ПолеДерева вида Поле дендрограммы создайте в конфигураторе.

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

  3. Источник — только шесть собственных вымышленных точек в памяти. Построитель отчёта анализа данных работает здесь в толстом клиенте, не в тонком или веб-клиенте.

  4. Дерево получается из результата настоящей иерархической кластеризации. Концы связей ПервыйЭлемент / ВторойЭлемент доступны только для чтения: код не пытается присвоить их вручную.

  5. BSL и кластеризация при сборке HTML не выполнялись; данные базы, файлы, сеть и печать не используются.

&НаКлиенте
Процедура ПостроитьДерево(Команда)
    Элементы.ПолеДерева.Вид = ВидПоляФормы.ПолеДендрограммы;
    УчебноеДерево = ПостроитьУчебноеДерево();
    Сообщить("В поле возвращено настоящее дерево собственных точек");
КонецПроцедуры
Тот же модуль: шесть собственных точек
&НаКлиенте
Функция УчебныеТочкиДерева()
    Точки = Новый ТаблицаЗначений;
    Точки.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Точки.Колонки.Добавить("X", Новый ОписаниеТипов("Число"));
    Точки.Колонки.Добавить("Y", Новый ОписаниеТипов("Число"));
    Для Индекс = 0 По 5 Цикл
        Точка = Точки.Добавить();
        Точка.Код = "Учебная точка " + Строка(Индекс + 1);
        База = ?(Индекс < 3, 0, 10);
        Точка.X = База + ?(Индекс % 3 = 2, 1, 0);
        Точка.Y = База + ?(Индекс % 3 = 1, 1, 0);
    КонецЦикла;
    Возврат Точки;
КонецФункции
Тот же модуль: получить реальный параметр анализа
&НаКлиенте
Функция ПараметрУчебногоДерева(Параметры, Русское, Английское)
    Параметр = Параметры.Найти(Русское);
    Если Параметр = Неопределено Тогда
        Параметр = Параметры.Найти(Английское);
    КонецЕсли;
    Если Параметр = Неопределено Тогда
        ВызватьИсключение "Не найден параметр анализа: " + Русское;
    КонецЕсли;
    Возврат Параметр;
КонецФункции
Тот же модуль: построить настоящий отчёт иерархической кластеризации
&НаКлиенте
Функция УчебныйОтчетКластеризации()
    Построитель = Новый ПостроительОтчетаАнализаДанных;
    Построитель.ТипАнализа = Тип("АнализДанныхКластеризация");
    Построитель.ИсточникДанных = УчебныеТочкиДерева();
    Колонки = Построитель.НастройкаКолонок;
    Колонки.Найти("Код").ТипКолонки = ТипКолонкиАнализаДанныхКластеризация.Ключ;
    Колонки.Найти("Код").ВидДанных = ВидДанныхАнализа.Дискретные;
    Для Каждого ИмяКолонки Из СтрРазделить("X,Y", ",") Цикл
        Колонка = Колонки.Найти(ИмяКолонки);
        Колонка.ТипКолонки = ТипКолонкиАнализаДанныхКластеризация.Входная;
        Колонка.ВидДанных = ВидДанныхАнализа.Непрерывные;
    КонецЦикла;
    Количество = ПараметрУчебногоДерева(Построитель.Параметры, "КоличествоКластеров", "ClusterCount");
    Количество.Значение = 2;
    Метод = ПараметрУчебногоДерева(Построитель.Параметры, "МетодКластеризации", "ClusterizationMethod");
    Метод.Значение = МетодКластеризации.ДальняяСвязь;
    Построитель.Выполнить();
    Документ = Новый ТабличныйДокумент;
    Построитель.Вывести(Документ);
    Возврат Документ;
КонецФункции
Тот же модуль: извлечь дендрограмму из собственного отчёта
&НаКлиенте
Функция ПостроитьУчебноеДерево()
    Документ = УчебныйОтчетКластеризации();
    Для Каждого Рисунок Из Документ.Рисунки Цикл
        Если Рисунок.ТипРисунка = ТипРисункаТабличногоДокумента.Дендрограмма Тогда
            Дерево = Рисунок.Объект;
            Для Каждого Узел Из Дерево.Элементы Цикл
                Узел.Расшифровка = Узел.Текст;
            КонецЦикла;
            Возврат Дерево;
        КонецЕсли;
    КонецЦикла;
    ВызватьИсключение "В собственном иерархическом отчёте нет дендрограммы";
КонецФункции

Разбор по шагам

  1. Создайте указанный свой реквизит и связанное поле.

  2. Поместите блоки в указанные места одного модуля.

  3. Откройте форму и проверьте собственное содержимое поля.

Как проверить результат

  1. Дендрограмма получена из результата настоящей кластеризации. Readonly-концы связей не присваиваются вручную, отсутствие дерева не маскируется пустой картинкой.

  2. BSL и отображение формы при сборке HTML не выполнялись. Рабочие объекты, сеть, печать и файлы не изменяются.

Ожидаемый результат

Есть осмысленное содержимое поля и понятный ручной опыт.

На что обратить внимание

  1. ВидПоляФормы не меняет тип реквизита. Несовместимый путь к данным нельзя исправить только сменой вида.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.