function ProcessBaseDBEditOnClose(Window, BaseDBEdit){
if (!WindowWasPrepared(Window)) {
return;
}
SendNotify(Window, MSG_CLOSE);
Window.WindowCaption = BaseDBEdit.OldCaption;
var Datalink = Window.ComponentsByName('dlData');
if (Window.Attributes('IsLocked')){
releaserecord(Datalink.Dataset.Values('ID'));
}
Finalize(BaseDBEdit);
if (!BaseDBEdit.DatasetWasDesigned) {
Datalink.Dataset = System.EmptyValue;
}
}
if (!WindowWasPrepared(Window)) {
return;
}
SendNotify(Window, MSG_CLOSE);
Window.WindowCaption = BaseDBEdit.OldCaption;
var Datalink = Window.ComponentsByName('dlData');
if (Window.Attributes('IsLocked')){
releaserecord(Datalink.Dataset.Values('ID'));
}
Finalize(BaseDBEdit);
if (!BaseDBEdit.DatasetWasDesigned) {
Datalink.Dataset = System.EmptyValue;
}
}
В этой функции на:
if (Window.Attributes('IsLocked')){
releaserecord(Datalink.Dataset.Values('ID'));
}
releaserecord(Datalink.Dataset.Values('ID'));
}
Выскакивает, что ds_Task не открыт. Пробовал Datalink.Dataset.Open(); выскакивает ошибка, что null не является объектом. В чем может быть проблема.
releaserecord - функция, принимает ID и возвращает true или false. С функцией все норм.
Нравится
2 комментария
7 сентября 2011 16:05
Попробуйте сохранить нужное Вам значение ID перед генерацией сообщения MSG_CLOSE, например таким образом:
var Dataset = Window.ComponentsByName('dlData').Dataset; BaseDBEdit.DatasetID = Dataset('ID');
а уже после этого использовать сохраненный ID:
if (Window.Attributes('IsLocked')){ releaserecord(BaseDBEdit.DatasetID); }
7 сентября 2011 17:16
Посмотрите в отладчике значение переменных Datalink и Datalink.Dataset не равны ли они null. Дальше смотрите отталкиваясь от этого.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать