Вопрос

Суммирование цены

Здравствуйте!

Подскажите пожалуйста, имеется деталь с вложенным реестром. При изменении цены на вложенных записях необходимо их суммировать и подставлять в корневую запись. Каким образом это можно реализовать? Или где можно посмотреть что-нибудь схожее?

Заранее спасибо.

Нравится

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

Это можно сделать либо в скрипте датасета подчинённого реестра, либо триггером на уровне базы, на его же таблице.

Я повесил на кнопку ф-цию. И не могу понять по какой причине не сохраняется значение в датасет.

 

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 для вычисления суммы, а затем в датасете менять значение поля в одной конкретной записи.

Зверев Александр,

Подскажите в какой документации почитать, как сделать запрос в базу для решения подобной задачи?

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