V82.ОбщиеМодули.ОбработкаТабличныхЧастей.ЗапросПоСкидкам C# (CSharp) Method

ЗапросПоСкидкам() public method

public ЗапросПоСкидкам ( ) : object
return object
        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;
        }
ОбработкаТабличныхЧастей