Еще одна полезная штука.
В данном случае решением будет создание отдельной функции инициализации и обновления информации на детали, которая будет передавать нужный фильтр.
Откройте wnd_ContactsWorkspace и добавьте в него контейнер страницы pgContactContractsDetail а в нее контейнер окна wndContactContractsDetail. Унаследуйте wndContactContractsDetail от wnd_ContractsGridArea.
Откройте wnd_ContactsWorkspaceScript и добавьте в него следующий программный код:
В функцию function RefreshDetails:
Необходимо добавить следующий программный код:
if (pcDetails.ActivePage.Name == pgContactContractsDetail.Name){
RefreshContactContractsDetail();
} else
В конец скрипта:
function InitializeContactContractsDetail() {
ContactsWorkspace.ContactContractsWindow = wndContactContractsDetail.Window;
var DetailWindow = ContractsWorkspace.ContactContractsWindow;
SetAttribute(DetailWindow, 'DatasetUSI', 'ds_Trained');
SetAttribute(DetailWindow, 'EditWindowUSI', 'wnd_TrainedEdit');
SetAttribute(DetailWindow, 'ParentItemFieldName', 'ContactID');
DetailWindow.Prepare();
ContactsWorkspace.ContactContractsDataset =
DetailWindow.ComponentsByName('dlData').Dataset;
}
function RefreshContactContractsDetail() {
if (ContactsWorkspace.InitializeContactContractsFlag != true) {
InitializeContactContractsDetail();
ContactsWorkspace.InitializeContactContractsFlag = true;
}
var ContactID = BaseWorkspace.GridDataset.ValAsGUID('ContactID');
if (ContactID == ContactsWorkspace.ContactContractsOldContactID) {
return;
} else {
ContactsWorkspace.ContactContractsOldContactID = ContactID;
}
RefreshDetailData(BaseWorkspace.GridDataset, 'ContactID',
ContactsWorkspace.ContactContractsDataset, 'ContactID');
}
Обратите внимание, в этом случае родительская запись тоже попадет в список, т.к. попадает в критерий фильтрации.
Для устранения данной проблемы можно в конце функции RefreshContactContractsDetail() добавить следующий дополнительный фильтр:
ApplyDatasetFilter(ContactsWorkspace.ContactContractsDataset, 'NotID', BaseWorkspace.GridDataset.ValAsGUID('ID'), true);
ContactsWorkspace.ContactContractsDataset.Close();
ContactsWorkspace.ContactContractsDataset.Open();
Приятной работы!
С уважением,
Белецкий Арсений
Группа компаний Terrasoft