Как при создании подчиненных данных указать родителя?

Есть файл, например с писателями. При редактировании конкретного писателя, открывается окно дял редактирования. В окне ве страницы. На первой странице все основные данные. На второй странице грид с книгами. Через базу данных ввелись некоторые данные. И отображение данных "писатель - его книги" в гриде с книгами правильное. Грид с книгами создавался стандартными средства (с кнопками "Добавить", "Изменить", "Копировать", "Удалить"). Но при попытке добавить книгу, не происходит связь между конкретным писателем (в карточке которого я нахожусь) и добавляемой книгой. Книга добавляется, но ID автора - пустое. Как, где и в какой момент это надо обрабатывать?
Грид с книгами добавлен как window container из раздела книг.

Нравится

5 комментариев

посмотрите тему http://www.community.terrasoft.ua/forum/topic/3820, там похожий случвй.
Вам нужно передать ИДшку записи в атрибуты грида книг. примерно так:

var ID = dlData.Dataset.ValAsGUID('ID');
SetAttribute(wndGrid.Window, 'ParentItemID', ID);

при инициализации грида.

Я указала. В функции pcPagesOnChangeActivePage, при переключении на окно, содержащее грид с книгами, указано

SetAttribute(wndBooks.Window, 'ParentItemID', dlData.Dataset.Values('ID'));

И данные в гриде отображаются корректно (если в базе данных им вручную присвоить ID писателя). А сохранение не работает.

Наталия, здравствуйте.

Уточните, Вы кнопкой Добавить вызываете карточку редактирования книги, указываете в ней автора, но в базу значение не записывается и потому в гриде книга не отображается?

Нет. Я не указываю автора. Как раз таки, если я добавляю поле с автором (в форму редактирования книги) и указываю автора, то все корректно сохраняется. Но разве в таком случае автор не должен проставляться автоматом? Ведь я захожу в грид и вызываю создание новой книги из карточки автора. Я новичок в ТерраСофте. И допускаю, что я где-то чего-то не указала. Но в другом проекте я видела именно такие примеры. Что родительное поле автоматом заполнялось при создании новой записи для "ребенка".

Что бы автоматом проставлялось значение поля Автор при добавлении книги с вкладки, Вам необходимо добавить проверку наличия атрибута ParentItemID (его не будет, если карточка редактирования книги будет открыта из "родного" раздела) на событии OnDatasetAfterAppend:

var ParentItemID = GetAttribute(Self, 'ParentItemID');
  if (!IsEmptyValue(ParentItemID)) {
  AddDataDefaultValues('AuthorID') = ParentItemID;
  }
Показать все комментарии