Как установить цену у сборки товаров в 1С: Розница

Программирование - Практика программирования

1
Небольшой рассказ о том, как установить цену номенклатуры у сборки товаров на основе цен тех товаров, из которых эта сборка скомплектована.

Пару недель назад при настройке 1С.Розница  встала следующая, достаточно простая и распространенная на мой взгляд, задача: необходимо было выполнить сборку товара из уже имеющихся на складе товаров с установленными ценами и для этой сборки установить цену на основе цен комплектующих; при этом вся комплектация проводится именно в Рознице. Замечу, что  в 1С. Розница я не разбираюсь от слова совсем, поэтому логичным решением было обратиться за помощью в Гугл. Гугл, в свою очередь, однозначного ответа не дал, что тоже было ожидаемо. Посему пришлось немного напрячь голову.

При этом оговорюсь, что опыт изложенный ниже, наверняка подходит именно новичкам, ну или тем, кто не осилил или не нашел информацию в справке, руководстве пользователя или иных методических документах, но цены установить хочет. Поэтому очень надеюсь, что кто-либо предложит в комментариях более правильные с методической точки зрения решения или же укажет на недостатки описанного в этой статье "велосипеда".

Условия задачи таковы:

  • Имеются закупленные товары (например, кольца кальмара и пакеты для их фасовки),
  • Указанные товары имеют закупочную цену, на основе которой им назначена розничная цена (с помощью вида цен "рассчитывать по другим видам цен")
  • Выполнена сборка товара (кольца кальмара расфасованы в пакеты по 50 грамм)

Необходимо рассчитать цену собранного товара (расфасованных по 50 грамм колец).

Для того, чтобы рассчитать цену сборки сначала создадим новый вид цен, например "Фасованные товары"

В созданном виде цен необходимо установить способ задания цены "Заполнять по данным ИБ" и указать произвольную схему компоновки данных.

Нетрудно догадаться, что теперь надо создать свою схему компоновки данных, а в ней реализовать запрос, который позволял бы рассчитать цену сборки. При создании очень полезно заглянуть в уже реализованные схемы компоновки, чтобы понять, каковы требования к входным и выходным данным для расчета.

Получается что-то в таком духе:

Здесь замечу, что в параметрах запроса добавлен "ВидЦен", поскольку в данном случае необходимо было производить расчет на основе розничных цен.

Текст запроса, производящего расчет цены сборки приведен ниже:

ВЫБРАТЬ
	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
	ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика,
	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ПОМЕСТИТЬ ВТЦ
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ), ВидЦены В (&ВидыЦен)) КАК ЦеныНоменклатурыСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	КомплектующиеНоменклатуры.Номенклатура КАК Номенклатура,
	КомплектующиеНоменклатуры.Характеристика КАК Характеристика,
	КомплектующиеНоменклатуры.Комплектующая КАК Комплектующая,
	КомплектующиеНоменклатуры.Количество КАК Количество,
	КомплектующиеНоменклатуры.ДоляСтоимости КАК ДоляСтоимости,
	КомплектующиеНоменклатуры.ХарактеристикаКомплектующей КАК ХарактеристикаКомплектующей
ПОМЕСТИТЬ ВТК
ИЗ
	РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВТК.Номенклатура КАК Номенклатура,
	ВТК.Характеристика КАК Характеристика,
	СУММА(ВТК.Количество * ВТЦ.Цена) КАК ЦенаИзКомплектующих
ПОМЕСТИТЬ ВТЦК
ИЗ
	ВТЦ КАК ВТЦ
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТК КАК ВТК
		ПО ВТЦ.Номенклатура = ВТК.Комплектующая
			И ВТЦ.Характеристика = ВТК.ХарактеристикаКомплектующей

СГРУППИРОВАТЬ ПО
	ВТК.Номенклатура,
	ВТК.Характеристика
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	1 КАК Коэффициент,
	ВТЦК.Номенклатура КАК Номенклатура,
	ВТЦК.Характеристика КАК Характеристика,
	ВТЦК.ЦенаИзКомплектующих * 1.1 КАК Цена,
	ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка) КАК Упаковка
ИЗ
	ВТЦК КАК ВТЦК

