Создание нового представления

DocsVision.Platform.ObjectManager.ViewModel.View view = session.CreateView(); (1)

view.Columns.AddNew("Name").Caption = "Тема документа";
view.Columns.AddNew("Number").Caption = "Номер документа";
view.Columns.AddNew("ApproverPos").Caption = "Должность согласующего лица";
view.Columns.AddNew("FilesCount").Caption = "Количество файлов";
view.Columns.AddNew("PropertiesCount").Caption = "Количество свойств"; (2)

view.Sorting.AddNew("Number").Ascending = true; (3)

ViewElement element = view.Elements.AddNew(new Guid("8C77892A-21CC-4972-AD71-A9919BCA8187")); (4)

element.SectionFields.AddNew("Name").Name = "Name";
element.SectionFields.AddNew("Number").Name = "FullNumber"; (5)

JoinDefinition join1 = element.JoinDefinitions.AddNew("Employees"); (6)
join1.SourceField = "InstanceID";
join1.DestinationField  = "InstanceID";
join1.SectionId = new Guid("47C41171-9C64-450A-A3A6-102B3156AD79");

DataCondition cond = join1.ConditionGroup.Conditions.AddNew();
cond.Operation = ConditionOperation.Equals;
DataConditionItem item1 = cond.ConditionItems.AddNew();
item1.SectionAlias = "Employees";
item1.Value = "Type";
item1.DataType = DataType.Integer;
DataConditionItem item2 = cond.ConditionItems.AddNew();
item2.DataType = DataType.Integer;
item2.Value = 3; (7)

JoinDefinition join2 = element.JoinDefinitions.AddNew("RefStaffEmployees");
join2.SourceField = "EmployeeID";
join2.DestinationField = "RowID";
join2.SectionId = new Guid("DBC8AE9D-C1D2-4D5E-978B-339D22B32482"); (8)

JoinDefinition join3=element.JoinDefinitions.AddNew("RefStaffPositions");
join3.SourceField = "Position";
join3.DestinationField = "RowID";
join3.SectionId = new Guid("CFDFE60A-21A8-4010-84E9-9D2DF348508C"); (9)

SectionField field = element.SectionFields.AddNew("ApproverPos");
field.SectionAlias = "RefStaffPositions";
field.Name = "Name"; (10)

CardType type =  session.CardManager.CardTypes[new Guid("C1FED883-08DE-420F-8FB4-C16CEFFC1630")]; (11)

CardVirtualField virtfield = type.VirtualFields["FilesCount"];
element.MergeVirtualField(virtfield.Export(), "Main", "FilesCount");

JoinDefinition join4 = element.JoinDefinitions.AddNew("Properties");
join4.SourceField = "InstanceID";
join4.DestinationField = "InstanceID";
join4.SectionId = new Guid("B822D7D1-2280-4B51-AE58-A1CF757C5672"); (12)

ComputedField compfield = element.ComputedFields.AddNew("PropertiesCount"); (13)
ComputationPart comppart = compfield.ComputationGroup.ComputationParts.AddNew();
comppart.DataItem.SectionAlias = "Properties";
comppart.DataItem.Value = "RowID";
1 Создание представления по документам с пятью колонками:
  • Тема документа.

  • Номер документа.

  • Должность согласующего лица.

  • Количество файлов.

  • Количество свойств.

2 Добавление колонок.
3 Сортировка — по полю Номер.
4 В представление будут выводиться данные только по Входящим документам.

Поэтому будет только один элемент данных (ViewElement). Его базовая секция — Основная информация Входящего документа.

5 Данные двух колонок — Тема и Номер выводятся непосредственно из физических полей секции.
6 Формирование колонки Должность согласующего лица.

Базовой секцией представления является "Основная информация". Согласующее лицо хранится в секции Сотрудники. Поэтому сначала нужно присоединить секцию Сотрудники к представлению.

7 Условие присоединения: в секции Сотрудники поле Type должно иметь значение 3 (согласующее лицо).
8 Далее нужно присоединить секцию справочника сотрудников.
9 Наконец, для получения названия должности, нужно присоединить секцию должностей.
10 Добавляем к элементу представления колонку — название должности.
11 Четвертая колонка — количество файлов — уже определена в описании карточки в виде виртуального поля. Нужно только добавить её к представлению.
12 Последняя колонка — Количество свойств — это вычисляемое поле. Представляет собой агрегацию (количество строк) по секции Свойства.
13 Присоединяем секцию Свойства.