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