При работе в 1С:ERP Управление предприятием 2.5 пользователи часто сталкиваются с ситуацией, когда документ Приобретение товаров и услуг отказывается проводиться, выдавая системное сообщение: «Ошибка получения курсов валют: передана пустая валюта». На первый взгляд ситуация кажется абсурдной: в самом документе выбран «рубль», в настройках организации и предприятия также установлены рубли, но система упорно ищет курс для неопределенного объекта. В рамках этой статьи мы подробно разберем, почему возникает эта ошибка, и пройдем по шагам процесс ее устранения.
Для начала проанализируем ситуацию. В 1С:ERP механизмы проведения документов крайне сложны и включают в себя множество проверок. Даже если ваша компания ведет учет исключительно в одной валюте, программный код системы все равно обращается к общим модулям работы с валютами для расчета себестоимости, взаиморасчетов или формирования проводок. Если в цепочке связанных данных (договор, соглашение, вид цен, статья расходов) какой-то реквизит остался пустым, стандартная функция КурсВалюты.Получить() получает вместо ссылки на справочник Валюты пустое значение, что и вызывает исключение.
Самый быстрый и надежный способ для технического специалиста — это использование конфигуратора. Проанализируем, в какой именно момент происходит сбой. Рассмотрим алгоритм действий:
Скорее всего, вы попадете в процедуру общего модуля, которая выглядит примерно так:
Процедура ПолучитьКурсВалюты(Валюта, Дата) Экспорт
Если Валюта.Пустая() Тогда
ВызватьИсключение "Передана пустая валюта";
КонецЕсли;
// ... дальнейшая логика получения курса
КонецПроцедуры
Посмотрите на Стек вызовов. Он покажет, из какого модуля и какой функции пришел запрос. Это поможет понять, что именно система пыталась рассчитать: задолженность по договору, сумму в ценах поставщика или данные для управленческого учета.
Разберем ситуацию, когда ошибка скрыта в данных контрагента. Документ Приобретение товаров и услуг тесно связан с объектами СоглашениеСПоставщиком и ДоговорКонтрагента. Рассмотрим подробнее:
Выясним причину, связанную с ценообразованием. В табличной части документа часто используется реквизит Вид цены. Если система настроена на автоматическую регистрацию цен поставщика или проверку отклонений, она обращается к справочнику Виды цен поставщиков.
Проанализируем этот справочник. У каждого вида цены обязательно должна быть указана валюта. Если вы создали новый вид цены «вручную» и не заполнили валюту, то при попытке записи документа система не сможет сопоставить валюту документа и валюту прайс-листа для пересчета, что приведет к ошибке получения курса.
Иногда корень проблемы лежит в глобальных настройках системы. Рассмотрим по шагам проверку НСИ:
КурсыВалют. Для рубля должна существовать хотя бы одна запись, где курс и кратность равны 1. Если регистр пуст, некоторые механизмы ERP могут отрабатывать некорректно.Если вы оформляете приобретение услуг, проанализируем табличную часть на предмет Статьи расходов. В 1С:ERP статьи расходов могут иметь сложные правила распределения. Например, если статья предполагает распределение на себестоимость товаров, которые учитываются в другой валюте (например, по импортной закупке), система может пытаться найти кросс-курс. Убедитесь, что в настройках статьи расходов нет специфических требований к валютному учету, которые не обеспечены данными в документе.
Если визуально все поля заполнены, а ошибка сохраняется, рассмотрим возможность «битых» ссылок. Это часто случается после обновления конфигурации (например, на версию 2.5.12) или после масштабных обменов данными.
Выполните следующие действия для проверки:
Приобретение товаров и услуг измените валюту на USD или EUR, согласитесь на пересчет, а затем верните обратно RUB. Это заставит систему программно перезаполнить скрытые реквизиты документа, такие как ВалютаВзаиморасчетов.Тестирование и исправление информационной базы через конфигуратор.Групповое изменение реквизитов, чтобы проверить значение поля Валюта в документе. Если там написано «Объект не найден», значит, ссылка была удалена, и ее нужно восстановить.Мы рассмотрели основные причины возникновения ошибки «Передана пустая валюта». В большинстве случаев проблема кроется в Соглашениях с поставщиками или Видах цен, где поле валюты не заполнено явно. Системный подход к проверке всех связанных объектов и использование отладчика позволяют локализовать и устранить эту ошибку в кратчайшие сроки.