Задание порядка свойств
В расширенном редакторе ограничений в web есть древовидная структура, представляющая собой свойства объекта, которые имеются в заданном представлении.

Можно повлиять на порядок отображения свойств. Делается это следующим образом:
- Формируется массив, задающий порядок, из:
- собственных и мастеровых свойств объекта (к ним из представления можно получить доступ как
View.Properties). - детейловых свойств объекта (к ним из представления можно получить доступ как
View.Details). - псевдодетейловых свойств (элементы такого рода нужно формировать особым образом, поддержка псевдодетейлов в расширенном редакторе ограничений на момент написания данной статьи дорабатывается).
- собственных и мастеровых свойств объекта (к ним из представления можно получить доступ как
- Данным массивом означивается свойство в WOLV’е
ViewPropertiesOrderedList(по умолчанию оно равноnull).
При инициализации расширенного редактора ограничений, если свойство ViewPropertiesOrderedList не null, ему будет передан указанный порядок.
Например,
public partial class C__КредитL : BaseListForm<Кредит>
{
// ...
/// <summary>
/// Вызывается самым первым в Page_Load.
/// </summary>
protected override void Preload()
{
WebObjectListView1.Operations.LimitEdit = true;
WebObjectListView1.LimitResolvingViews.AddRange(new View[] { Клиент.Views.C__КлиентE, Кредит.Views.C__КредитE });
var viewPropertiesOrderedList = new ArrayList();
viewPropertiesOrderedList.AddRange(Кредит.Views.C__КредитE.Properties);
viewPropertiesOrderedList.AddRange(Кредит.Views.C__КредитE.Details);
WebObjectListView1.ViewPropertiesOrderedList = viewPropertiesOrderedList;
}
// ...
}
ViewPropertiesOrderedList без LimitResolvingViews нельзя.Или при наличии псевдодетейлов используется структура PseudoDetailInExtendedView:
public partial class C__КлиентL : BaseListForm<Клиент>
{
// ...
/// <summary>
/// Вызывается самым первым в Page_Load.
/// </summary>
protected override void Preload()
{
WebObjectListView1.Operations.LimitEdit = true;
WebObjectListView1.LimitResolvingViews.AddRange(new View[] { Клиент.Views.КлиентE, Кредит.Views.КредитE });
var viewPropertiesOrderedList = new ArrayList();
viewPropertiesOrderedList.Add(View.Properties[1](ис-управления-проектами_1.html));
viewPropertiesOrderedList.Add(View.Properties[0]);
viewPropertiesOrderedList.AddRange(View.Details);
viewPropertiesOrderedList.Add(new PseudoDetailInExtendedView(Кредит.Views.КредитE, Information.ExtractPropertyPath<Клиент>(x => x.ФИО), "Кредит_Клиент"));
WebObjectListView1.ViewPropertiesOrderedList = viewPropertiesOrderedList;
}
// ...
}
Автоматическое добавление свойств, используемых в ограничении (AutoAddUsedInLimitationProperties)
Набор свойств, доступных в Расширенном редакторе ограничений, и набор свойств представления, по которому загружается список, могут отличаться. Это может привести к тому, что описанное пользователем ограничение будет несовместимо с представлением (в сформированном SQL-запросе в where будут использованы поля, отсутствующие в списке выбора). Для автоматического расширения представления, используемого при загрузке списка, необходимо установить свойство AutoAddUsedInLimitationProperties.
Если свойство AutoAddUsedInLimitationProperties имеет значение true, то в работе будет использоваться ViewPropertyAppender.