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