Редактор значения DimCombo

Для настройки редактора значений через строку связи доступны следующие параметры:

Наименование
параметра
Тип Описание Обязателен
ID Строка Идентификатор или ключ справочника. Да
ATTRIBUTEVALUE Строка Атрибут справочника, из значений которого будет формироваться значение ячейки.
По умолчанию будет использоваться атрибут «Идентификатор(ID)».
Да
LEVELATTR Строка Устанавливает атрибут, который определяет тип отображения наименований уровней в раскрывающемся списке. Для каждого уровня справочника можно определить свой атрибут. В качестве значения для данного параметра указывается строка следующего вида: 0{X1*Y1,X2*Y2,...,Xn*Yn}, где: X1-Xn - ключ уровня справочника, для которого необходимо выбрать отображаемый атрибут; Y1-Yn - ключ атрибута справочника, значения которого будут отображаться в качестве наименований элементов на заданном уровне. Нет
SELECTIONMODE Строка Определяет режим отметки элементов справочника в элементе управления. В качестве значения данного параметра могут указываться следующие значения:
  • SingleSelect - одиночная отметка элементов. Всегда выделен сфокусированный элемент;
  • SingleSelectNullable - одиночная отметка элементов. Для сфокусированного элемента может отсутствовать отметка. При переходе по элементам осуществляется выделение сфокусированного элемента. При вызове контекстного меню в области элемента, элемент фокусируется, но не выделяется;
  • MultiSelect - расширенный режим множественной отметки. Множественная отметка осуществляется при выборе элемента, переход по элементам не вызывает сброс отметки. При зажатой клавише CTRL осуществляется добавление в отметку всех дочерних элементов. При вызове контекстного меню в области элемента, элемент фокусируется но не выделяется;
  • MultiSelectStandard - стандартный режим множественной отметки. Множественная отметка осуществляется при зажатой клавише SHIFT или CTRL, переход по элементам вызывает сброс отметки и выделение сфокусированного элемента.
Нет
GROUP Строка Идентификатор группы элементов. Нет
SCHEMA Строка Идентификатор схемы отметки. Нет
NAME Строка Ключ атрибута справочника, который определяет тип отображения наименования уровня в раскрывающемся списке. Используется, если в справочнике один уровень. Нет
NAMESPACE Строка Путь до справочника, элементы которого будут отображаться в редакторе значений. В качестве значения указывается последовательность вложенных объектов до справочника в формате: <идентификатор контейнера_1>.<идентификатор контейнера_2>. ... .<идентификатор контейнера_n>. Нет
MULTISELECT Логический Возможность множественной отметки. Нет
PARAMVALUEх
PARAMID_[ident]
  Позволяют задать значения входных параметров, в случае если в качестве раскрывающегося списка используется параметрический справочник. Установить значение соответствующего параметра можно двумя способами:
1) В строку связи добавляются параметры вида PARAMVALUEх, где х - номер параметра в списке параметров справочника (1,2 и т.д.), например, PARAMVALUE1 = "10".
2) В строку связи добавляются параметры вида PARAMID_[ident], где [ident] - идентификатор параметра в списке параметров справочника, например, PARAMID_Item = "10".
Для указания типа данных, который имеет передаваемое значение, перед самим значением может быть добавлено одно из значений перечисления ForeVariantType. Тип данных и само значение разделяются двоеточием.
Пример:
  • PARAMVALUE1 = "4:10". Значение «10» будет передаваться как вещественное число;
  • PARAMID_Item = "2:True". Значение «True» будет передаваться как строка;
  • PARAMID_Item = "8204:[3:1,3:5,3:8,3:9]", где 8204 - обозначение массива. Массив значений передаваемых как 32-разрядные целые числа со знаком.
