Как настроить расчет цен в рублях на основе цен в USD в 1С:Комплексная автоматизация 2 и 1С:ERP?

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

При переходе со старых платформ и конфигураций (таких как 1С:Управление торговлей 10.3, 1С:Комплексная автоматизация 1.1 или 1С:УПП) на современные решения 1С:ERP Управление предприятием 2 или 1С:Комплексная автоматизация 2 пользователи часто сталкиваются с изменением логики работы ценообразования. Один из самых популярных вопросов — как настроить динамический расчет рублевых цен на основании базовых цен, заданных в долларах (USD), так, чтобы в прайс-листе и документах всегда фигурировали актуальные суммы по текущему курсу валют.

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

Почему «динамический» пересчет по запросу в карточке вида цен больше не работает?

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

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

Решение 1. Стандартный методический подход (Продажи в у.е. и автопересчет в документах)

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

Шаг 1. Создание валютного вида цен

Перейдем в раздел CRM и маркетинг — Настройки и справочники — Виды цен. Создадим новый вид цен (например, «Оптовая USD»):

  1. Укажем наименование вида цен.
  2. В поле Валюта цены выберем значение USD.
  3. Установим способ задания цены: например, Ручное назначение или Наценка на другой вид цен.
  4. Запишем элемент. Цены для этого вида цен будут регистрироваться и храниться в долларах.

Шаг 2. Настройка соглашения или договора с клиентом

Для того чтобы система понимала, как именно пересчитывать долларовую цену при продаже отечественному контрагенту, настроим правила продаж:

  1. Откроем Соглашение с клиентом (типовое или индивидуальное) либо карточку Договора.
  2. В поле Валюта взаиморасчетов укажем USD.
  3. Установим флаг или выберем режим Оплата в рублях (это классический вариант расчетов в условных единицах).
  4. В качестве используемого прайс-листа укажем наш созданный вид цен «Оптовая USD».

Шаг 3. Оформление документов продажи

При выписке документов Заказ клиента, Реализация товаров и услуг или Счет на оплату менеджеру не придется производить расчеты вручную. Выясним, как ведет себя система:

  1. При выборе номенклатуры программа обращается к регистру цен и находит долларовую цену.
  2. Обращаясь к регистру сведений КурсыВалют на дату документа, система мгновенно умножает цену в USD на текущий курс.
  3. В табличную часть документа подставляется итоговая цена в **рублях**, а все печатные формы (включая ТОРГ-12, УПД и Счет-фактуру) формируются строго в соответствии с законодательством РФ — в рублевом эквиваленте.

Шаг 4. Вывод актуального рублевого прайс-листа для клиентов

Часто возникает вопрос: как показать клиенту прайс-лист в рублях, если базовые цены ведутся в USD? Для этого не нужно переписывать отчет. Выполним следующие действия в стандартном отчете «Прайс-лист»:

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

Решение 2. Автоматическое обновление рублевого прайс-листа через регламентное задание

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

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

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


Процедура РассчитатьРублевыеЦеныПоКурсу() Экспорт
    
    // Получаем актуальный курс USD на текущую дату
    ВалютаДоллар = Справочники.Валюты.НайтиПоКоду("840"); // Код USD
    КурсВалюты = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ТекущаяДата(), Новый Структура("Валюта", ВалютаДоллар));
    ТекущийКурс = КурсВалюты.Курс / КурсВалюты.Кратность;
    
    Если ТекущийКурс = 0 Тогда
        ЗаписьЖурналаРегистрации("Установка цен", УровеньЖурналаРегистрации.Ошибка, , , "Не удалось получить курс USD!");
        Возврат;
    КонецЕсли;
    
    // Создаем новый документ Установка цен номенклатуры
    ДокЦен = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
    ДокЦен.Дата = ТекущаяДата();
    ДокЦен.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
    ДокЦен.Ответственный = Пользователи.ТекущийПользователь();
    ДокЦен.Комментарий = "Автоматический расчет цен по курсу USD: " + Строка(ТекущийКурс);
    
    // Заполняем табличные части документа программно на основе базового прайса в USD
    // (Алгоритм выборки базовых цен и заполнения табличной части "Товары")
    // ...
    
    Попытка
        ДокЦен.Записать(РежимЗаписиДокумента.Проведение);
    Исключение
        ЗаписьЖурналаРегистрации("Установка цен", УровеньЖурналаРегистрации.Ошибка, , , КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
    КонецПопытки;

КонецПроцедуры

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

Решение 3. Уточнение валют по ценовым группам

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

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

  1. Создаем единый вид цен «Продажи оптовые» с базовой валютой RUB.
  2. Переходим по ссылке Уточнить валюту по ценовым группам.
  3. Для ценовой группы «Импорт» указываем валюту USD.

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

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

Подводя итоги нашего анализа, выделим ключевые правила работы с валютным ценообразованием в 1С:КА 2 и 1С:ERP:

← На главную