Добрый день.
Сегодняшний вопрос касается такой задачи: в системе есть новый раздел Объекты, и необходимо создать новую деталь в разделе Контрагенты, где отражать связанные с Контрагентом Объекты.
На сейчас получилось добавить саму деталь в раздел (в wnd_AccountsWorkspace). Я прописала обновление детали в scr_AccountsWorkspace. Для этого фукнция RefreshDetails() изменена, добавлены строки
if (pcDetails.ActivePage.Name == pgObjectDetail.Name) {
RefreshObjectDetail();
} else
и созданы 2 новых функции
1)
function InitializeObjectDetail() {
var DetailWindow = wndObjectDetail.Window;
AccountsWorkspace.ObjectWindow = DetailWindow;
SetAttribute(DetailWindow, 'ParentItemFieldName', 'object_clientID');
DetailWindow.Prepare();
AccountsWorkspace.ObjectDataset =
DetailWindow.ComponentsByName('dlData').Dataset;
}
2)
function RefreshObjectDetail() {
if (AccountsWorkspace.InitializeObjectFlag != true) {
InitializeObjectDetail();
AccountsWorkspace.InitializeObjectFlag = true;
}
var AccountID = BaseWorkspace.GridDataset.ValAsGUID('ID');
if (AccountID == AccountsWorkspace.ObjectOldAccountID) {
return;
} else {
AccountsWorkspace.ObjectOldAccountID = AccountID;
}
SetAttribute(AccountsWorkspace.ObjectWindow, 'ParentItemID',
AccountID);
RefreshDetailData(BaseWorkspace.GridDataset, 'ID',
AccountsWorkspace.ObjectDataset, 'object_clientID');
}
Теперь при открытии детали возникает ошибка в функции:
function CheckAssigned(Object, ObjectName) {
if (!Assigned(Object)) {
var ErrorMgs = FormatStr(ObjectNotAssignedError, ObjectName);
throw ErrorMgs;
}
}
и появляется сообщение "OLE 80020101".
После этого деталь все же открывается, но пустая.
Если добавить в детали новый Объект, то он создается нормально, и после сохранения отражаются все Объекты, которые хранятся в системе, не зависимо от того, относятся ли они к данному контргагенту или нет.
Что еще я не учла при создании детали?
Какие изменения внести, чтобы деталь открывалась правильно?