Переопределение заголовка списковой формы, использование списка для детейлов

Установка динамического свойства ListFormCaption объекта данных позволяет переопределить заголовок списковой формы, открываемой при редактировании объекта (поднятии на LookUp). Следует заметить, что установка заголовка окна происходит в методе BaseWinList.Edit.

public override void OnEdit(string propertyname, ICSSoft.STORMNET.DataObject dataobject, string contpath, object tag)
{
   if (propertyname == "Порода")
      if (!dataobject.DynamicProperties.ContainsKey("ListFormCaption"))
         dataobject.DynamicProperties.Add("ListFormCaption", "Список всех пород");
  
   base.OnEdit(propertyname, dataobject, contpath, tag);
}

Детейл в качестве мастера

Детейл в качестве мастера

Одной из особенностью детейлов является отсутствие формы списка и формы редактирования: и тем и другим служит GroupEdit на форме редактирования объекта-агрегатора. Однако, если возникает необходимость сделать детейл мастером другого объекта, то для начала необходимо создать для неё форму редактирования (и, как следствие, L-представление).

Необходимые действия

  • Создать L-представление для мастерового детейла.
  • Создать форму списка для мастерового детейла.
  • Настроить E-представление мастерового детейла.
  • Настроить LookUp.

Создать L-представление

Чтобы создать L-представление, необходимо зайти в свойства класса мастерового лукапа (в нашем случае - СтрокаПогашенияПлана), перейти на вкладку “Представления” и создать новое представление, назвав его СтрокаПогашенияПланаL

Представление для списка

Создать форму списка

Чтобы создать форму списка, откроем диаграмму с приложением и формами, созданную при быстром прототипировании. Создадим новый класс, назовем его СтрокаПогашенияПланаL. Выберем стереотип listform. Зайдем в свойства класса, на вкладке “Составные представления” выберем представление СтрокаПланаПогашенияL, созданное на предыдущем шаге.

Списковая форма

Настроить E-представление

Чтобы у детейла не было возможности изменения агрегирующего объекта, необходимо удалить из E-представления все ссылки на него, а также добавить ссылки на объект, для которого он будет являться мастером.

Представление для формы редактирования

Настроить LookUp

Последним шагом является настройка лукапов агрегирующего объекта нашего “не-мастерового детейла” (в нашем случае это объект Клиент, являющийся агрегатором для КредитнойКарты). Зайдем в настройки формы редактирования класса КлиентE, нажмем на кнопку PropertyLookups и выберем соответствующий контейнер (форму, созданную на шаге 2).

Настройка Lookup

Ошибки

Если что-то сделано неправильно, то при попытке открыть объект на LookUp будет появляться сообщение об ошибке No Such Container.

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