Вопрос по функции

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 (Window.Attributes('IsLocked')){
                releaserecord(Datalink.Dataset.Values('ID'));
        }

Выскакивает, что ds_Task не открыт. Пробовал Datalink.Dataset.Open(); выскакивает ошибка, что null не является объектом. В чем может быть проблема.

releaserecord - функция, принимает ID и возвращает true или false. С функцией все норм.

Нравится

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

Попробуйте сохранить нужное Вам значение ID перед генерацией сообщения MSG_CLOSE, например таким образом:

var Dataset = Window.ComponentsByName('dlData').Dataset;
BaseDBEdit.DatasetID = Dataset('ID');

а уже после этого использовать сохраненный ID:

        if (Window.Attributes('IsLocked')){
                 releaserecord(BaseDBEdit.DatasetID);
         }

Посмотрите в отладчике значение переменных Datalink и Datalink.Dataset не равны ли они null. Дальше смотрите отталкиваясь от этого.

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