Поле Remain датасета ds_OfferingInMovement содержит null после открытия датасета
Добрый день.
После открытия датасета поле ds_OfferingInMovement.Remain содержит null вместо корректного значения. Значение у записи точно есть, проверял в клиенте, вытянув колонку [Остаток] из крестика в детали [Продукты] раздела [Склад]. Такое чувство, что поле Remain инициализируется в момент вытягивания соответствующей колонки в гриде. Как получить корректное значение данного поля при открытии датасета?
ApplyDatasetFilter(ds, 'ID', '{7C0709E9-5EB9-4D1A-B313-8F3A583FD063}', true);
ds.Open();
var val = ds.Values('Remain');
debugger;
Нравится
Здравствуйте.
Это вычисляемое поле, соответственно значение не хранится в таблице БД, а вычисляется на событии OnDatasetCalcFields и хранится именно в датасете, пока он открыт.
Посмотрите данное событие, а именно то, как вычисляется данное поле, и продублируйте логику.
Здравствуйте.
Нет, это не вычисляемое поле. Тип поля в датасете - "дробное", в sq значение поля получается подзапросом.
Олег, а в sq это поле отмечено галочкой всегда выбирать в запросе? И также поставьте галочку напротив данного поля, чтобы оно всегда выбиралось, т.к. по умолчанию - оно отключено.
Действительно, проблема была в том, что в запросе колонка Remain была отключена. Но откуда тогда в клиенте берется значение при вытягивании Остатка из крестика?
Олег, все просто - при вытягивании колонки в реестр - колонка включается.
Отключили её, чтобы не всегда выполнять перерасчет, и нагружать БД.