Открытие окна "двойной" детали

Здравствуйте.

Есть окно деталей реестра и "деталь детали". (см. изображение)
Т.е. каждому лицевому счёту соответствуют определённые услуги.
В Разделе (Workspace) контактов окно вызывается и правильно работает, но когда я хочу вызвать это окно по клику из карточки звонка, не обновляются услуги.

Функцию вывода делал по "образу и подобию" OpenTaskGridAreaWindow в wnd_CallEditScript:

function OpenLSUslugiWindow(WindowGridAreaUSI, ParentItemID, ParentItemFieldName, WindowCaption) {
        if (IsEmptyGUID(ParentItemID)) {
                ShowWarningDialog('Для работы с подключениями значение поля ' +
                        'должно быть заполнено');
                return;
        }
        var TaskGridAreaWindow = GetSingleItemByCode(WindowGridAreaUSI, ParentItemFieldName + 'InCallEdit');
       
        TaskGridAreaWindow.Attributes('ParentItemID') = ParentItemID;
        TaskGridAreaWindow.Attributes('ParentItemFieldName') = ParentItemFieldName;
        TaskGridAreaWindow.WindowCaption = WindowCaption;
       
        var LSWindow = TaskGridAreaWindow.ComponentsByName('wndLSGridArea').Window;
        var LSDataset = LSWindow.ComponentsByName('dlData').Dataset;
               
        RefreshDetailDataByParentID(ParentItemID, Dataset, ParentItemFieldName);
       
        TaskGridAreaWindow.Prepare();
       
        var UslugiWindow = TaskGridAreaWindow.ComponentsByName('wndUslugiDetail').Window;
        var UslugiDataset = UslugiWindow.ComponentsByName('dlData').Dataset;
               
        var CurID = LSDataset.Values('ID');
       
        var Dataset = LSDataset;
       
        RefreshDetailDataByParentID(CurID, UslugiDataset, ParentItemFieldName);
       
        TaskGridAreaWindow.Show();
}

Данный код выдаёт "State" есть null и не является объектом, ошибка в (RefreshDetailDataByParentID), не передаётся dataset.
Если вручную не апдейтить wndUslugiDetail, оно вообще не инициализируется.

Может, есть какие-нибудь примеры?
Спасибо.

Нравится

2 комментария

Ринат, попробуйте изменить код следующим образом:

function OpenLSUslugiWindow(WindowGridAreaUSI, ParentItemID,
	ParentItemFieldName, WindowCaption) {   
	if (IsEmptyGUID(ParentItemID)) {
		ShowWarningDialog('Для работы с задачами значение поля ' +
			'должно быть заполнено');
		return;
	}
	var TaskGridAreaWindow = GetSingleItemByCode(WindowGridAreaUSI,
		ParentItemFieldName + 'InCallEdit');
	TaskGridAreaWindow.Attributes('ParentItemID') = ParentItemID;
	TaskGridAreaWindow.Attributes('ParentItemFieldName') = ParentItemFieldName;	
	TaskGridAreaWindow.WindowCaption = WindowCaption;
	var LSDataset = TaskGridAreaWindow.ComponentsByName('wndLSGridArea').Window.ComponentsByName('dlData').Dataset;
	RefreshDetailDataByParentID(ParentItemID, LSDataset, ParentItemFieldName);
	var UslugiDataset = TaskGridAreaWindow.ComponentsByName('wndUslugiDetail').Window.ComponentsByName('dlData').Dataset;
	EnableDatasetFilters(UslugiDataset, false);	
	RefreshDetailDataByParentID(LSDataset('LSID'), UslugiDataset, 'LSID');
	TaskGridAreaWindow.Prepare();
	TaskGridAreaWindow.Show();
}

Наталия, спасибо, сработало!

Показать все комментарии