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