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