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