Здравствуйте!
Подскажите пожалуйста, имеется деталь с вложенным реестром. При изменении цены на вложенных записях необходимо их суммировать и подставлять в корневую запись. Каким образом это можно реализовать? Или где можно посмотреть что-нибудь схожее?
Заранее спасибо.
Нравится
Это можно сделать либо в скрипте датасета подчинённого реестра, либо триггером на уровне базы, на его же таблице.
Я повесил на кнопку ф-цию. И не могу понять по какой причине не сохраняется значение в датасет.
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 для вычисления суммы, а затем в датасете менять значение поля в одной конкретной записи.
Зверев Александр,
Подскажите в какой документации почитать, как сделать запрос в базу для решения подобной задачи?