Создание нового представления
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 | В представление будут выводиться данные только по Входящим документам.
Поэтому будет только один элемент данных ( |
5 | Данные двух колонок — Тема и Номер выводятся непосредственно из физических полей секции. |
6 | Формирование колонки Должность согласующего лица.
Базовой секцией представления является "Основная информация". Согласующее лицо хранится в секции |
7 | Условие присоединения: в секции Сотрудники поле Type должно иметь значение 3 (согласующее лицо). |
8 | Далее нужно присоединить секцию справочника сотрудников. |
9 | Наконец, для получения названия должности, нужно присоединить секцию должностей. |
10 | Добавляем к элементу представления колонку — название должности. |
11 | Четвертая колонка — количество файлов — уже определена в описании карточки в виде виртуального поля. Нужно только добавить её к представлению. |
12 | Последняя колонка — Количество свойств — это вычисляемое поле. Представляет собой агрегацию (количество строк) по секции Свойства . |
13 | Присоединяем секцию Свойства . |