Как установить цены номенклатуры на определенный отрезок времени в 1С:УТ 10.3?

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

Часто в торговых компаниях возникает необходимость установить цены на товар (например, временные акционные закупочные цены от поставщика) только на строго определенный период, чтобы после его окончания цена автоматически возвращалась к базовому значению. Разберем подробнее, с какими ограничениями платформы 1С мы сталкиваемся в конфигурации 1С:Управление торговлей 10.3 и какие существуют способы надежного решения этой задачи.

Ограничения платформы 1С и архитектуры УТ 10.3

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

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

Способ 1: Программная генерация "отменяющего" документа

Один из путей автоматизации — доработка документа УстановкаЦенНоменклатуры. Рассмотрим этот вариант по шагам:

  1. Добавляем в шапку документа новый реквизит ДатаОкончания.
  2. В модуле объекта перед проведением проверяем: если этот реквизит заполнен, то получаем срез последних цен номенклатуры из табличной части на текущий момент.
  3. Программно формируем второй (служебный) документ установки цен, который вернет старые значения, и устанавливаем его дату равной значению реквизита ДатаОкончания.

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

Способ 2: Использование регламентных заданий (Рекомендуемый)

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

  1. В конфигурацию добавляется вспомогательный регистр сведений ОчередьОтменыЦен или используется добавленный реквизит ДатаОкончания в исходном документе.
  2. Настраивается фоновое задание РегламентныеЗадания, которое запускается каждую ночь (например, в 00:01).
  3. Задание проверяет, у каких акций наступила дата окончания, программно вычисляет предыдущую действовавшую цену и автоматически создает, заполняет и проводит новый документ установки цен текущим временем.

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

Способ 3: Создание отдельного типа цен для акций

Посмотрим на пример решения задачи без сложного вмешательства в проведение документов. В справочнике ТипыЦенНоменклатуры можно завести специальный вид цены (например, "Закупочная (акция)").

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

  1. Система при поиске базы для наценки сначала ищет цену по типу "Закупочная (акция)".
  2. Если актуальная акционная цена на текущую дату найдена — берется она.
  3. Если акционная цена не найдена или не задана — используется стандартная "Закупочная" цена.

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

Способ 4: Бизнес-процессы и контроль задач

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

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

Способ 5: Использование условий поставок по договорам

В конфигурации 1С:УТ 10.3 также предусмотрена возможность фиксации цен не глобально для всего товара, а в рамках конкретного договора с контрагентом. Если акция предоставляется поставщиком индивидуально, целесообразно использовать штатный механизм дополнительных соглашений. Временные цены регистрируются в строгой привязке к краткосрочному договору, по истечении которого закупки снова пойдут по условиям основного договора.

Резюме

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

← На главную