Как исправить ошибку «Передана пустая валюта» при проведении документа «Приобретение товаров и услуг» в 1С:ERP?

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

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

Анализируем контекст возникновения ошибки

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

Шаг 1. Использование отладчика для поиска источника

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

  1. Включите режим отладки в базе.
  2. Установите «Остановку по ошибке» в меню «Отладка».
  3. Повторите проведение документа. Система остановится ровно в том месте, где передается пустая ссылка.

Скорее всего, вы попадете в процедуру общего модуля, которая выглядит примерно так:


Процедура ПолучитьКурсВалюты(Валюта, Дата) Экспорт
    Если Валюта.Пустая() Тогда
        ВызватьИсключение "Передана пустая валюта";
    КонецЕсли;
    // ... дальнейшая логика получения курса
КонецПроцедуры

Посмотрите на Стек вызовов. Он покажет, из какого модуля и какой функции пришел запрос. Это поможет понять, что именно система пыталась рассчитать: задолженность по договору, сумму в ценах поставщика или данные для управленческого учета.

Шаг 2. Проверка Соглашений и Договоров с поставщиком

Разберем ситуацию, когда ошибка скрыта в данных контрагента. Документ Приобретение товаров и услуг тесно связан с объектами СоглашениеСПоставщиком и ДоговорКонтрагента. Рассмотрим подробнее:

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

Шаг 3. Анализ видов цен поставщика

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

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

Шаг 4. Настройки функциональных опций и справочника Валюты

Иногда корень проблемы лежит в глобальных настройках системы. Рассмотрим по шагам проверку НСИ:

  1. Перейдите в НСИ и администрирование — Предприятие — Валюты.
  2. Проверьте, включена ли опция «Многовалютность». Если она выключена, но в базе есть документы в валюте, это может вызывать конфликты.
  3. Найдите в списке валют «Российский рубль» (код 643 или 810). Зайдите в него и убедитесь, что он помечен как базовая валюта.
  4. Проверьте регистр сведений КурсыВалют. Для рубля должна существовать хотя бы одна запись, где курс и кратность равны 1. Если регистр пуст, некоторые механизмы ERP могут отрабатывать некорректно.

Шаг 5. Статьи расходов и аналитика (для услуг)

Если вы оформляете приобретение услуг, проанализируем табличную часть на предмет Статьи расходов. В 1С:ERP статьи расходов могут иметь сложные правила распределения. Например, если статья предполагает распределение на себестоимость товаров, которые учитываются в другой валюте (например, по импортной закупке), система может пытаться найти кросс-курс. Убедитесь, что в настройках статьи расходов нет специфических требований к валютному учету, которые не обеспечены данными в документе.

Шаг 6. Техническая проверка целостности данных

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

Выполните следующие действия для проверки:

  1. Перевыбор валюты: В документе Приобретение товаров и услуг измените валюту на USD или EUR, согласитесь на пересчет, а затем верните обратно RUB. Это заставит систему программно перезаполнить скрытые реквизиты документа, такие как ВалютаВзаиморасчетов.
  2. Очистка кэша: Ошибка может быть вызвана некорректным кэшированием модулей на сервере или локальном компьютере. Попробуйте очистить кэш пользователя или выполнить процедуру Тестирование и исправление информационной базы через конфигуратор.
  3. Групповое изменение реквизитов: Используйте стандартную обработку Групповое изменение реквизитов, чтобы проверить значение поля Валюта в документе. Если там написано «Объект не найден», значит, ссылка была удалена, и ее нужно восстановить.

Резюме

Мы рассмотрели основные причины возникновения ошибки «Передана пустая валюта». В большинстве случаев проблема кроется в Соглашениях с поставщиками или Видах цен, где поле валюты не заполнено явно. Системный подход к проверке всех связанных объектов и использование отладчика позволяют локализовать и устранить эту ошибку в кратчайшие сроки.

← На главную