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

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

При настройке ценообразования в 1С:Управление торговлей 11 (ред. 11.5) пользователи часто сталкиваются с задачей создания гибкой системы цен. В частности, возникает вопрос: можно ли настроить систему так, чтобы при изменении цены в рублях автоматически пересчитывалась цена в долларах по курсу, и наоборот — при изменении долларовой цены обновлялась рублевая? Давайте проанализируем эту задачу и разберем возможные пути ее решения.

Понимание ограничений системы

Прежде всего, важно понимать, что архитектура 1С:УТ 11 строится на иерархическом принципе. Механизм Виды цен предполагает наличие Базового вида цены, от которого зависят производные. Создание циклической зависимости, где «А зависит от Б», а «Б зависит от А», приведет к ошибке зацикливания (рекурсии) при расчете цен в документах Установка цен номенклатуры.

Стандартный функционал системы не поддерживает одновременное «двустороннее» обновление данных в рамках одного механизма формул. Если мы попытаемся прописать в формулах обоих видов цен перекрестные ссылки, система не сможет определить точку начала расчета, что приведет к остановке транзакции.

Решение 1: Выбор «эталонного» вида цены

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

  1. Выберите вид цены, который является ведущим (например, долларовый).
  2. В карточке зависимого вида цены (рублевого) в поле Базовый вид цены укажите долларовый.
  3. В поле Способ задания цены выберите Наценка на другой вид цен.
  4. При необходимости используйте Произвольную формулу для учета курса валют:
    
    // Пример формулы
    Цена / 70
    

В этом случае при изменении курса валют в справочнике Курсы валют вам достаточно нажать кнопку Заполнить в документе Установка цен номенклатуры, и система автоматически пересчитает зависимые цены.

Решение 2: Программная реализация через расширение

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

Алгоритм действий для разработки:

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

Практические советы и рекомендации

При работе с Видами цен помните о следующих нюансах:

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

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

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

← На главную