Пробовал
У меня получился такой код, но:
1) Цена не уменьшается (100-15/100),итог суммы не уменьшается.
2) Процент не находится, хотя выборка в конструкторе запроса проходит нормально.
Собственно,код:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаДокумента=Товары.Итог("Сумма")+Издержки.Итог("Сумма");
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТоварыНаСписание.Номенклатура,
| ТоварыНаСписание.Количество КАК КоличествоВДокументе,
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК ОстатокНаСкладе,
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток,
| ОстаткиНоменклатурыОстатки.Склад
| //ОстаткиНоменклатурыОстатки.СуммаОстаток КАК СуммаОстаток
|ИЗ
| (ВЫБРАТЬ
| РасходнаяТовары.Номенклатура КАК Номенклатура,
| СУММА(РасходнаяТовары.Количество) КАК Количество
| ИЗ
| Документ.Расходная.Товары КАК РасходнаяТовары
| ГДЕ
| РасходнаяТовары.Ссылка = &Ссылка
|
| СГРУППИРОВАТЬ ПО
| РасходнаяТовары.Номенклатура) КАК ТоварыНаСписание
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &МоментВремени,
| Номенклатура В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| РасходнаяТовары.Номенклатура
| ИЗ
| Документ.Расходная.Товары КАК РасходнаяТовары
| ГДЕ
| РасходнаяТовары.Ссылка = &Ссылка)) КАК ОстаткиНоменклатурыОстатки
| ПО ТоварыНаСписание.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура";
//Запрос.УстановитьПараметр("", );
//Результат = Запрос.Выполнить();
//Выборка = Результат.Выбрать();
//Пока Выборка.Следующий() Цикл
// КонецЦикла;
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ТекстСообщения="";
Пока Выборка.Следующий() Цикл
Если Выборка.КоличествоВДокументе >Выборка.ОстатокНаСкладе Тогда
Отказ=Истина;
ТекстСообщения=ТекстСообщения+"На складе не достаточно товара "+Выборка.Номенклатура
+ ", в наличии "+ Выборка.ОстатокНаСкладе+" шт. из затребованных "
+ Выборка.КоличествоВДокументе +" шт."+Символы.ВК;
КонецЕсли;
КонецЦикла;
Если Отказ Тогда
Сообщить(ТекстСообщения);
Возврат;
КонецЕсли;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Товар=Новый Структура("Номенклатура",ТекСтрокаТовары.Номенклатура);
КоличествоНаСписание=ТекСтрокаТовары.Количество;
Пока КоличествоНаСписание>0 Цикл
Выборка.НайтиСледующий(Товар);
Если Выборка.ОстатокНаСкладе>=КоличествоНаСписание Тогда
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.Контрагент = Контрагент;
Движение.Количество = КоличествоНаСписание;
//Процент = Выборка.Процент;
Движение.Сумма = ТекСтрокаТовары.Цена*((100-15)/100)*КоличествоНаСписание;
// Цена = ЦенаЧист*(100-ПроцСкидки)/100
//ОСтатки
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.Количество = КоличествоНаСписание;
Движение.Сумма = КоличествоНаСписание*Выборка.СуммаОстаток/Выборка.ОстатокНаСкладе;
КоличествоНаСписание=0;
Иначе
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.Контрагент = Контрагент;
Движение.Количество = Выборка.КоличествоПартии;
Движение.Сумма = ТекСтрокаТовары.Цена*КоличествоНаСписание;
// регистр ОстаткиНоменклатуры
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.Склад =Склад;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Сумма =ТекСтрокаТовары.Сумма ;
//КоличествоНаСписание=КоличествоНаСписание-Выборка.КоличествоПартии;
КонецЕсли;
КонецЦикла;
Выборка.Сбросить();
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
//Для Каждого ТекСтрокаТовары Из Товары Цикл
// регистр ОстаткиНоменклатуры Приход
//Движение = Движения.ОстаткиНоменклатуры.Добавить();
// Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
// Движение.Период = Дата;
// Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
// Движение.Склад = Склад;
// Движение.Количество = ТекСтрокаТовары.Количество;
// Движение.Сумма = ТекСтрокаТовары.Сумма;
//КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
///
//Запрос = Новый Запрос;
// Запрос.Текст = "ВЫБРАТЬ
Запрос.Текст = " ВЫБРАТЬ
|ВЫБОР
| КОГДА СУММА(ПродажиОбороты.СуммаОборот) > 1000
| И СУММА(ПродажиОбороты.СуммаОборот) <= 3000
| ТОГДА 2
| КОГДА СУММА(ПродажиОбороты.СуммаОборот) > 3000
| И СУММА(ПродажиОбороты.СуммаОборот) <= 5000
| ТОГДА 5
| КОГДА СУММА(ПродажиОбороты.СуммаОборот) > 5000
| И СУММА(ПродажиОбороты.СуммаОборот) <= 10000
| ТОГДА 10
| КОГДА СУММА(ПродажиОбороты.СуммаОборот) > 10000
| ТОГДА 15
| ИНАЧЕ 0
| КОНЕЦ КАК Процент
//|ПродажиОбороты.Контрагент
|ИЗ
|РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, , Контрагент = &Контрагент) КАК ПродажиОбороты";
// |СГРУППИРОВАТЬ ПО
// |ПродажиОбороты.Контрагент";
Запрос.УстановитьПараметр("НачПериода", НачалоМесяца(ДобавитьМесяц(Дата, -1))); // Дата - дата документа
Запрос.УстановитьПараметр("КонПериода", КонецМесяца(ДобавитьМесяц(Дата, -1)));
Запрос.УстановитьПараметр("Контрагент", Контрагент);
// Запрос.УстановитьПараметр("Процент", Процент);
//Процент=2;
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
/// Выборка = Результат.Выбрать();
КонецПроцедуры
Заранее спасибо!