Как реализовать гибкий расчет цен с использованием формул в 1С:Комплексная автоматизация?

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

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

Понимание архитектуры ценообразования в 1С

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

Способ 1: Использование функционала формул в видах цен

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

  1. Откройте справочник Виды цен.
  2. Создайте или выберите нужный вид цены.
  3. Включите режим Использовать формулы. Это позволит вам задавать математические выражения, например: ЦенаПоступления * 1.10 для наценки 10% или ЦенаПоступления * 1.20 для 20%.
  4. Если для разных товаров нужны разные наценки, рекомендуется создавать отдельные виды цен (например, «Оптовая 10%», «Оптовая 20%») и выбирать их при заполнении документа Установка цен.

Способ 2: Использование расширений конфигурации для гибкой настройки

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

Для реализации этой задачи выполните следующие действия:

  1. Создайте расширение и добавьте в него документ Установка цен.
  2. Добавьте дополнительный реквизит или колонку в табличную часть Товары, например, ПроцентНаценки.
  3. Используйте обработчики событий для перехвата момента заполнения или изменения строки.

Пример логики для реализации в коде расширения (в модуле формы):


// В обработчике ПриИзменении колонки ПроцентНаценки
Процедура ТоварыПроцентНаценкиПриИзменении(Элемент)
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
    Если ТекущаяСтрока.ЦенаЗакупки > 0 Тогда
        ТекущаяСтрока.Цена = ТекущаяСтрока.ЦенаЗакупки * (1 + ТекущаяСтрока.ПроцентНаценки / 100);
    КонецЕсли;
КонецПроцедуры

Способ 3: Механизм ценовых групп

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

  1. Создайте справочник Ценовые группы (например, «Бытовая техника», «Расходные материалы»).
  2. Привяжите каждый товар к соответствующей группе.
  3. В Правилах ценообразования для каждой группы задайте свою наценку.

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

Рекомендации по реализации

При внедрении любого из способов учитывайте следующие важные моменты:

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

← На главную