Нет
DISPLAYATTRIBUTEVALUE Строка Определяет, по какому атрибуту справочника элементы выводятся в колонтитул/заголовок. Нет
DS_KEY Целый Ключ источника данных регламентного отчета, для которого созданы вычисляемые точки. Нет
DIM_KEY Целый Ключ измерения, для которого создается редактор значения. Нет
PT_KEY Целый Ключ вычисляемой точки, созданной для источника данных. Нет
CUSTOMMULTISELECTTEXT Строка Шаблон, в соответствии с которым будет формироваться текст редактора при множественной отметке. Для формирования шаблона может использоваться любой текст и следующие подстановки:
  • %First. Наименование первого выделенного элемента;
  • %Last. Наименование последнего выделенного элемента;
  • %Count. Количество выделенных элементов;
  • %TotalCount. Количество вершин в дереве.
Нет

Логические значения задаются в виде символьной строки вида «ON/OFF», либо «True/False».

Особенности применения

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

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

Контекстное меню для элемента DimCombo выглядит следующим образом:

Примечание. Пункты контекстного меню «Отметить группу» и «Отобразить группу» присутствуют, если не стоит ограничение на видимые элементы справочника из группы отметки справочника, т.е. не задан параметр GROUP.

Строка связи

UI="DimCombo" ID="CALENDAR" ATTRIBUTEVALUE="NAME" LEVELATTR="0{4*4}" MULTISELECT="True" PARAMID_YEAR_START="2000" PARAMID_YEAR_FINISH="2020"

UI="DimCombo" ID="@1033" ATTRIBUTEVALUE="NAME"

Пример

Для выполнения примера предполагается наличие формы, содержащей компонент Button с идентификатором «Button1», компонент TabSheetBox с идентификатором «TabSheetBox1» и компонент UiTabSheet с идентификатором «UiTabSheet1». Для компонента «TabSheetBox1» укажите источник данных «UiTabSheet1». В качестве источника данных используется справочник с идентификатором «D_TO», в структуре справочника содержится несколько уровней, а также имеется группа элементов. Пример является обработчиком события OnClick для компонента «Button1».


Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
    MB: IMetabase;
    DimDesc: IMetabaseObjectDescriptor;
    BM: IBindingManager;
    DimChildren: IMetabaseObjectDescriptors;
    DimModel: IDimensionModel;
    DimInst: IDimInstance;
    Selection: IDimSelection;
    Group: IDimElementGroup;
    Schema: IDimSelectionSchema;
    LvlKey, AttrKey: Integer;
    DimComboBinding: IBindingDimCombo;
Begin
    MB := MetabaseClass.Active;
    DimDesc := MB.ItemById("D_TO");
    BM := New BindingManager.Create;
    DimModel := DimDesc.Bind As IDimensionModel;
    DimChildren := DimDesc.Children;
    //Настройка параметров
    DimComboBinding := BM.CreateByUi("DimCombo"As IBindingDimCombo;
    //Проверка наличия группы элементов и схемы отметки
    //Предполагается, что первый дочерний объект - группа элементов,
    //второй - схема отметки
    If DimChildren.Count >= 2 Then
        Group := DimChildren.Item(0).Bind As IDimElementGroup;
        Schema := DimChildren.Item(1).Bind As IDimSelectionSchema;
        DimComboBinding.Group := (Group As IMetabaseObject).Id;
        DimComboBinding.Schema := (Schema As IMetabaseObject).Id;
        //Формирование значений из наименований
        DimInst := DimDesc.Open(NullAs IDimInstance;
        Selection := DimInst.CreateSelection;
        Schema.ProcessInplace(Selection, Group);
        DimComboBinding.ValueAttribute := "NAME";
        DimComboBinding.ValueDefined := True;
        DimComboBinding.Value := Selection.ToString;
    End If;
    //Идентификаторы в качестве наименования элементов уровня, если уровень существует
    If DimModel.Levels.Count >= 1 Then
        LvlKey := DimModel.Levels.Item(1).Key;
        AttrKey := DimModel.Attributes.Id.Key;
        DimComboBinding.LevelAttribute := "0{" + LvlKey.ToString + "*" + AttrKey.ToString + "}";
    End If;
    DimComboBinding.Object := DimDesc.Id;
    //Множественная отметка
    DimComboBinding.SelectionMode := SelectionModeEnum.MultiSelect;
    UiTabSheet1.TabSheet.Cell(00).Style.Binding := DimComboBinding.AsString;
End Sub Button1OnClick;

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

Назад