Как исправить ошибку «Не задана кратность валюты» в 1С:Бухгалтерия?

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

При работе в программе 1С:Бухгалтерия 3.0 пользователи часто сталкиваются с системным сообщением: «Документ не может быть проведен. Не задана кратность валюты руб. на дату...». Эта проблема кажется парадоксальной, ведь учет ведется в рублях, и, казалось бы, никаких сложных пересчетов валют быть не должно. Однако для программного ядра 1С любая денежная единица — это объект справочника, требующий корректных математических параметров. В этой статье мы подробно разберем, почему возникает эта ошибка и как привести базу в рабочее состояние.

Разберем техническую суть ошибки

Для начала проанализируем ситуацию с точки зрения системы. В 1С курс любой валюты (включая рубль) определяется двумя параметрами: Курс и Кратность. Кратность — это, по сути, знаменатель дроби. Когда система пытается рассчитать сумму в валюте регламентированного учета, она выполняет операцию деления на кратность. Если кратность не задана или равна нулю, происходит критическая ошибка «Деление на ноль», и проведение документа блокируется.

Проанализируем, почему для рубля кратность должна быть равна единице. Даже если вы не ведете расчеты в долларах или евро, ВалютаРегламентированногоУчета (которой является рубль) должна иметь жестко заданные параметры: Курс = 1 и Кратность = 1. Если эти данные отсутствуют в регистре сведений КурсыВалют, система «теряется».

Шаг 1: Проверка функциональности программы

Часто пользователи не могут найти справочник Валюты, потому что он скрыт настройками интерфейса. Если в программе отключен валютный учет, 1С скрывает «лишние» с точки зрения интерфейса объекты. Рассмотрим, как их вернуть:

  1. Перейдем в раздел Главное и выберем пункт Функциональность.
  2. В открывшемся окне перейдем на вкладку Расчеты.
  3. Установим флажок Учет в валюте и у.е..

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

Шаг 2: Настройка справочника «Валюты» и загрузка классификатора

Если справочник пуст, его необходимо заполнить. Посмотрим, как это сделать правильно, чтобы избежать конфликтов кодов:

  1. Откроем справочник Валюты. Если он не отображается в меню, воспользуемся командой Функции для технического специалиста (или «Все функции») и найдем его там.
  2. Нажмем кнопку Подобрать из классификатора.
  3. В появившемся списке найдем «Российский рубль». Важный момент: обратите внимание на код. Актуальный код рубля — 643, хотя в старых системах использовался 810. Выбираем актуальный вариант.
  4. После добавления рубля в справочник, зайдем в его карточку.

В карточке валюты проверим, чтобы переключатель курса стоял в положении «Курс валюты не изменяется» (для рубля) или «Вводится вручную». Перейдем по ссылке Курсы валют в верхней части карточки и убедимся, что создана запись, где указано: Курс = 1, Кратность = 1. Если записи нет, создадим ее вручную на самую раннюю возможную дату (например, 01.01.1980).

Шаг 3: Проверка константы национальной валюты

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

Для исправления проделаем следующие шаги:

  1. Зайдем в Функции для технического специалиста.
  2. В разделе Константы найдем параметр Валюта регламентированного учета.
  3. Убедимся, что там выбран «руб.». Если поле пустое — выберем рубль из справочника.

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


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

Шаг 4: Ручное исправление регистра «Курсы валют»

Если ошибка сохраняется даже при наличии валюты в справочнике, проанализируем состояние регистра сведений. Система ищет данные на конкретную дату документа. Если документ датирован 11.06.2015, а курс в системе задан только от 2023 года, возникнет ошибка.

Рассмотрим порядок действий:

  1. Перейдем в Регистры сведений -> КурсыВалют.
  2. Создадим запись вручную.
  3. Поле Валюта: выберем рубль.
  4. Поле Период: укажем дату, которая заведомо раньше любого документа в базе.
  5. Поле Курс: 1,0000.
  6. Поле Кратность: 1.

Шаг 5: Технологические причины и кэширование

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

Проблема шаблона базы: Как отмечалось на форуме, создание базы из файла .cf (конфигурация) вместо .dt (демо-база или пустая база с данными) приводит к тому, что многие предопределенные элементы и начальные настройки (включая валюты) не создаются. В этом случае лучше всего запустить Помощник ввода начальных остатков, который принудительно инициализирует некоторые системные параметры.

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

Профилактика и тестирование

Чтобы окончательно убедиться в исправности базы, выполним процедуру Тестирование и исправление:

  1. Запустим базу в режиме Конфигуратор.
  2. Меню Администрирование -> Тестирование и исправление.
  3. Установим галочки: «Реиндексация таблиц», «Проверка ссылочной целостности».
  4. В пункте «При наличии ссылок на несуществующие объекты» выберем Создавать объекты.

Подведем итог: ошибка кратности — это чисто математическое препятствие для системы. Обеспечив наличие записи в регистре КурсыВалют с параметрами 1/1 для рубля и проверив константы учета, вы полностью устраните проблему и сможете проводить банковские выписки без задержек.

← На главную