Пакет запросов совсем несложный. В первом запросе выбираются нужные виды цен, во втором выбираются комплектующие сборок (здесь замечу, что комплектующие хранятся в независимом регистре КомплектующиеНоменклатуры), в третьем запросе происходит соединение комплектующих и их цен и группировка по номенклатуре, таким образом, цена сборки становится равной сумме стоимости ее комплектующих. В четвертом запросе добавляются необходимые поля, и делается наценка за фасовку - каждый труд должен быть оплачен.

Дальше остается только сохранить созданный вид цен и выполнить с ним установку цен номенклатуры. Получится что-то в таком духе:

Может кому-то пригодится описанный опыт. Буду признателен за конструктивную обратную связь!

1

См. также

Комментарии
Сортировка: Древо
1. leks88 12 07.08.18 13:16 Сейчас в теме
Все бы неплохо, но в таком случае новый вид цен не получится применить например в розничных продажах (через РМК), потому что вид цены вяжется к магазину, и он может быть только один...это решение, с оговорками, можно применить например для оценки склада в ценах номенклатуры, или стоимости продаж по видам цен. Но практически использовать новую цену (продавать по ней) вряд ли получится.
Без доработок наверное будет проще (?) сделать обработчик табличных частей, для документа установки цен, там брать закупочные цены товаров, из которых комплектовалась номенклатура (по последнему приходу, если делать сразу).
Вообще тема меня тоже волнует, но толком думать времени не было. Неплохо если ещё кто нибудь идею подкинет (без изменения конфигурации было бы вообще чудесно)
2. oldcopy 64 08.08.18 18:20 Сейчас в теме
Не совсем верная логика. Давайте начнем с того, что с точки зрения розницы сборка товара и комплектующие - это разные позиции номенклатуры. Т.е. кольца кальмара вес и кольца кальмара 50 г - это две разные позиции номенклатуры и привязывать цену одной в прямую зависимость от другой неправильно.

Скажем, кальмар на развес подорожал, но при этом старый приход практически весь распродан, а фасованные еще остались и есть желание их быстрее распродать. По предложенной схеме их цена вырастет, что не всегда хорошо, особенно в продуктовом сегменте.

Мы сделали иначе, доработали документ Сборка товаров чтобы он при проведении формировал документ Установка цен в котором как раз формируется цена на полученный товар, также к Номенклатуре добавили связанный справочник - Спецификации, теперь при выборе товара в документ сборки табличная часть с комплектующими заполняется автоматически, также сразу учитывается необходимый уровень наценки за работу по комплектации.
Прикрепленные файлы:
3. altmf 23 09.08.18 15:44 Сейчас в теме
(2)Замечание интересное, но:
1. Разве описанный вами кейс не имеет место в любом случае, если не используется партионный учет? Кроме того, можно ведь до момента продажи всех уже расфасованных колец не проводить установку новых цен расфасованных колец.
2. Одним из ключевых требований был запрет на изменение конфигурации. Поэтому пришлось обходиться такими вот настройками
На маленьких объемах (мой случай) пока описанный вариант кажется вполне жизнеспособным. Хотя время покажет, может быть придется идти и в вашем направлении
Также замечу, что основным посылом данной статьи является скорее не то, как сделано в данном конкретном случае, а то, что в Интернете не было более-менее внятного описания использования произвольной схемы компоновки в видах цен. Понимаю, что вопрос достаточно тривиален, но вдруг кому-то сэкономит пару часов.
4. oldcopy 64 09.08.18 16:11 Сейчас в теме
(3) 1. Имеет. Партионный учет и продуктовая розница - вещи вообще трудносочетаемые. Я к тому, что привязывать цену одного товара к цене другого товара таким не совсем явным образом не есть хорошо. Поэтому мы и перешли на установку цен в момент сборки. В этом случае труднее сделать что-то не так.

2. Вариант со спецификациями хорош тем, что позволяет автоматически производить комплектацию с минимумом действий со стороны персонала, если подобного товара много, то выигрыш становится ощутимым. Хотя пример с кальмаром тут плох, весовой товар вообще не надо фасовать через сборку. Достаточно купить весы с печатью этикеток и просто расфасовать с их помощью. И продавать далее как весовой.

В продуктовой рознице вообще можно спокойно обходиться без сборки товаров до тех пор пока не появится какое-то собственное производство. Скажем мы берем мясо и сами маринуем на шашлык, несколько видов. Вот здесь уже без спецификаций не обойтись, в рамках конфигурации Розница, которая вообще ничего о производстве не знает, это довольно неплохой выход.
Оставьте свое сообщение