Как настроить автоматическое прекращение действия временных цен в 1С:Управление торговлей 11.5

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

В практике торговых предприятий часто возникает ситуация, когда на определенный товар необходимо установить специальную цену на короткий промежуток времени (акцию), после чего цена должна автоматически вернуться к исходному значению. В типовой конфигурации 1С:Управление торговлей 11.5 (а также в ERP и Комплексной автоматизации) механизм цен реализован на базе периодического регистра сведений ЦеныНоменклатуры. Особенность этого регистра заключается в том, что запись в нем не имеет «даты окончания» — цена действует с момента установки и до тех пор, пока не будет введена новая запись.

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

Способ 1. Методически верный: Ввод двух документов установки цен

Самый простой и надежный способ, предусмотренный архитектурой 1С, — это создание двух документов Установка цен номенклатуры. Рассмотрим этот процесс по шагам:

  1. Создаем первый документ Установка цен номенклатуры с датой начала акции (например, 10.06). В нем указываем акционную цену (700 руб.).
  2. Сразу после проведения первого документа создаем его копию или новый документ, но датой начала действия указываем день, следующий за днем окончания акции (например, 21.06).
  3. В этом «закрывающем» документе устанавливаем цену, которая должна действовать после акции (возвращаем 800 руб. или 1000 руб.).

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

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

Способ 2. Использование скидок и маркетинговых мероприятий

Если цель — не изменить саму базовую цену в прайс-листе, а временно снизить ее для покупателей, правильнее использовать механизм Скидок (наценок). Скидки в 1С:УТ имеют встроенный механизм периода действия.

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

  1. Перейдем в раздел CRM и маркетинг — Маркетинговые мероприятия. Создадим новое мероприятие, например, «Летняя распродажа коньяка», и укажем жесткие даты начала и окончания.
  2. Создадим автоматическую скидку в разделе CRM и маркетинг — Скидки (наценки).
  3. В условии применения скидки укажем наше маркетинговое мероприятие.
  4. Установим тип скидки, например, «Скидка по виду цен» или просто процентную скидку.

Как только текущая дата выйдет за рамки периода маркетингового мероприятия, скидка перестанет рассчитываться в документах Заказ клиента и Реализация товаров и услуг. Цена вернется к базовому значению автоматически, без создания новых документов установки цен.

Способ 3. Уточнение цен в соглашениях с клиентами

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

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

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

Способ 4. Схема с «Полочной» и «Базовой» ценой

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

  1. Цена розничная (базовая) — устанавливается на постоянной основе.
  2. Цена акционная (полочная) — устанавливается только на период акций.

Затем создадим результирующий вид цены, например, Цена продажи, и настроим его расчет по формуле. Проанализируем пример логики:

Если мы хотим, чтобы система сама выбирала минимальную из двух цен, можно использовать функцию Мин() в конструкторе формул (доступно при использовании расширенных возможностей ценообразования):

Мин(ЦенаРозничная, ЦенаАкционная)

Чтобы «выключить» акционную цену, достаточно документом Установка цен номенклатуры установить для нее заведомо огромное значение (например, миллион) на дату окончания акции. Система сравнит базовую цену (1000) и акционную (1 000 000) и выберет минимальную — 1000.

Способ 5. Доработка: Отложенная установка цен (для программистов)

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

  1. Добавим в документ УстановкаЦенНоменклатуры новый статус — Запланировано.
  2. Модифицируем процедуру проведения таким образом, чтобы при статусе Запланировано документ не делал движений в регистр ЦеныНоменклатуры.
  3. Создадим регламентное задание, которое каждое утро проверяет документы в статусе Запланировано, чья дата совпадает с текущей, и переводит их в статус Действует.

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


Процедура АктивацияЗапланированныхЦен() Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	УстановкаЦенНоменклатуры.Ссылка КАК Ссылка
        |ИЗ
        |	Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
        |ГДЕ
        |	УстановкаЦенНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыУстановокЦен.Запланировано)
        |	И УстановкаЦенНоменклатуры.ДатаНачалаДействия <= &ТекущаяДата";
    
    Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
        ОбъектДок = Выборка.Ссылка.ПолучитьОбъект();
        ОбъектДок.Статус = Перечисления.СтатусыУстановокЦен.Действует;
        ОбъектДок.Записать(РежимЗаписиДокумента.Проведение);
    КонецЦикла;
КонецПроцедуры

Важное замечание о «Срезе последних»

При использовании любого из методов важно помнить, что 1С:УТ при подборе товаров в Заказ клиента берет цену на дату документа. Если менеджер создал заказ 15-го числа (во время акции), а потом перенес дату отгрузки на 25-е (когда акция закончилась), цена в табличной части автоматически не изменится. Это сделано для того, чтобы зафиксированные условия сделки не «поплыли» без ведома менеджера. Для актуализации цен необходимо нажать кнопку Цены и скидки — Пересчитать цены по виду цен.

Подводя итог, можно сказать, что наиболее стабильным и прозрачным решением является комбинация Способа 1 (плановое изменение цен двумя документами) и Способа 2 (использование скидок для краткосрочных промо-акций). Это позволяет избежать хаоса в истории цен и удовлетворить требования руководства к отчетности.

← На главную