public object ЗапросПоСкидкам(/*ДатаСкидок, МассивНоменклатуры, МассивХарактеристик, МассивКачество,
МассивПолучателей, КурсКратность, СуммаДокумента, ВидОплаты, ДисконтнаяКарта, УчетнаяПолитика*/)
{
if(true/*ЗначениеЗаполнено(ДисконтнаяКарта)
И УчетнаяПолитика.ИспользоватьСкидкиПоДисконтнойКарте
И УчетнаяПолитика.ИспользоватьНакопительныеСкидкиПоДисконтнымКартам
И УчетнаяПолитика.СпособИспользованияНакопительныхСкидок = Перечисления.СпособыИспользованияНакопительныхСкидок.СкидкиНакапливаютсяПоДисконтнойКарте*/)
{
//ЭтоНакопительнаяСкидка = Истина;
}
if(true/*ЭтоНакопительнаяСкидка*/)
{
//ПериодНакопления = ПолучитьПериодРасчетаНакопительныхСкидок(ДатаСкидок, УчетнаяПолитика);
/*Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РегПороги.ЗначениеПорога КАК ЗначениеПорога
|ИЗ
| (ВЫБРАТЬ
| ЕСТЬNULL(СУММА(РегПродажи.СуммаОборот), 0) КАК СуммаОборот
| ИЗ
| РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(&ДатаНач, &ДатаКон, ,
| ДисконтнаяКарта = &ДисконтнаяКарта) КАК РегПродажи
| ) КАК РегПродажи
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Пороги.НижняяГраница,
| Пороги.ЗначениеПорога
| ИЗ
| РегистрСведений.ПорогиНакопительныхСкидок.СрезПоследних(&ДатаКон) КАК Пороги
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| МАКСИМУМ(ПорогиМакс.Период) КАК Период
| ИЗ
| РегистрСведений.ПорогиНакопительныхСкидок.СрезПоследних(&ДатаКон) КАК ПорогиМакс
| ) КАК ПорогиМакс
| ПО
| Пороги.Период = ПорогиМакс.Период
|) КАК РегПороги
|ПО
| РегПороги.НижняяГраница <= РегПродажи.СуммаОборот
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| МАКСИМУМ(РегПороги.НижняяГраница) КАК НижняяГраница
| ИЗ
| (ВЫБРАТЬ
| ЕСТЬNULL(СУММА(РегПродажи.СуммаОборот), 0) КАК СуммаОборот
| ИЗ
| РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(&ДатаНач, &ДатаКон, ,
| ДисконтнаяКарта = &ДисконтнаяКарта) КАК РегПродажи
| ) КАК РегПродажи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Пороги.НижняяГраница
| ИЗ
| РегистрСведений.ПорогиНакопительныхСкидок.СрезПоследних(&ДатаКон) КАК Пороги
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| МАКСИМУМ(ПорогиМакс.Период) КАК Период
| ИЗ
| РегистрСведений.ПорогиНакопительныхСкидок.СрезПоследних(&ДатаКон) КАК ПорогиМакс
| ) КАК ПорогиМакс
| ПО
| Пороги.Период = ПорогиМакс.Период
| ) КАК РегПороги
| ПО
| РегПороги.НижняяГраница <= РегПродажи.СуммаОборот
| ) КАК РегПорогиМакс
|ПО
| РегПорогиМакс.НижняяГраница = РегПороги.НижняяГраница
|");*/
//Запрос.УстановитьПараметр("ДатаНач", ПериодНакопления.ДатаНач);
//Запрос.УстановитьПараметр("ДатаКон", ПериодНакопления.ДатаКон);
//Запрос.УстановитьПараметр("ДисконтнаяКарта", ДисконтнаяКарта);
//Выборка = Запрос.Выполнить().Выбрать();
if(true/*Выборка.Следующий()*/)
{
//ПроцентНакопительнойСкидки = Выборка.ЗначениеПорога;
}
}
//Запрос = Новый Запрос;
//Запрос.УстановитьПараметр("Дата" , ДатаСкидок);
//Запрос.УстановитьПараметр("МассивНоменклатуры" , МассивНоменклатуры);
//Запрос.УстановитьПараметр("МассивХарактеристик" , МассивХарактеристик);
//Запрос.УстановитьПараметр("МассивКачество" , МассивКачество);
//Запрос.УстановитьПараметр("МассивПолучателей" , МассивПолучателей);
//Запрос.УстановитьПараметр("ДеньНедели" , Перечисления.ДниНедели[ДеньНедели(ДатаСкидок) - 1]);
//Запрос.УстановитьПараметр("ТекущееВремя" , Дата(1, 1, 1, Час(ДатаСкидок), Минута(ДатаСкидок), Секунда(ДатаСкидок)));
//Запрос.УстановитьПараметр("КурсКратность" , КурсКратность);
//Запрос.УстановитьПараметр("Сумма" , СуммаДокумента);
//Запрос.УстановитьПараметр("ВидОплаты" , ВидОплаты);
//Запрос.УстановитьПараметр("ДисконтнаяКарта" , ДисконтнаяКарта);
//Запрос.УстановитьПараметр("ВидДисконтнойКарты" , ДисконтнаяКарта.ВидДисконтнойКарты);
if(true/*ЭтоНакопительнаяСкидка*/)
{
//Запрос.УстановитьПараметр("ПроцентНакопительнойСкидки" , ПроцентНакопительнойСкидки);
}
/*ТекстЗапроса = "
| ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СпрНоменклатура.Номенклатура КАК Номенклатура,
| СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СпрКачество.Ссылка КАК Качество,
| РегСкидкиНоменклатуры.Условие КАК НУсловие,
| РегСкидкиНоменклатуры.ЗначениеУсловия КАК НЗначениеУсловия,
| РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки КАК НОграничениеСкидкиНаценки,
| " + ?(ЭтоНакопительнаяСкидка, "ВЫБОР КОГДА РегСкидкиНоменклатуры.ПроцентСкидкиНаценки ЕСТЬ НЕ NULL
| И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте)
| ИЛИ РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт)) ТОГДА &ПроцентНакопительнойСкидки ИНАЧЕ РегСкидкиНоменклатуры.ПроцентСкидкиНаценки КОНЕЦ", "РегСкидкиНоменклатуры.ПроцентСкидкиНаценки") + " КАК НПроцентСкидкиНаценки,
| РегСкидкиПоЦеновымГруппам.Условие КАК ЦУсловие,
| РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЦЗначениеУсловия,
| РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки КАК ЦОграничениеСкидкиНаценки,
| " + ?(ЭтоНакопительнаяСкидка, "ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки ЕСТЬ НЕ NULL
| И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте)
| ИЛИ РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт)) ТОГДА &ПроцентНакопительнойСкидки ИНАЧЕ РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки КОНЕЦ", "РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки") + " КАК ЦПроцентСкидкиНаценки
|ИЗ
| (ВЫБРАТЬ
| СпрНоменклатура.Ссылка КАК Номенклатура,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
| ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ГДЕ
| СпрНоменклатура.Ссылка В (&МассивНоменклатуры)
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| СпрХарактеристики.Владелец,
| СпрХарактеристики.Ссылка
| ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
| ГДЕ
| СпрХарактеристики.Ссылка В (&МассивХарактеристик)
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка),
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| ) КАК СпрНоменклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.Качество КАК СпрКачество
| ПО
| СпрКачество.Ссылка В (&МассивКачество)
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| РегСкидкиНоменклатуры.Номенклатура,
| РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры,
| РегСкидкиНоменклатуры.Качество,
| РегСкидкиНоменклатуры.Условие,
| ВЫБОР КОГДА РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
| ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ИНАЧЕ
| РегСкидкиНоменклатуры.ЗначениеУсловия
| КОНЕЦ КАК ЗначениеУсловия,
| МАКСИМУМ(РегСкидкиНоменклатуры.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
| РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность КАК ОграничениеСкидкиНаценки
| ИЗ
| РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних(&Дата,
| Номенклатура В (&МассивНоменклатуры)
| И Качество В (&МассивКачество)
| И ПолучательСкидки В (&МассивПолучателей)) КАК РегСкидкиНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ВремяДействияСкидок КАК ВремяДействия
| ПО
| РегСкидкиНоменклатуры.Регистратор = ВремяДействия.Регистратор
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалют
| ПО
| РегСкидкиНоменклатуры.Валюта = КурсыВалют.Валюта
| ГДЕ
| (ВремяДействия.ДеньНедели ЕСТЬ NULL
| ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели
| И &ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)
| И РегСкидкиНоменклатуры.Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
//| И РегСкидкиНоменклатуры.ПроцентСкидкиНаценки <> 0
| И (РегСкидкиНоменклатуры.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ИЛИ КОНЕЦПЕРИОДА(РегСкидкиНоменклатуры.ДатаОкончания, ДЕНЬ) >= &Дата)
| И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) И ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность < &Сумма ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента))
| И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ВидОплаты ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты))
| И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ВидДисконтнойКарты ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт))
| И (РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте) И РегСкидкиНоменклатуры.ЗначениеУсловия = &ДисконтнаяКарта ИЛИ РегСкидкиНоменклатуры.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте))
| СГРУППИРОВАТЬ ПО
| РегСкидкиНоменклатуры.Номенклатура,
| РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры,
| РегСкидкиНоменклатуры.Качество,
| РегСкидкиНоменклатуры.Условие,
| ВЫБОР КОГДА РегСкидкиНоменклатуры.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
| ВЫРАЗИТЬ(РегСкидкиНоменклатуры.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ИНАЧЕ
| РегСкидкиНоменклатуры.ЗначениеУсловия
| КОНЕЦ,
| РегСкидкиНоменклатуры.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ) КАК РегСкидкиНоменклатуры
|ПО
| СпрНоменклатура.Номенклатура = РегСкидкиНоменклатуры.Номенклатура
| И (СпрНоменклатура.ХарактеристикаНоменклатуры = РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры ИЛИ РегСкидкиНоменклатуры.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
| И СпрКачество.Ссылка = РегСкидкиНоменклатуры.Качество
|ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа,
| РегСкидкиПоЦеновымГруппам.Качество,
| РегСкидкиПоЦеновымГруппам.Условие,
| ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
| ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ИНАЧЕ
| РегСкидкиПоЦеновымГруппам.ЗначениеУсловия
| КОНЕЦ КАК ЗначениеУсловия,
| МАКСИМУМ(РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
| РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность КАК ОграничениеСкидкиНаценки
| ИЗ
| РегистрСведений.СкидкиНаценкиПоЦеновымГруппам.СрезПоследних(&Дата, Качество В (&МассивКачество) И ПолучательСкидки В (&МассивПолучателей)) КАК РегСкидкиПоЦеновымГруппам
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ВремяДействияСкидок КАК ВремяДействия
| ПО
| РегСкидкиПоЦеновымГруппам.Регистратор = ВремяДействия.Регистратор
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалют
| ПО
| РегСкидкиПоЦеновымГруппам.Валюта = КурсыВалют.Валюта
| ГДЕ
| (ВремяДействия.ДеньНедели ЕСТЬ NULL
| ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели
| И &ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)
| И РегСкидкиПоЦеновымГруппам.Валюта <> ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
//| И РегСкидкиПоЦеновымГруппам.ПроцентСкидкиНаценки <> 0
| И(РегСкидкиПоЦеновымГруппам.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ИЛИ КОНЕЦПЕРИОДА(РегСкидкиПоЦеновымГруппам.ДатаОкончания, ДЕНЬ) >= &Дата)
| И(РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) И ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность < &Сумма ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента))
| И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ВидОплаты ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуОплаты))
| И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ВидДисконтнойКарты ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоВидуДисконтныхКарт))
| И (РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте) И РегСкидкиПоЦеновымГруппам.ЗначениеУсловия = &ДисконтнаяКарта ИЛИ РегСкидкиПоЦеновымГруппам.Условие <> ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоДисконтнойКарте))
| СГРУППИРОВАТЬ ПО
| РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа,
| РегСкидкиПоЦеновымГруппам.Качество,
| РегСкидкиПоЦеновымГруппам.Условие,
| ВЫБОР КОГДА РегСкидкиПоЦеновымГруппам.Условие = ЗНАЧЕНИЕ(Перечисление.УсловияСкидкиНаценки.ПоСуммеДокумента) ТОГДА
| ВЫРАЗИТЬ(РегСкидкиПоЦеновымГруппам.ЗначениеУсловия КАК ЧИСЛО) * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ИНАЧЕ
| РегСкидкиПоЦеновымГруппам.ЗначениеУсловия
| КОНЕЦ,
| РегСкидкиПоЦеновымГруппам.ОграничениеСкидкиНаценки * &КурсКратность * КурсыВалют.Курс / КурсыВалют.Кратность
| ) КАК РегСкидкиПоЦеновымГруппам
|ПО
| СпрНоменклатура.Номенклатура.ЦеноваяГруппа = РегСкидкиПоЦеновымГруппам.ЦеноваяГруппа
| И СпрКачество.Ссылка = РегСкидкиПоЦеновымГруппам.Качество
|ГДЕ
| РегСкидкиНоменклатуры.Условие ЕСТЬ НЕ NULL
| ИЛИ РегСкидкиПоЦеновымГруппам.Условие ЕСТЬ НЕ NULL
|";*/
//Запрос.Текст = ТекстЗапроса;
return null;
}