Для настройки редактора значений через строку связи доступны следующие параметры:
Наименование
параметра |
Тип | Описание | Обязателен |
ID | Строка | Идентификатор или ключ справочника. | Да |
ATTRIBUTEVALUE | Строка | Атрибут справочника, из значений которого будет формироваться
значение ячейки.
По умолчанию будет использоваться атрибут «Идентификатор(ID)». |
Да |
LEVELATTR | Строка | Устанавливает атрибут, который определяет тип отображения наименований уровней в раскрывающемся списке. Для каждого уровня справочника можно определить свой атрибут. В качестве значения для данного параметра указывается строка следующего вида: 0{X1*Y1,X2*Y2,...,Xn*Yn}, где: X1-Xn - ключ уровня справочника, для которого необходимо выбрать отображаемый атрибут; Y1-Yn - ключ атрибута справочника, значения которого будут отображаться в качестве наименований элементов на заданном уровне. | Нет |
SELECTIONMODE | Строка | Определяет режим отметки элементов справочника в элементе управления.
В качестве значения данного параметра могут указываться следующие
значения:
|
Нет |
GROUP | Строка | Идентификатор группы элементов. | Нет |
SCHEMA | Строка | Идентификатор схемы отметки. | Нет |
NAME | Строка | Ключ атрибута справочника, который определяет тип отображения наименования уровня в раскрывающемся списке. Используется, если в справочнике один уровень. | Нет |
MULTISELECT | Логический | Возможность множественной отметки. | Нет |
PARAMVALUEх
PARAMID_[ident] |
Позволяют задать значения входных параметров, в случае если
в качестве раскрывающегося списка используется параметрический
справочник. Установить значение соответствующего параметра можно
двумя способами:
1) В строку связи добавляются параметры вида PARAMVALUEх, где х - номер параметра в списке параметров справочника (1,2 и т.д.), например, PARAMVALUE1 = "10". 2) В строку связи добавляются параметры вида PARAMID_[ident], где [ident] - идентификатор параметра в списке параметров справочника, например, PARAMID_Item = "10". |
Нет | |
DISPLAYATTRIBUTEVALUE | Строка | Определяет, по какому атрибуту справочника элементы выводятся в колонтитул/заголовок. | Нет |
RDS | Строка | Идентификатор репозитория НСИ, в котором хранится справочник. | Нет |
DS_KEY | Целый | Ключ источника данных регламентного отчета, для которого созданы вычисляемые точки. | Нет |
DIM_KEY | Целый | Ключ измерения, для которого создается редактор значения. | Нет |
PT_KEY | Целый | Ключ вычисляемой точки, созданной для источника данных. | Нет |
CUSTOMMULTISELECTTEXT | Строка | Шаблон, в соответствии с которым будет формироваться текст
редактора при множественной отметке. Для формирования шаблона
может использоваться любой текст и следующие подстановки:
|
Нет |
Логические значения задаются в виде символьной строки вида «ON/OFF», либо «True/False».
В ячейке отображаются наименования элементов. Значение, которое содержит ячейка, является значением атрибута, указанного в параметре ATTRIBUTEVALUE. Если отмечены несколько элементов, то значением ячейки является массив значений указанного атрибута справочника.
Примечание. При переводе ячейки в режим редактирования для корректного восстановления отметки справочника, используемого в элементе управления DimCombo, необходимо соблюдение следующих условий:
тип значения в ячейке совпадает с типом атрибута справочника, из значений которого будет формироваться значение ячейки - ATTRIBUTEVALUE;
в справочнике по атрибуту ATTRIBUTEVALUE должен быть создан уникальный индекс.
Для параметрических справочников существует возможность указать значения входных параметров. Установить значение соответствующего параметра можно двумя способами:
В строку связи добавляются параметры вида PARAMVALUEх, где х - номер параметра в списке параметров справочника (1,2 и т.д.), например, PARAMVALUE1 = "10".
В строку связи добавляются параметры вида PARAMID_[ident], где [ident] - идентификатор параметра в списке параметров справочника, например, PARAMID_Item = "10".
Контекстное меню для элемента 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(Null) As 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(0, 0).Style.Binding := DimComboBinding.AsString;
End Sub Button1OnClick;
При нажатии на кнопку будет задан редактор значения для ячейки «А0» таблицы. При редактировании ячейки будет отображаться раскрывающийся список справочника. Список элементов будет состоять из элементов, входящих в группу элементов справочника, при первом открытии будут отмечены элементы, входящие в схему отметки справочника. В качестве значения элементов первого уровня будут отображаться идентификаторы, возможность множественной отметки - включена. После установки отметки, значение ячейки будет формироваться из наименований выделенных элементов.
Для выполнения примера предполагается наличие формы, содержащей компонент Button с идентификатором «button1», компонент TabSheetBoxNet с идентификатором «TabSheetBoxNet1» и компонент UiTabSheetNet с идентификатором «UiTabSheetNet1». Для компонента «TabSheetBoxNet1» укажите источник данных «UiTabSheetNet1». В качестве источника данных используется справочник с идентификатором «D_TO», в структуре справочника содержится несколько уровней, а также имеется группа элементов. Пример является обработчиком события Click для компонента «button1».
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Report;
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
MB: IMetabase;
DimDesc: IMetabaseObjectDescriptor;
BM: IBindingManager = New BindingManager();
DimChildren: IMetabaseObjectDescriptors;
DimModel: IDimensionModel;
DimInst: IDimInstance;
Selection: IDimSelection;
Group: IDimElementGroup;
Schema: IDimSelectionSchema;
LvlKey, AttrKey: UInteger;
DimComboBinding: IBindingDimCombo;
Begin
MB := Self.Metabase;
DimDesc := MB.ItemById["D_TO"];
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(Null) As IDimInstance;
Selection := DimInst.CreateSelection();
Schema.ProcessInplace(Selection, Group);
DimComboBinding.ValueAttribute := "NAME";
DimComboBinding.ValueDefined := True;
DimComboBinding.Value := Selection.ToString("", ",", False);
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.semodMultiSelect;
UiTabSheetNet1.TabSheetUi.TabSheet.Cell[0, 0].Style.Binding := DimComboBinding.AsString;
End Sub;
Результат выполнения примера Fore.NET совпадет с результатом выполнения примера Fore.