Ценообразование
Материал из Окнософт
Содержание
Цены в строках заказа
Плановая себестоимость, цена для клиента и цена внутренней продажи (последняя имеет смысл только при Холдинговой либо Дилерской схеме работы)
пересчитываются при изменении любых реквизитов строки табличной части Продукция документа Расчет по следующему алгоритму:
Общие вычисления
- По реквизитам шапки документа + свойствам продукции текущей строки ищется запись регистра Маржинальные коэффициеты
- Из найденной записи получаем Типы цен, по которым будут рассчитываться Плановая себестоимость, цена для клиента и цена внутренней продажи
Плановая себестоимость
- Для каждой строки спецификации продукции
- Получаем цену из регистра Цены номенклатуры
- Сначала ищется цена по полному ключу [Номенклатура + Характеристика]
- Если цена по полному ключу не задана, для цветных материалов, ищется запись цены с учетом Цвето-ценовой группы
- Если цена для цветовой характеристики не задана, используется цена по пустой характеристике
- Если в Расширении номенклатуры или в Маржинальных коэффициетах заданы корректирующие формулы, выполняем их
- Формула в Расширении номенклатуры действует только для текущего материала и вытесняет формулу из регистра Маржинальные коэффициеты
- Получаем цену из регистра Цены номенклатуры
- Если продукция не имеет спецификации или сумма плановой себестоимости по строкам спецификации = 0, предпринимается попытка получить цену плановой себестоимости по Номенклатуре продукции с учетом привязанных к ней Формул
Цена продажи для клиента
- Если в текущей записи Маржинальных коэффициетов указан Тип цен продажи, делается попытка рассчитать стоимость продажи без учета плановой себестоимости - по Типу цен и Формуле
- Если Тип цен продажи не указан или цена продукции не найдена в регистре, она определяется, как [Плановая себестоимость] * [Маржинальный коэффициент] (это самый распространенный вариант настроек)
- Если для номенклатуры продукции в Расширении номенклатуры или в Маржинальных коэффициетах задана корректирующая формула, выполняется её код
- Если в учетной политике включено использование Автоматических скидок по Условиям продаж или Дисконтным картам, выполняется код типовой конфигурации, корректирующий цену продажи по заложенному в типовую конфигурацию алгоритму
Цена внутренней продажи
- Рассчитывается аналогично цене продажи для клиента, только Типы цен и Формула берутся из других полей и не используется подсистема автоматических скидок типовой конфигурации
Примеры фрагментов кода
Запрос для сценария цены продукции по прайсу с привязкой к размерам и цвету
Если ТипЦен = Парам["ТипыЦен"].ТипЦенПрайс Тогда
Запрос = Новый Запрос("ВЫБРАТЬ ЦеныСрезПоследних.Цена
|ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| &Период, ТипЦен = &ТипЦен И Номенклатура = &Номенклатура) КАК ЦеныСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
| ХарактеристикаЦены.Ссылка КАК Ссылка
| ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикаЦены
| ГДЕ
| ХарактеристикаЦены.Владелец = &Номенклатура
| И ХарактеристикаЦены.Расчет = ЗНАЧЕНИЕ(Документ.итРасчет.ПустаяСсылка)
| И ХарактеристикаЦены.X = &Длина
| И ХарактеристикаЦены.Y = &Высота
| И ХарактеристикаЦены.Цвет = &Цвет) КАК ХарактеристикаЦены
| ПО ЦеныСрезПоследних.ХарактеристикаНоменклатуры = ХарактеристикаЦены.Ссылка");
Запрос.УстановитьПараметр("Период", Парам["Дата"]);
Запрос.УстановитьПараметр("ТипЦен", ТипЦен);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
ТекСтр = Парам["тзПродукция"][Парам["НомерСтроки"]-1];
Запрос.УстановитьПараметр("Длина", Парам["Длина"]);
Запрос.УстановитьПараметр("Высота", Парам["Высота"]);
Запрос.УстановитьПараметр("Цвет", Парам["Цвет"]);
Рез = Запрос.Выполнить().Выбрать();
Если Рез.Следующий() Тогда
Стр.Цена = Рез.Цена;
Иначе
Стр.Цена = 0;
КонецЕсли;
КонецЕсли;