Почему не отображается цена набора в заказе покупателя в 1С:Комплексная автоматизация?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

В работе с программой 1С:Комплексная автоматизация 2.4 (или 2.5), а также в 1С:ERP и 1С:Управление торговлей 11, часто возникает ситуация, когда при добавлении набора в документ «Заказ клиента» цены на его составляющие не заполняются или не распределяются корректно. Это вызывает сложности у пользователей и требует вмешательства технического специалиста. Рассмотрим подробно, как устроен механизм ценообразования для наборов и что необходимо проверить для исправления ошибки.

Понятие набора в системе 1С

Для начала разберем, чем набор отличается от обычной номенклатуры. В системах на базе ERP-платформы набор — это не самостоятельная складская единица, а динамический перечень товаров, который собирается в момент продажи. В отличие от операции «Сборка товаров», набор не требует создания документа выпуска продукции на склад. Это виртуальная сущность, удобная для маркетинговых целей.

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

Шаг 1. Настройка вида номенклатуры

Первым делом проверим базовые настройки. Перейдем в справочник ВидыНоменклатуры и найдем вид, к которому относится ваш набор. На закладке Основное нас интересует раздел «Наборы». Выясним, какая выбрана схема формирования цены:

  1. Цена складывается из цен комплектующих: в этом случае система берет индивидуальные цены каждой позиции, входящей в состав, и суммирует их.
  2. Цена назначается за набор и распределяется по комплектующим: это именно тот вариант, который обсуждался в теме. Здесь вы устанавливаете единую цену на весь «пакет», а система должна «размазать» эту сумму по строкам заказа.

Если в настройке указано «Распределяется по комплектующим», важно понимать, какой именно алгоритм распределения выбран: Пропорционально ценам или Пропорционально долям стоимости.

Шаг 2. Проверка долей стоимости в карточке набора

Рассмотрим ситуацию, когда выбрано распределение по долям. Зайдем в карточку номенклатуры (набора) и перейдем в раздел Состав набора. Для каждого комплектующего должна быть заполнена колонка Доля стоимости.

Если доли равны нулю или не заполнены, система столкнется с математической неопределенностью: она «знает» общую цену набора, но не понимает, в какой пропорции ее разделить между товарами. В результате в документе ЗаказКлиента цены комплектующих останутся пустыми.

Совет: Если вы хотите, чтобы распределение шло автоматически на основе рыночных цен комплектующих, используйте кнопку «Заполнить доли по ценам» прямо в форме состава набора.

Шаг 3. Анализ документа «Установка цен номенклатуры»

Проанализируем, как именно введена цена. Часто ошибка кроется в деталях регистрации данных:

Шаг 4. Особенности вывода набора в табличную часть

Посмотрим на то, как настроен вывод набора в печатные формы и экранные формы. В виде номенклатуры есть настройка «Выводить в печатных формах»:

Если в заказе вы видите только комплектующие без самого заголовка набора, и цены у них пустые, это может означать, что система не нашла цену именно на Набор как на отдельную позицию в регистре ЦеныНоменклатуры. Проверьте через отчет «Цены номенклатуры» в карточке товара, установлена ли цена на сам набор.

Шаг 5. Техническая отладка (для программистов)

Если все настройки верны, но цена все равно не появляется, пора заглянуть «под капот». Процесс заполнения цен в заказах управляется программными модулями. В 1С:КА/ERP за это отвечают механизмы фонового или интерактивного пересчета цен.

Рассмотрим пример кода, который можно использовать в расширении или при отладке, чтобы проверить, возвращает ли система цену для конкретной позиции:


ПараметрыЗапроса = ЦенообразованиеКлиентСервер.ПараметрыЗапросаЦен();
ПараметрыЗапроса.Дата = Объект.Дата;
ПараметрыЗапроса.ВидЦены = Объект.ВидЦены;
ПараметрыЗапроса.Номенклатура = ТекущаяСтрока.Номенклатура;

Цены = ЦенообразованиеВызовСервера.ПолучитьЦеныНоменклатуры(ПараметрыЗапроса);
Если Цены.Количество() = 0 Тогда
    Сообщить("Цена не найдена в регистре для даты: " + Объект.Дата);
КонецЕсли;

Разберем, что происходит в момент добавления набора. При выборе позиции срабатывает обработчик НоменклатураПриИзменении. Для наборов вызывается специальная процедура распределения стоимости. Выясним причину через замер производительности в конфигураторе: обратите внимание на вызовы в модуле ОбработкаТабличнойЧастиТоварыКлиентСервер.

Шаг 6. Характеристики и серии

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

Итоги и рекомендации

Подводя итог, для корректного отображения цен наборов выполните следующие действия:

  1. Убедитесь, что Тип номенклатуры — «Товар», но включена опция Набор.
  2. Проверьте, что в Виде номенклатуры корректно указан способ назначения цены.
  3. В карточке набора в разделе Состав убедитесь, что указаны ненулевые Доли стоимости.
  4. Сверьте Вид цены в заказе и в документе установки цен.
  5. Проверьте Статус и Дату проведения документа Установка цен номенклатуры.

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

← На главную