При работе с конфигурациями 1С:ERP 2.5, 1С:Комплексная автоматизация 2.5 (КА 2.5) или 1С:Управление торговлей 11.5 (УТ 11.5) пользователи могут столкнуться с ошибкой: "Ошибка получения курса валют: передана пустая валюта". Эта проблема чаще всего проявляется при попытке провести такие документы, как "Списание безналичных ДС" и "Расходно-кассовый ордер" — для комплексного устранения подобных ошибок проведения есть готовая обработка автоматического исправления ошибок учета в УТ, КА и ERP. Давайте рассмотрим причины возникновения этой ошибки и подробно разберем, как ее можно решить.
Как правило, корень проблемы лежит в некорректных или неполных настройках валютного учета в информационной базе. Важно также отслеживать исполнение заявок на расходование денежных средств, чтобы исключить ошибки на этапе формирования платежей. Это может быть связано как с первоначальной настройкой системы, так и с нюансами обновления конфигураций или переноса данных. Мы проанализируем различные сценарии и предоставим пошаговые инструкции для устранения ошибки.
Одной из наиболее распространенных причин возникновения ошибки является незаполненный реквизит ВалютаРегламентированногоУчета (Валюта регламентированного учета) в карточке вашей организации. Этот реквизит критически важен для системы, так как он определяет основную валюту, в которой ведется регламентированный (бухгалтерский и налоговый) учет в вашей организации. Если система не знает, какая валюта является основной для учета, она не сможет получить курс валюты при перед проведении финансовых документов — предотвратить такие ошибки ввода поможет инструмент гибкой настройки правил заполнения реквизитов в 1С.
Давайте пошагово проверим и заполним этот реквизит:
Почему это происходит? Часто при обновлении конфигураций со старых версий (например, с 1С:ERP 2.4 на 2.5) или при переносе данных из других систем, этот новый для 2.5 реквизит может остаться незаполненным. В релизах 2.4 его не было, и автоматическое заполнение при штатном обновлении не всегда срабатывает корректно, особенно если были особенности при переносе данных.
В некоторых случаях ошибка может возникать, если в одной информационной базе ведется учет по нескольким организациям, для которых установлены разные валюты регламентированного учета. Хотя функционально система должна поддерживать такой сценарий, пользователи отмечают, что иногда это приводит к ошибкам при попытке получить курс.
Если это ваш случай, и ошибка проявляется именно в мультиорганизационной базе с различными валютами учета, мы можем попробовать следующее решение:
Этот подход может помочь обойти предполагаемый "косяк" (недоработку) конфигурации 1С:КА 2.5 или других смежных решений, как было отмечено в обсуждении. Однако, прежде чем применять это решение, убедимся, что изменение валюты регламентированного учета для всех организаций не нарушит логику вашего учета и не создаст новых проблем, особенно если ваши операции действительно требуют разных валют для разных юридических лиц.
Для пользователей 1С:Управление торговлей 11.5 (УТ 11.5) существуют дополнительные настройки, которые могут влиять на корректность определения валюты и получения курсов. Если вы работаете в УТ 11.5, помимо реквизита "Валюта регламентированного учета", мы также должны убедиться, что заполнены ключевые настройки учетной политики.
Давайте проверим эти настройки:
Корректное заполнение этих настроек обеспечивает правильное функционирование многих подсистем учета, включая валютный.
В случаях, когда ручное заполнение реквизита "Валюта регламентированного учета" не помогает, или требуется скорректировать его для большого количества организаций, пользователи часто прибегают к использованию внешних обработок или стандартного механизма группового изменения реквизитов.
В более новых версиях конфигураций, таких как 1С:ERP 2.5.8, мы можем воспользоваться встроенным функционалом для массового изменения данных:
Этот инструмент позволяет быстро и эффективно скорректировать данные для множества элементов, что особенно удобно при запуске новой базы или после переносов.
Если встроенные средства не подходят (например, из-за особенностей релиза или специфики задачи), можно использовать внешнюю обработку. Хотя конкретный код обработки в обсуждении не приводится, общая идея заключается в программном обращении к справочнику организаций и заполнении нужного реквизита.
Пример программного кода для такой обработки (предполагая, что обработка запускается в режиме предприятия и имеет доступ к объектам):
// Получаем объект справочника "Организации"
ВыборкаОрганизаций = Справочники.Организации.Выбрать();
// Получаем объект валюты, которую нужно установить (например, "Рубль")
// Важно использовать правильное наименование или код валюты, существующей в справочнике
// Можно также использовать Справочники.Валюты.НайтиПоКоду() или выбрать интерактивно
ВалютаДляУстановки = Справочники.Валюты.НайтиПоНаименованию("Рубль", Истина);
Если ВалютаДляУстановки = Неопределено Тогда
Сообщить("Внимание! Валюта 'Рубль' не найдена в справочнике. Проверьте наименование.", СтатусСообщения.Важное);
Возврат;
КонецЕсли;
Сообщить("Начинаем обработку организаций...");
Пока ВыборкаОрганизаций.Следующий() Цикл
ОрганизацияОбъект = ВыборкаОрганизаций.ПолучитьОбъект();
Если ОрганизацияОбъект.ВалютаРегламентированногоУчета <> ВалютаДляУстановки Тогда
ОрганизацияОбъект.ВалютаРегламентированногоУчета = ВалютаДляУстановки;
Попытка
ОрганизацияОбъект.Записать();
Сообщить("Для организации '" + ОрганизацияОбъект.Наименование + "' успешно установлена валюта регламентированного учета: " + ВалютаДляУстановки.Наименование);
Исключение
Сообщить("Ошибка при записи организации '" + ОрганизацияОбъект.Наименование + "': " + ОписаниеОшибки(), СтатусСообщения.Важное);
КонецПопытки;
Иначе
Сообщить("Для организации '" + ОрганизацияОбъект.Наименование + "' валюта регламентированного учета уже установлена корректно.");
КонецЕсли;
КонецЦикла;
Сообщить("Обработка организаций завершена.");
Перед использованием подобного кода обязательно сделайте резервную копию информационной базы и протестируйте его на тестовой копии. Это обеспечит безопасность ваших данных.
Если вышеперечисленные решения не помогли, или вы хотите более глубоко проанализировать ситуацию, рассмотрим дополнительные аспекты, которые могут вызывать ошибку.
Иногда в справочнике "Валюты" могут присутствовать несколько позиций с одинаковым наименованием, например, несколько записей с наименованием "Рубль" — для автоматического слияния таких записей есть удобная обработка удаления дубликатов в справочниках 1С. Если одна из таких записей не является той валютой, которая по факту используется как валюта регламентированного учета, это может сбивать систему с толку при попытке получить курс.
ВалютаРегламентированногоУчета организации, является единственной и корректной для использования. При наличии дубликатов, некорректные можно пометить на удаление или исправить их.Ошибка получения курса валют может быть вызвана недоработками или багами в конкретном релизе платформы или конфигурации. В обсуждении упоминается схожая ошибка с кодом 00-00427657.
Мы настоятельно рекомендуем регулярно обновлять вашу конфигурацию до самых актуальных релизов. Разработчики 1С постоянно выпускают исправления ошибок, и ваша проблема может быть решена в одном из следующих обновлений. Однако, как показывает практика, обновление не всегда является панацеей, и может потребоваться применение других решений из этого списка.
В некоторых случаях, как было отмечено на форуме, пользователи смогли временно обойти ошибку, используя следующие методы:
Эти методы не являются решением проблемы по существу, но могут помочь провести документы в срочном порядке, пока вы ищете и применяете основное решение.
В некоторых версиях 1С:УТ пользователи также отмечали, что проблемой могло быть некорректное указание базовой валюты.
Если документы (например, "Приходный кассовый ордер") создаются программно, очень важно убедиться, что реквизиты, связанные с валютой, заполняются корректно и явно — контролировать полноту ввода поможет расширение для обязательного заполнения реквизитов в 1С. Мы должны убедиться, что полю ВалютаДокумента присваивается корректное значение из справочника валют.
Пример:
НовыйПриходныйОрдер = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
// ... Заполнение других реквизитов ...
// Корректное заполнение валюты документа
// Ищем валюту по наименованию. Ложь означает не выводить предупреждение, если не найдено.
ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию("руб.", Ложь);
Если ВалютаДокумента <> Неопределено Тогда
НовыйПриходныйОрдер.ВалютаДокумента = ВалютаДокумента;
Иначе
Сообщить("Внимание! Валюта 'руб.' не найдена в справочнике. Проверьте.", СтатусСообщения.Важное);
// Возможно, следует прервать создание документа или использовать валюту по умолчанию
КонецЕсли;
// ... Продолжение заполнения и запись документа ...
Явное указание валюты помогает избежать неопределенности и ошибок, особенно при автоматизированном вводе данных.
В 1С:ERP 2.5 предусмотрена возможность ведения мультивалютного учета. Если вы работаете с несколькими валютами, убедимся, что эта функциональная опция включена, и курсы валют регулярно загружаются.
Актуальные курсы валют являются основой для корректной работы системы при проведении операций в иностранной валюте.
Как мы видим, проблема "Ошибка получения курса валют: передана пустая валюта" может иметь несколько причин, но все они, как правило, сводятся к некорректным или неполным настройкам валютного учета в информационной базе. Важно отметить, что с валютой регламентированного учета следует определиться и правильно настроить ее до формирования первых документов в системе, так как дальнейшее изменение этой настройки может быть сопряжено с определенными трудностями и потребовать дополнительных корректировок данных. Внимательный подход к настройке справочников и учетных политик поможет избежать подобных ошибок и обеспечит стабильную работу вашей системы 1С.