Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Процедура ОбработкаПроведения(Отказ, Режим)
- Движения.ОстаткиМатериалов.Записывать = Истина;
- Движения.СтоимостьМатериалов.Записывать = Истина;
- Движения.Продажи.Записывать = Истина;
- //Создать менеджер временных таблиц
- МенеджерВТ = Новый МенеджерВременныхТаблиц;
- Запрос = Новый Запрос;
- //Укажем, какой менеджер временных использует этот запрос
- Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
- Запрос.Текст =
- "ВЫБРАТЬ
- | ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
- | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
- | СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
- | СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
- |ПОМЕСТИТЬ НоменклатураДокумента
- |ИЗ
- | Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
- |ГДЕ
- | ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
- |
- |СГРУППИРОВАТЬ ПО
- | ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
- | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры";
- Запрос.УстановитьПараметр("Ссылка", Ссылка);
- РезультатЗапроса = Запрос.Выполнить();
- Запрос2 = Новый Запрос;
- Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
- Запрос2.Текст = "ВЫБРАТЬ
- | НоменклатураДокумента.Номенклатура,
- | НоменклатураДокумента.ВидНоменклатуры,
- | НоменклатураДокумента.КоличествоВДокументе,
- | НоменклатураДокумента.СуммаВДокументе,
- | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
- | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество
- |ИЗ
- | НоменклатураДокумента КАК НоменклатураДокумента
- | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
- | ,
- | Материал В
- | (ВЫБРАТЬ
- | НоменклатураДокумента.Номенклатура
- | ИЗ
- | НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
- | ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал
- | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
- | ,
- | Материал В
- | (ВЫБРАТЬ
- | НоменклатураДокумента.Номенклатура
- | ИЗ
- | НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
- | ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал";
- //Записать пустые наборы записей, чтобы читать остатки без учёта данных в документе
- Движения.СтоимостьМатериалов.Записать();
- Движения.ОстаткиМатериалов.Записать();
- РезультатЗапроса = Запрос2.Выполнить();
- ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
- Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
- Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
- СтоимостьМатериала = 0;
- Иначе
- СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
- КонецЕсли;
- Если ВыборкаДетальныеЗаписи.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
- // регистр ОстаткиМатериалов Расход
- Движение = Движения.ОстаткиМатериалов.Добавить();
- Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
- Движение.Период = Дата;
- Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
- Движение.Склад = Склад;
- Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
- // регистр СтоимостьМатериалов Расход
- Движение = Движения.СтоимостьМатериалов.Добавить();
- Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
- Движение.Период = Дата;
- Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
- Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе * СтоимостьМатериала;
- КонецЕсли;
- // регистр Продажи
- Движение = Движения.Продажи.Добавить();
- Движение.Период = Дата;
- Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
- Движение.Клиент = Клиент;
- Движение.Мастер = Мастер;
- Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
- Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;
- Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе;
- КонецЦикла;
- КонецПроцедуры
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement