&НаСервере
Процедура РассчитатьСебестоимостьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СебестоимостьОбороты.Регистратор КАК Регистратор
// | ,СебестоимостьОбороты.КоличествоРасход КАК КоличествоРасход
|ИЗ
| РегистрНакопления.Себестоимость.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, ) КАК СебестоимостьОбороты
|ГДЕ
| СебестоимостьОбороты.СтоимостьРасход > 0
|
|УПОРЯДОЧИТЬ ПО
| СебестоимостьОбороты.Регистратор.Дата";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
ЗапросОстатки = Новый Запрос;
ЗапросОстатки.Текст =
"ВЫБРАТЬ
| СебестоимостьОстатки.КоличествоОстаток КАК КоличествоОстаток,
| СебестоимостьОстатки.СтоимостьОстаток КАК СтоимостьОстаток,
| СебестоимостьОстатки.Материал КАК Материал
|ИЗ
| РегистрНакопления.Себестоимость.Остатки(&ДатаНачала, ) КАК СебестоимостьОстатки";
ЗапросОстатки.УстановитьПараметр("ДатаНачала", ДатаНачала);
РезультатЗапросаОстатки = ЗапросОстатки.Выполнить();
ВыборкаОстатки = РезультатЗапросаОстатки.Выбрать();
НаборЗаписей = РегистрыНакопления.Себестоимость.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
НаборЗаписей.Очистить();
СсылкаНаОказаниеУслуги = Выборка.Регистратор;
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаОказаниеУслуги);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
Материал = Запись.Материал;
Количество = Запись.Количество;
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Материал", Материал);
Если ВыборкаОстатки.НайтиСледующий(СтруктураПоиска) Тогда
Если ВыборкаОстатки.Следующий() Тогда
Запись.Стоимость = ВыборкаОстатки.СтоимостьОстаток / ВыборкаОстатки.КоличествоОстаток;
КонецЕсли;
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать();
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСебестоимость(Команда)
РассчитатьСебестоимостьНаСервере();
КонецПроцедуры