В работе с программой 1С:Комплексная автоматизация 2.4 (или 2.5), а также в 1С:ERP и 1С:Управление торговлей 11, часто возникает ситуация, когда при добавлении набора в документ «Заказ клиента» цены на его составляющие не заполняются или не распределяются корректно. Это вызывает сложности у пользователей и требует вмешательства технического специалиста. Рассмотрим подробно, как устроен механизм ценообразования для наборов и что необходимо проверить для исправления ошибки.
Для начала разберем, чем набор отличается от обычной номенклатуры. В системах на базе ERP-платформы набор — это не самостоятельная складская единица, а динамический перечень товаров, который собирается в момент продажи. В отличие от операции «Сборка товаров», набор не требует создания документа выпуска продукции на склад. Это виртуальная сущность, удобная для маркетинговых целей.
Проанализируем основные причины, по которым цена может не выводиться в заказе, и разберем шаги по их устранению.
Первым делом проверим базовые настройки. Перейдем в справочник ВидыНоменклатуры и найдем вид, к которому относится ваш набор. На закладке Основное нас интересует раздел «Наборы». Выясним, какая выбрана схема формирования цены:
Если в настройке указано «Распределяется по комплектующим», важно понимать, какой именно алгоритм распределения выбран: Пропорционально ценам или Пропорционально долям стоимости.
Рассмотрим ситуацию, когда выбрано распределение по долям. Зайдем в карточку номенклатуры (набора) и перейдем в раздел Состав набора. Для каждого комплектующего должна быть заполнена колонка Доля стоимости.
Если доли равны нулю или не заполнены, система столкнется с математической неопределенностью: она «знает» общую цену набора, но не понимает, в какой пропорции ее разделить между товарами. В результате в документе ЗаказКлиента цены комплектующих останутся пустыми.
Совет: Если вы хотите, чтобы распределение шло автоматически на основе рыночных цен комплектующих, используйте кнопку «Заполнить доли по ценам» прямо в форме состава набора.
Проанализируем, как именно введена цена. Часто ошибка кроется в деталях регистрации данных:
УстановкаЦенНоменклатуры был проведен датой, которая строго меньше (раньше), чем дата и время создания Заказа клиента. Если цена установлена в 12:00:00, а заказ создан в 09:00:00 того же дня, цена не подтянется.ВидЦены, по которому зарегистрирована стоимость набора.Посмотрим на то, как настроен вывод набора в печатные формы и экранные формы. В виде номенклатуры есть настройка «Выводить в печатных формах»:
Если в заказе вы видите только комплектующие без самого заголовка набора, и цены у них пустые, это может означать, что система не нашла цену именно на Набор как на отдельную позицию в регистре ЦеныНоменклатуры. Проверьте через отчет «Цены номенклатуры» в карточке товара, установлена ли цена на сам набор.
Если все настройки верны, но цена все равно не появляется, пора заглянуть «под капот». Процесс заполнения цен в заказах управляется программными модулями. В 1С:КА/ERP за это отвечают механизмы фонового или интерактивного пересчета цен.
Рассмотрим пример кода, который можно использовать в расширении или при отладке, чтобы проверить, возвращает ли система цену для конкретной позиции:
ПараметрыЗапроса = ЦенообразованиеКлиентСервер.ПараметрыЗапросаЦен();
ПараметрыЗапроса.Дата = Объект.Дата;
ПараметрыЗапроса.ВидЦены = Объект.ВидЦены;
ПараметрыЗапроса.Номенклатура = ТекущаяСтрока.Номенклатура;
Цены = ЦенообразованиеВызовСервера.ПолучитьЦеныНоменклатуры(ПараметрыЗапроса);
Если Цены.Количество() = 0 Тогда
Сообщить("Цена не найдена в регистре для даты: " + Объект.Дата);
КонецЕсли;
Разберем, что происходит в момент добавления набора. При выборе позиции срабатывает обработчик НоменклатураПриИзменении. Для наборов вызывается специальная процедура распределения стоимости. Выясним причину через замер производительности в конфигураторе: обратите внимание на вызовы в модуле ОбработкаТабличнойЧастиТоварыКлиентСервер.
Проанализируем ситуацию с характеристиками. Если набор или его комплектующие имеют характеристики, цена должна быть установлена строго в соответствии с ними. Если цена задана для «Номенклатуры в целом», а в заказе выбрана конкретная характеристика, то в зависимости от настроек ВидаЦены (флаг «Цена по характеристикам»), система может выдать пустой результат.
Подводя итог, для корректного отображения цен наборов выполните следующие действия:
Установка цен номенклатуры.Если ручные настройки не помогают, попробуйте перевыбрать количество в строке заказа — в некоторых релизах это инициирует принудительный пересчет табличной части. Также стоит проверить, не влияют ли на результат автоматические скидки, которые могут срабатывать после установки базовой цены и обнулять ее в определенных условиях.