Почему не работают дополнительные виды цен в правилах ценообразования 1С:Розница 2.2 и как это исправить

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

В процессе настройки 1С:Розница 2.2 пользователи часто сталкиваются с ситуацией, когда в Правилах ценообразования для конкретного магазина указаны дополнительные виды цен, но при попытке продать товар в Рабочем месте кассира (РМК) программа выдает ошибку или просит ввести цену вручную. Разберем подробно, почему так происходит, как устроена логика системы и какие существуют корректные способы решения этой задачи.

Разберем причину: назначение вкладки «Дополнительные виды цен»

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

Эта настройка используется исключительно механизмом Распределенных Информационных Баз (РИБ). Когда система выполняет синхронизацию данных между центральным узлом и базой магазина, ей нужно понимать, какие записи регистра сведений ЦеныНоменклатуры следует «отправить» в этот магазин. По умолчанию передаются только те цены, которые указаны как основные. Если же в магазине используются маркетинговые акции (например, скидка «Спеццена» по определенному виду цен) или на ценниках должна печататься «старая» цена из другого вида цен, эти данные должны физически присутствовать в локальной базе магазина. Именно для этого мы указываем их в списке дополнительных — чтобы система «протолкнула» их через фильтры обмена.

Проанализируем иерархию поиска цены в РМК

Когда кассир сканирует штрихкод товара, система запускает поиск актуальной цены. Этот процесс строго регламентирован и не предполагает «перебора» всех доступных видов цен. Выясним порядок приоритетов:

  1. Уточнение по ценовым группам: Система в первую очередь заглядывает в таблицу уточнений в правиле ценообразования. Если товар принадлежит к ценовой группе, для которой явно указан вид цены, будет взят именно он.
  2. Основной вид цен: Если для товара или его группы нет индивидуального уточнения, программа берет вид цены, указанный в шапке правила ценообразования.
  3. Отсутствие цены: Если в основном виде цен для данного товара цена не установлена (отсутствует запись в регистре), система не переходит к поиску в дополнительных видах. Она считает, что цена не определена, и в зависимости от настроек либо блокирует продажу, либо требует ручного ввода.

Таким образом, «автоматического отката» к альтернативному виду цен в типовой конфигурации не существует.

Решение №1: Использование уточнения по ценовым группам

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

  1. Создадим или выберем существующую Ценовую группу (например, «Товары по общим ценам»).
  2. Присвоим эту группу всем товарам, которые должны продаваться по альтернативному виду цен.
  3. Откроем Правило ценообразования текущего магазина.
  4. В табличной части «Уточнения по ценовым группам» добавим нашу группу и в колонке Вид цены выберем тот самый вид цен другого магазина.
  5. Проверим наличие цен: убедимся, что по данному виду цен для этих товаров создан документ УстановкаЦенНоменклатуры.

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

Решение №2: Настройка расчетных видов цен

Если нам нужно, чтобы в Магазине №1 цены всегда соответствовали Магазину №2, но при этом для некоторых позиций были свои исключения, воспользуемся механизмом расчетных цен. Проанализируем этот алгоритм:

  1. Создадим новый вид цены: ВидЦеныМагазин1.
  2. В поле «Способ задания цены» выберем Рассчитывать по другим видам цен.
  3. В конструкторе формул укажем простую ссылку: [ЦенаМагазина2].
  4. В правиле ценообразования магазина укажем этот новый ВидЦеныМагазин1.

Важный нюанс: несмотря на то что формула задана, 1С требует физического наличия записи в регистре цен. Поэтому нам все равно придется создавать документ УстановкаЦенНоменклатуры. Однако при его заполнении цены будут рассчитаны автоматически на основании данных второго магазина. Это избавляет от двойного ввода данных, но требует дисциплины в проведении документов.

Решение №3: Механизм скидок типа «Спеццена»

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

Почему это может быть плохим решением:

Программное переопределение логики поиска цены

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

Мы можем переопределить процедуру получения цены, добавив в неё условие: «если полученная цена равна 0, выполнить повторный запрос к регистру сведений ЦеныНоменклатуры, но уже с фильтром по одному из дополнительных видов цен». Пример логики (схематично):


// В расширении для модуля поиска цены
&После("ПолучитьЦенуНоменклатуры")
Процедура Расш_ПолучитьЦенуНоменклатуры(Товар, Правило, Цена)
    Если Цена = 0 Тогда
        // Получаем список дополнительных видов цен из правила
        СписокДопЦен = Правило.ДополнительныеВидыЦен.ВыгрузитьКолонку("ВидЦены");
        Для Каждого ТекВидЦены Из СписокДопЦен Цикл
            НоваяЦена = ПолучитьЗначениеИзРегистра(Товар, ТекВидЦены);
            Если НоваяЦена > 0 Тогда
                Цена = НоваяЦена;
                Прервать;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

Однако помните, что такое решение может замедлить работу РМК при массовом подборе товаров, так как системе придется выполнять несколько запросов к базе данных вместо одного.

Проверка ассортимента: скрытая ловушка

Выясним еще одну причину, по которой цена может не подтягиваться. Если в настройках магазина включена опция Управлять ассортиментом, то одного лишь наличия цены недостаточно. Товар должен быть включен в документ ИзменениеАссортимента для данного магазина, и у него должен быть установлен статус «Разрешены закупки и продажи». Если товара нет в ассортименте магазина, система может блокировать получение его данных, включая цену, даже если она корректно установлена в регистре.

Таким образом, для стабильной работы ценообразования в 1С:Розница 2.2 мы рекомендуем придерживаться стандартной схемы: Ценовые группы + Уточнения в правилах. Это обеспечит прозрачность учета, корректную работу РИБ и отсутствие ошибок при продаже в РМК.

← На главную