В Управление торговлей 11.5, Комплексная автоматизация 2.5 и ERP Управление предприятием 2.5 появилось новое ценообразование. Переход на новое ценообразование рассмотрен в статье Переход на ценообразование версии 11.5 в УТ11, версии 2.5 в КА2, ERP2.
Теперь цены могут храниться как в разрезе только номенклатуры (даже для номенклатуры с характеристиками), в разрезе характеристик и их реквизитов, серий и их реквизитов, упаковки. Для хранения цен добавлен новый регистр сведений ЦеныНоменклатуры25.
Теперь рассмотрим как получать цены. Во-первых, теперь нужно анализировать какое используется ценообразование. Организация может переходить на новое ценообразование но всегда имеет возможность вернуться на старое. Это нужно учитывать при получении цен. Рассмотрим запрос получения цен для номенклатуры без характеристик:
Функция ЦенаНоменклатуры(Номенклатура) Запрос = Новый Запрос( "ВЫБРАТЬ | ЦеныНоменклатуры25СрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры25.СрезПоследних( | , | ВидЦены = &ВидЦены | И Номенклатура = &Номенклатура) КАК ЦеныНоменклатуры25СрезПоследних"); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Запрос.УстановитьПараметр("ВидЦены", Справочники.ВидыЦен.НайтиПоНаименованию("Розничная")); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Цена = Выборка.Цена; КонецЕсли; Возврат Цена; КонецФункции
Пример получения запросом цены для номенклатуры с характеристикой:
Функция ЦенаНоменклатуры(Номенклатура, Характеристика) Запрос = Новый Запрос( "ВЫБРАТЬ | ЦеныНоменклатуры25СрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры25.СрезПоследних( | , | ВидЦены = &ВидЦены | И Номенклатура = &Номенклатура | И ХарактеристикаЦО = &ХарактеристикаЦО) КАК ЦеныНоменклатуры25СрезПоследних"); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); ХарактеристикаЦО = ?(Номенклатура.ВидНоменклатуры.НастройкиКлючаЦенПоХарактеристике = Перечисления.ВариантОтбораДляКлючаЦен.НеИспользовать , Справочники.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка(), Характеристика.ХарактеристикаНоменклатурыДляЦенообразования); Запрос.УстановитьПараметр("ХарактеристикаЦО", ХарактеристикаЦО); Запрос.УстановитьПараметр("ВидЦены", Справочники.ВидыЦен.НайтиПоНаименованию("Розничная")); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Цена = Выборка.Цена; КонецЕсли; Возврат Цена; КонецФункции
Пример получения цен для товаров из заказа. Учет цен возможен как в разрезе номенклатуры, так и в разрезе характеристик:
Функция НоменклатураСЦенами(Заказ) Запрос = Новый Запрос( "ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Характеристика КАК Характеристика, | ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Цена |ИЗ | Документ.ЗаказКлиента.Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатуры | ПО (ЦеныНоменклатуры.Номенклатура = Товары.Номенклатура) | И (ЦеныНоменклатуры.ХарактеристикаЦО = ВЫБОР | КОГДА Товары.Номенклатура.ВидНоменклатуры.НастройкиКлючаЦенПоХарактеристике = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать) | ТОГДА ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка) | ИНАЧЕ Товары.Характеристика.ХарактеристикаНоменклатурыДляЦенообразования | КОНЕЦ) |ГДЕ | Товары.Ссылка = &Заказ"); Запрос.УстановитьПараметр("Заказ", Заказ); Запрос.УстановитьПараметр("ВидЦены", Справочники.ВидыЦен.НайтиПоНаименованию("Розничная")); Возврат Запрос.Выполнить().Выгрузить(); КонецФункции
Огромнейшее спасибо! Ваша статья сэкономила мне кучу времени!!!
Кстати, на данный момент это единственный результат в гугле по запросу «НастройкиКлючаЦенПоХарактеристике».
Сергей, спасибо за отзыв на материал в статье!
огромное спасибо за статью