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

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

Рассмотрим распространенную ситуацию в конфигурации 1С:Розница 3.0 (в том числе для других стран, например, Азербайджана), когда по умолчанию валютой учета и национальной валютой установлен рубль, а пользователю необходимо изменить её на местную валюту, например, азербайджанский манат. При попытке сделать это через меню функций для технического специалиста открывается пустая форма константы, и редактирование становится невозможным. Проанализируем причины такого поведения системы и разберем по шагам рабочие способы решения этой задачи.

Почему открывается пустая форма константы?

Выясним причину, по которой платформа не дает интерактивно изменить значение. На это влияют два основных фактора:

  1. Отсутствие выделенной пользовательской формы. В современных редакциях конфигурации 1С:Розница 3.0 (которая структурно унифицирована с 1С:УНФ) разработчики не всегда создают отдельные графические интерфейсы для базовых или системных констант. Когда вы открываете такую константу напрямую, платформа генерирует форму по умолчанию. Из-за скрытых функциональных опций или настроек видимости элементов эта форма может оказаться абсолютно пустой.
  2. Неактивен мультивалютный учет. Функционал взаимодействия с валютами, отличными от основной, по умолчанию может быть выключен. В результате все связанные с валютами реквизиты просто скрываются на уровне интерфейса программы.

Критические ограничения платформы: на что обратить внимание

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

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

Способ 1: Активация учета нескольких валют

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

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

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

Способ 2: Программная установка через код (для чистой базы)

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


// Находим нужную валюту в справочнике (убедитесь, что она предварительно создана)
СсылкаНаВалюту = Справочники.Валюты.НайтиПоКоду("944"); // Код AZN или другой вашей валюты

Если ЗначениеЗаполнено(СсылкаНаВалюту) Тогда
    // Устанавливаем валюту учета
    Константы.ВалютаУчета.Установить(СсылкаНаВалюту);
    
    // Устанавливаем национальную валюту
    Константы.НациональнаяВалюта.Установить(СсылкаНаВалюту);
    
    Сообщить("Валюты успешно изменены!");
Иначе
    Сообщить("Валюта не найдена в справочнике!");
КонецЕсли;

Этот код напрямую обращается к объекту Константы и записывает значение в обход отсутствующих графических форм, используя метод Установить().

Способ 3: Использование универсальных обработок

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

Альтернативные варианты решения, если в базе уже есть данные

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

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

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

← На главную