Как реализован динамический расчет цен в 1С:Управление торговлей 11?

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

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

Архитектурные различия: расчет «на лету» против фиксации в базе

В старых конфигурациях (например, УТ 10.3) существовал тип цен «Динамический». При его использовании система не записывала конечную стоимость в базу данных, а вычисляла ее в момент открытия заказа или реализации, умножая базовую цену на определенный процент. Проанализируем, почему в УТ 11 разработчики отказались от такой модели в пользу «Рассчитываемых» видов цен с обязательной записью в регистр.

Рассмотрим основные причины такого решения:

  1. Производительность отчетов: Если бы цена Себестоимость + 20% рассчитывалась динамически, то построение «Прайс-листа» на 50 000 позиций требовало бы колоссальных ресурсов сервера при каждом формировании отчета. Система была бы вынуждена для каждой строки выполнять математические операции и запросы к базовым ценам.
  2. История изменений: Записывая результат расчета в документ Установка цен номенклатуры, мы сохраняем историю. Мы всегда можем выяснить, какая цена действовала неделю назад. В динамической модели цена «прошлого периода» менялась бы вместе с изменением текущей базовой цены, что делало бы невозможным ретроспективный анализ.
  3. Сложность формул: В современных конфигурациях формулы могут включать в себя не только коэффициенты, но и данные компоновки данных (СКД), такие как «Минимальная цена поставщика» или «Средняя цена закупки за месяц». Выполнять такие расчеты в момент подбора товара в документ продажи недопустимо с точки зрения быстродействия.

Механизм автоматизации через регламентные задания

Хотя цена в УТ 11 должна быть зафиксирована документом, пользователю не требуется создавать эти документы вручную при каждом изменении цен поставщиков. Разберем по шагам, как настроить систему для работы в режиме, близком к динамическому.

Выясним, как работает связка настроек вида цен и регламентных заданий:

  1. Настройка вида цен: При создании нового вида цены (например, «Оптовая») мы выбираем способ задания цены Рассчитывать по формуле от других видов цен. Здесь мы указываем формулу, например: [Закупочная] * 1.25.
  2. Пороги срабатывания: Это критически важная настройка. Чтобы система не плодила документы установки цен при изменении закупочной цены на одну копейку, мы устанавливаем порог отклонения (например, 3%). Цена будет пересчитана только в том случае, если новое значение отклоняется от текущего более чем на указанный процент.
  3. Регламентное задание: За выполнение автоматического пересчета отвечает задание Пересчет цен номенклатуры. Рассмотрим подробнее принцип его работы: система отслеживает изменение базовых цен и помечает зависимые цены как «требующие пересчета». Регламентное задание по расписанию (например, раз в час или ночью) анализирует эти метки и автоматически формирует документы Установка цен номенклатуры.

Использование СКД и произвольных запросов в ценообразовании

В отличие от простых динамических цен, расчет в УТ 11 позволяет использовать мощь Системы Компоновки Данных (СКД). Это позволяет создавать гибкие правила. Проанализируем ситуацию, когда цена должна зависеть от остатков на складах или данных конкурентов.

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


// Пример логики, которую можно реализовать через СКД в правилах ценообразования
Выбор
    Когда ОстаткиНаСкладах > 100 Тогда ЦенаЗакупки * 1.1
    Иначе ЦенаЗакупки * 1.3
Конец

Такие «тяжелые» расчеты выполняются в фоновом режиме, не заставляя менеджера по продажам ждать при формировании заказа клиента.

Оптимизация и офлайн-взаиморасчеты

Как отмечают участники обсуждения, современные конфигурации (ERP, УТ 11) ориентированы на высокую нагрузку. Перенос расчетов в офлайн-режим (фоновые задания) — это осознанный шаг для повышения стабильности системы. Рассмотрим пример с офлайн-взаиморасчетами: аналогично ценам, сложные расчеты задолженности перенесены из транзакции проведения документа в фоновое выполнение. Это позволяет проводить документы мгновенно, не дожидаясь завершения всех связанных калькуляций.

Практические рекомендации по настройке

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

Резюме

Таким образом, динамического расчета цен в его «чистом» виде (без записи в базу) в УТ 11 не существует, и это является преимуществом системы. Мы заменяем мгновенный, но ресурсоемкий расчет на автоматизированную актуализацию данных. Это обеспечивает высокую скорость работы интерфейса подбора товаров, предоставляет полную историю ценообразования и позволяет использовать сложные алгоритмы расчета, недоступные в старых версиях программ 1С.

← На главную