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