Если МС. МетодСписания = Перечисления. УчетнаяПолитика. ФИФО Тогда
Запрос. Текст = СтрЗаменить(Запрос. Текст,"ОстаткиНоменклатурыОстатки. Партия. МоментВремени УБЫВ","ОстаткиНоменклатурыОстатки. Партия. МоментВремени ВОЗР");
КонецЕсли;
Запрос. УстановитьПараметр("МоментВремени", МоментВремени());
Запрос. УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос. Выполнить();
ВыборкаНоменклатура = РезультатЗапроса. Выбрать(ОбходРезультатаЗапроса. ПоГруппировкам);
Пока ВыборкаНоменклатура. Следующий() Цикл
Если ВыборкаНоменклатура. Количество > ВыборкаНоменклатура. КоличествоОстаток Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение. Текст = "Не хватает номенклатуры " + ВыборкаНоменклатура. Номенклатура + " в количестве " + (ВыборкаНоменклатура. Количество - ВыборкаНоменклатура. КоличествоОстаток);
Сообщение. Сообщить();
Отказ = Истина;
Продолжить;
КонецЕсли;
КСПисанию = ВыборкаНоменклатура. Количество;
ВыборкаДетальныеЗаписи = ВыборкаНоменклатура. Выбрать();
Пока ВыборкаДетальныеЗаписи. Следующий() Цикл
Если КСПисанию > 0 Тогда
Если КСПисанию >= ВыборкаДетальныеЗаписи. КоличествоОстаток Тогда
Движение = Движения. ОстаткиНоменклатуры. Добавить();
Движение. ВидДвижения = ВидДвиженияНакопления. Расход;
Движение. Период = Дата;
Движение. Номенклатура = ВыборкаДетальныеЗаписи. Номенклатура;
Движение. Партия = ВыборкаДетальныеЗаписи. Партия;
Движение. Количество = ВыборкаДетальныеЗаписи. КоличествоОстаток;
Движение. Сумма = ВыборкаДетальныеЗаписи. СуммаОстаток;
Движение. СуммаВДолларах = ВыборкаДетальныеЗаписи. СуммаВДолларахОстаток;
КСПисанию = КСПисанию - ВыборкаДетальныеЗаписи. КоличествоОстаток;
Иначе
Движение = Движения. ОстаткиНоменклатуры. Добавить();
Движение. ВидДвижения = ВидДвиженияНакопления. Расход;
Движение. Период = Дата;
Движение. Номенклатура = ВыборкаДетальныеЗаписи. Номенклатура;
Движение. Партия = ВыборкаДетальныеЗаписи. Партия;
Движение. Количество = КСПисанию;
Движение. Сумма = Окр(?(ВыборкаДетальныеЗаписи. КоличествоОстаток = 0, 0, ВыборкаДетальныеЗаписи. СуммаОстаток / ВыборкаДетальныеЗаписи. КоличествоОстаток*КСПисанию),2);
Движение. СуммаВДолларах = Окр(?(ВыборкаДетальныеЗаписи. КоличествоОстаток = 0, 0, ВыборкаДетальныеЗаписи. СуммаВДолларахОстаток / ВыборкаДетальныеЗаписи. КоличествоОстаток*КСПисанию),2);
КСПисанию = 0;
КонецЕсли;
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
// регистр Продажи
Движения. Продажи. Очистить();
Движения. Продажи. Записать();
Движения. Продажи. Записывать = Истина;
Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
Движение = Движения. Продажи. Добавить();
Движение. Период = Дата;
Движение. Номенклатура = ТекСтрокаСписокНоменклатуры. Номенклатура;
Движение. Количество = ТекСтрокаСписокНоменклатуры. Количество;
Движение. Сумма = ТекСтрокаСписокНоменклатуры. Сумма;
Движение. СуммаВДолларах = Окр(?(КурсДоллара = 0, 0, ТекСтрокаСписокНоменклатуры. Сумма/КурсДоллара),2);
КонецЦикла;
КонецПроцедуры
Отчет: «Продажи»
ВЫБРАТЬ
ПродажиОбороты. Номенклатура,
ПродажиОбороты. КоличествоОборот КАК Количество,
ПродажиОбороты. СуммаОборот КАК СуммаПродажи,
ПродажиОбороты. СуммаВДолларахОборот КАК СуммаПродажиВДолларах,
ЕСТЬNULL(ОстаткиНоменклатурыОбороты. СуммаРасход, 0) КАК СуммаСебест,
ЕСТЬNULL(ОстаткиНоменклатурыОбороты. СуммаВДолларахРасход, 0) КАК СуммаСебестВДолларах
ПОМЕСТИТЬ ВТ
ИЗ
РегистрНакопления. Продажи. Обороты(&НачалоПериода, &КонецПериода, , ) КАК ПродажиОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления. ОстаткиНоменклатуры. Обороты(&НачалоПериода, &КонецПериода, , ) КАК ОстаткиНоменклатурыОбороты
ПО ПродажиОбороты. Номенклатура = ОстаткиНоменклатурыОбороты. Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ. Номенклатура,
ВТ. Количество,
ВТ. СуммаПродажи,
ВТ. СуммаПродажиВДолларах,
ВТ. СуммаСебест,
ВТ. СуммаСебестВДолларах,
ВТ. СуммаПродажи - ВТ. СуммаСебест КАК СуммаПрибыль,
ВТ. СуммаПродажиВДолларах - ВТ. СуммаСебестВДолларах КАК СуммаПрибыльВДолларах
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 |


