При работе в программе 1С:Бухгалтерия 3.0 пользователи часто сталкиваются с системным сообщением: «Документ не может быть проведен. Не задана кратность валюты руб. на дату...». Эта проблема кажется парадоксальной, ведь учет ведется в рублях, и, казалось бы, никаких сложных пересчетов валют быть не должно. Однако для программного ядра 1С любая денежная единица — это объект справочника, требующий корректных математических параметров. В этой статье мы подробно разберем, почему возникает эта ошибка и как привести базу в рабочее состояние.
Для начала проанализируем ситуацию с точки зрения системы. В 1С курс любой валюты (включая рубль) определяется двумя параметрами: Курс и Кратность. Кратность — это, по сути, знаменатель дроби. Когда система пытается рассчитать сумму в валюте регламентированного учета, она выполняет операцию деления на кратность. Если кратность не задана или равна нулю, происходит критическая ошибка «Деление на ноль», и проведение документа блокируется.
Проанализируем, почему для рубля кратность должна быть равна единице. Даже если вы не ведете расчеты в долларах или евро, ВалютаРегламентированногоУчета (которой является рубль) должна иметь жестко заданные параметры: Курс = 1 и Кратность = 1. Если эти данные отсутствуют в регистре сведений КурсыВалют, система «теряется».
Часто пользователи не могут найти справочник Валюты, потому что он скрыт настройками интерфейса. Если в программе отключен валютный учет, 1С скрывает «лишние» с точки зрения интерфейса объекты. Рассмотрим, как их вернуть:
После включения этой опции справочник Валюты станет доступен в разделе Справочники (подраздел «Налоги и отчеты» или через поиск). Посмотрим на ситуацию глубже: даже если вы планируете работать только с рублями, временное включение этой настройки необходимо для инициализации справочника.
Если справочник пуст, его необходимо заполнить. Посмотрим, как это сделать правильно, чтобы избежать конфликтов кодов:
Валюты. Если он не отображается в меню, воспользуемся командой Функции для технического специалиста (или «Все функции») и найдем его там.В карточке валюты проверим, чтобы переключатель курса стоял в положении «Курс валюты не изменяется» (для рубля) или «Вводится вручную». Перейдем по ссылке Курсы валют в верхней части карточки и убедимся, что создана запись, где указано: Курс = 1, Кратность = 1. Если записи нет, создадим ее вручную на самую раннюю возможную дату (например, 01.01.1980).
Иногда проблема кроется глубже — в программных константах, которые не видны обычному пользователю. Выясним причину через проверку системных настроек. Если база создавалась из пустого файла конфигурации (.cf), а не из шаблона базы (.dt), константа ВалютаРегламентированногоУчета может быть пустой.
Для исправления проделаем следующие шаги:
Валюта регламентированного учета.Проанализируем программный код, который может быть использован для проверки этой настройки через внешнюю обработку, если интерфейсный доступ ограничен:
// Пример программной установки валюты учета
ВалютаСсылка = Справочники.Валюты.НайтиПоКоду("643");
Если Не ВалютаСсылка.Пустая() Тогда
Константы.ВалютаРегламентированногоУчета.Установить(ВалютаСсылка);
Сообщить("Валюта регламентированного учета успешно установлена!");
КонецЕсли;
Если ошибка сохраняется даже при наличии валюты в справочнике, проанализируем состояние регистра сведений. Система ищет данные на конкретную дату документа. Если документ датирован 11.06.2015, а курс в системе задан только от 2023 года, возникнет ошибка.
Рассмотрим порядок действий:
КурсыВалют.Бывают ситуации, когда все настройки верны, но ошибка «фантомно» продолжает появляться. Рассмотрим две технологические причины: кэш и некорректное создание базы.
Проблема шаблона базы: Как отмечалось на форуме, создание базы из файла .cf (конфигурация) вместо .dt (демо-база или пустая база с данными) приводит к тому, что многие предопределенные элементы и начальные настройки (включая валюты) не создаются. В этом случае лучше всего запустить Помощник ввода начальных остатков, который принудительно инициализирует некоторые системные параметры.
Очистка кэша: Если вы внесли изменения в справочник, но документ все равно не проводится, попробуйте почистить кэш 1С. Для этого удалите базу из списка запуска и добавьте ее заново. Это заставит платформу пересчитать временные файлы и увидеть обновленные данные в регистрах.
Чтобы окончательно убедиться в исправности базы, выполним процедуру Тестирование и исправление:
Подведем итог: ошибка кратности — это чисто математическое препятствие для системы. Обеспечив наличие записи в регистре КурсыВалют с параметрами 1/1 для рубля и проверив константы учета, вы полностью устраните проблему и сможете проводить банковские выписки без задержек.