Переход с редакции 10.3 на 11 в «1С:Управление торговлей» часто вызывает сложности у пользователей, привыкших к определенной гибкости справочников. Одной из таких проблем является хранение цен номенклатуры в разных валютах. Если в версии 10.3 валюта указывалась непосредственно в строке документа Установка цен номенклатуры, то в редакции 11 архитектура изменилась: теперь валюта жестко привязана к справочнику Виды цен. Рассмотрим подробно, как обойти это ограничение и реализовать требования руководства по фиксации цен в валютах закупки (USD, EUR) с автоматическим пересчетом при продаже.
Проанализируем ситуацию: в УТ 11 каждый вид цены (например, «Оптовая») имеет одну базовую валюту. Это сделано для обеспечения единообразия учета и упрощения сравнения стоимостных показателей. Однако для компаний, закупающих товар в разных странах, это создает неудобства. Выясним причину проблемы: если вы создаете вид цены «Оптовая» в рублях, программа ожидает ввода рублевых сумм. Если в долларах — всех сумм в долларах. Нам же необходимо иметь возможность для одного товара хранить 10 USD, а для другого — 15 EUR в рамках одного и того же логического типа цен.
Это наиболее правильный метод, не требующий вмешательства в программный код. Разберем его по шагам:
Произвольный запрос к данным ИБ или Рассчитывать по другим видам цен.Такой подход позволяет хранить цены в оригинальных валютах и получать единый прайс-лист, который динамически подстраивается под курс валют.
Посмотрим на ситуацию под другим углом. В УТ 11 реализован мощный механизм работы с ценами контрагентов. Рассмотрим, как его использовать:
В документе Поступление товаров и услуг при оформлении закупки в EUR или USD система автоматически предлагает зарегистрировать цены поставщика. Эти цены записываются в регистр Цены номенклатуры поставщиков в той валюте, которая указана в документе поступления.
Далее в настройках вашего вида цены («Оптовая») вы можете указать способ расчета «Наценка на другой вид цен». В качестве базового вида укажите «Цена поставщика». Система сама определит валюту закупки для каждого товара и применит к ней заданную вами наценку, конвертируя результат в нужную валюту при выставлении счета клиенту.
Разберем ситуацию, когда цена зафиксирована в USD в справочнике, но клиент просит счет в рублях. В УТ 11 это решается настройками соглашений:
Типовом соглашении с клиентами укажите вид цены, валюта которого — USD.Заказ клиента или Счет на оплату выберите это соглашение.Важный момент: если требуется, чтобы рублевая сумма в счете не менялась при изменении курса до момента оплаты, используйте механизм фиксации курса в договоре или оформляйте авансовые платежи.
Если штатные методы не подходят и руководство настаивает на хранении разных валют в одной табличной части документа Установка цен номенклатуры, потребуется модификация конфигурации. Проанализируем примерный алгоритм доработки:
Установка цен номенклатуры, добавив колонку ВалютаСтроки.Цены номенклатуры. В типовом варианте ресурс Цена записывается в валюте вида цены. Вам придется либо конвертировать цену в валюту вида цены «на лету» перед записью, либо добавлять измерение Валюта в сам регистр (что крайне не рекомендуется, так как нарушит работу всех типовых отчетов).Пример кода для пересчета цены при вводе в документ (условно):
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ВалютаДокумента = Объект.Валюта; // Базовая валюта вида цены
ВалютаСтроки = ТекущаяСтрока.ВалютаСтроки;
Если ВалютаСтроки <> ВалютаДокумента Тогда
// Вызываем экспортную функцию пересчета из общего модуля
ТекущаяСтрока.Цена = РаботаСКурсамиВалют.ПересчитатьИзВалютыВВалюту(
ТекущаяСтрока.ЦенаВалютная,
ВалютаСтроки,
ВалютаДокумента,
Объект.Дата
);
КонецЕсли;
КонецПроцедуры
Проанализировав все варианты, мы видим, что наиболее стабильным и поддерживаемым решением в «1С:Управление торговлей 11» является комбинация нескольких базовых валютных цен. Это позволяет сохранить типовую логику программы и избежать проблем при обновлении конфигурации. Помните, что идеология УТ 11 строится на сквозном учете в единой валюте для анализа прибыли, поэтому попытка «смешать» валюты в одном регистре без конвертации может привести к некорректным отчетам по рентабельности продаж.