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