Здравствуйте.
Есть окно деталей реестра и "деталь детали". (см. изображение)
Т.е. каждому лицевому счёту соответствуют определённые услуги.
В Разделе (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();
}
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 комментария
10 ноября 2011 16:00
Ринат, попробуйте изменить код следующим образом:
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(); }
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать