Здравствуйте!
Подскажите пожалуйста, имеется деталь с вложенным реестром. При изменении цены на вложенных записях необходимо их суммировать и подставлять в корневую запись. Каким образом это можно реализовать? Или где можно посмотреть что-нибудь схожее?
Заранее спасибо.
Нравится
Это можно сделать либо в скрипте датасета подчинённого реестра, либо триггером на уровне базы, на его же таблице.
Я повесил на кнопку ф-цию. И не могу понять по какой причине не сохраняется значение в датасет.
function btnPriceOnClick(Control) {
var Dataset = Services.GetSingleItemByUSI('ds_XSpecification');
var Sum = 0;
Dataset.Open();
Dataset.GotoLast();
while (!Dataset.IsBOF) {
if (Dataset('ParentID') != null) {
var Price = Dataset('PriceBYN');
Sum = Price + Sum;
}
else {
Dataset.Edit();
Dataset('PriceBYN') = Sum;
Dataset.Post();
Sum = 0;
}
Dataset.GotoPrior();
}
Dataset.Post();
RefreshDataset(Dataset);
}
Видимо, где-то в коде ошибка. Попробуйте отладиться.
Вообще, перебор всех записей датасета в цикле — не лучший подход. Если там, допустим, миллион записей, то оно будет не только долго их перебирать, но и потребит много памяти.
Лучше использовать средства SQL для вычисления суммы, а затем в датасете менять значение поля в одной конкретной записи.
Зверев Александр,
Подскажите в какой документации почитать, как сделать запрос в базу для решения подобной задачи?