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