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

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

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

Анализируем причину поведения системы

Для начала проанализируем архитектуру решения. В типовой конфигурации «Розница» механизм ценообразования реализован через регистр сведений Цены номенклатуры. Ключевая особенность этого регистра заключается в том, что он не имеет измерений Организация или Склад. Цены в системе хранятся исключительно в разрезе номенклатуры (и её характеристик) и Видов цен.

Это означает, что документ Установка цен номенклатуры по своей сути является глобальным для всей информационной базы. Он не предназначен для локального изменения цен в конкретной торговой точке — он обновляет общий прайс-лист. Если в базе создано несколько видов цен (например, отдельно для каждого магазина), система воспринимает их как части единой ценовой политики.

Почему подтягиваются зависимые цены? Рассмотрим ситуацию: у вас есть «Цена закупки» и две розничные цены («Магазин А» и «Магазин Б»), которые рассчитываются по формуле на основании закупочной. При создании документа на основании поступления алгоритм автозаполнения видит, что вы меняете базовую цену. Чтобы обеспечить актуальность данных во всей цепочке, система автоматически добавляет в документ все зависимые виды цен, чтобы пересчитать их значения сразу. Это заложено разработчиками для исключения ситуаций, когда закупочная цена выросла, а розница в одном из магазинов осталась старой.

Способ 1. Ручная настройка состава видов цен

Самый простой и не требующий программирования метод — это использование стандартных настроек формы документа. Рассмотрим подробнее, как это сделать:

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

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

Способ 2. Управление флагом автовычисления

Если мы не хотим, чтобы зависимые цены попадали в документ автоматически, проанализируем настройки самих видов цен:

  1. Перейдем в справочник Виды цен.
  2. Откроем карточку вида цены (например, «Цена магазина Б»).
  3. Найдем признак Вычислять автоматически.

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

Способ 3. Двухэтапная схема с применением цен

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

  1. В настройках параметров системы (раздел Маркетинг) включим опцию Использовать применение цен.
  2. Теперь процесс делится на два шага:
    • Создается глобальный документ Установка цен номенклатуры (в нем могут быть все магазины).
    • Для каждой торговой точки создается отдельный документ Применение цен номенклатуры.

Этот подход позволяет менеджеру Магазина А «активировать» только те цены, которые касаются его подразделения, игнорируя изменения по Магазину Б.

Способ 4. Ограничение прав доступа (RLS)

Проанализируем ситуацию с точки зрения безопасности. Если в компании за работу с ценами разных магазинов отвечают разные сотрудники, можно использовать механизм RLS (Record Level Security). Настроив доступ к объектам по группам доступа, можно добиться того, что менеджер Магазина А просто не будет видеть вид цены «Цена магазина Б». В этом случае при создании установки цен на основании поступления лишние колонки не отобразятся, так как у пользователя не будет прав на просмотр и редактирование этих данных.

Способ 5. Использование расширений для автоматизации выбора

Для тех, кто хочет полностью автоматизировать процесс и исключить «человеческий фактор», рекомендуется использовать механизм расширений. Поскольку в Рознице 2.2 режим совместимости позволяет использовать современные возможности платформы, мы можем программно перехватить процедуру заполнения документа.

Разберем логику, которую можно прописать в расширении:

  1. При создании на основании система получает объект-основание (документ Поступление товаров).
  2. Из документа-основания мы можем программно получить Склад или Магазин.
  3. В расширении формы документа Установка цен номенклатуры в процедуре ПриСозданииНаСервере или через обработку заполнения можно оставить в списке ВыбранныеВидыЦен только те, которые привязаны к данному складу (согласно вашему внутреннему алгоритму соответствия).

Пример программного подхода (схематично):


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

Резюме: Автоматическое появление всех видов цен в документе — это не ошибка, а особенность архитектуры «Розницы», направленная на поддержание целостности данных. Для решения проблемы «лишних колонок» наиболее эффективным стандартным способом является настройка состава видов цен в самом документе или использование механизма Применения цен. Для полной автоматизации под конкретную структуру компании оптимальным решением станет небольшая доработка через расширение.

← На главную