Справочники и Данные · 11 мин
Как выгрузить курсы валют из 1С
Как выгрузить курсы валют из 1С в Excel и файл: типовые способы, обработки, загрузка из интернета, проверка результата и типичные ошибки.
Курсы валют в 1С хранятся в регистре сведений «Курсы валют» и привязаны к справочнику «Валюты». Выгрузить их можно несколькими способами: через типовую обработку «Групповая обработка справочников и документов», через консоль запросов, через стандартную выгрузку списка в табличный документ или программно — внешней обработкой. Выбор зависит от того, нужен разовый файл для анализа или регулярный обмен с другой системой.
Прежде чем выгружать, убедитесь, что курсы в базе вообще загружены и актуальны. Если регистр пуст или курсы устарели, сначала выполните загрузку из интернета (или вручную), иначе выгрузите пустоту либо неверные данные, которые потом попадут в отчёты и расчёты.
Где в 1С хранятся курсы валют
В типовых конфигурациях (1С:Бухгалтерия, Управление торговлей, ERP, Комплексная автоматизация) курсы хранятся в регистре сведений «Курсы валют» с измерением «Валюта» и ресурсами «Курс» и «Кратность». Периодичность регистра — в пределах дня, то есть для каждой валюты может быть несколько записей за день, но на практике обычно одна.
Открыть регистр можно через раздел «Администрирование» — «Обслуживание» — «Курсы валют» либо через «Все функции» — «Регистры сведений» — «Курсы валют». В списке видны дата, валюта, курс и кратность. Именно этот список и является источником для большинства способов выгрузки.
Обратите внимание на кратность: курс может быть указан не за 1 единицу валюты, а за 10, 100 или 1000 (например, для японской иены). При выгрузке и последующих расчётах в Excel это критично — итоговый курс считается как «Курс / Кратность».
Проверка актуальности курсов перед выгрузкой
Перед выгрузкой откройте список курсов и проверьте даты последних записей по нужным валютам. Если последняя запись старше текущей даты, сначала обновите курсы: в типовых конфигурациях это делается кнопкой «Загрузить курсы валют» в списке валют или регламентным заданием «Загрузка курсов валют».
Загрузка из интернета требует доступа к сервису ЦБ РФ (или РБК в старых версиях) с компьютера или сервера, где работает 1С. Если загрузка не выполняется — проверьте интернет-соединение, настройки прокси и не заблокирован ли доступ антивирусом или файрволом.
Если интернет-загрузка недоступна, курсы можно ввести вручную: откройте валюту, перейдите к курсам и добавьте запись с датой, курсом и кратностью. Ручной ввод допустим, но фиксируйте источник данных, чтобы при расхождениях было понятно, откуда взято значение.
Как проверить результат
Есть записи на текущую дату или последний рабочий день
Последняя запись старше нескольких дней — курсы устарели
Обе колонки заполнены для каждой строки
Пустые значения или кратность 0 — расчёты будут неверными
Совпадает с числом записей в регистре за выбранный период
Строк меньше — сработал отбор или ограничение вывода
Способ 1: выгрузка списка регистра в табличный документ
Самый простой способ, не требующий прав разработчика. Откройте регистр сведений «Курсы валют», установите отбор по валюте и периоду (меню «Ещё» — «Настроить список» или стандартная кнопка отбора). Затем через «Ещё» — «Вывести список» сформируйте табличный документ с нужными колонками.
Полученный табличный документ сохраните через «Файл» — «Сохранить как» в формате Excel (xlsx), листа Excel 97–2003, CSV или mxl. Формат CSV удобен для загрузки в другие программы, xlsx — для работы в Excel.
Ограничение способа: вывод списка может обрезаться при очень большом числе строк (в диалоге вывода есть ограничение количества строк — увеличьте его или снимите ограничение). Также вручную придётся повторять операцию при каждой новой выгрузке.
- 1Откройте «Все функции» — «Регистры сведений» — «Курсы валют»
- 2Установите отбор по валюте и периоду через «Настроить список»
- 3Через «Ещё» — «Вывести список» сформируйте табличный документ, отметив нужные колонки
- 4Сохраните табличный документ через «Файл» — «Сохранить как» в формате Excel или CSV
- 5Откройте файл и проверьте число строк и заполненность колонок «Курс» и «Кратность»
Способ 2: выгрузка через консоль запросов или отчёт
Если нужен гибкий отбор и произвольный состав полей, используйте консоль запросов (внешнюю обработку или встроенную в режиме тонкого клиента через «Все функции» — «Консоль запросов», если она есть в конфигурации). Запрос к регистру позволяет получить срез последних курсов или историю за период.
Пример запроса для получения курсов за период:
ВЫБРАТЬ
Курсы.Период КАК Дата,
Курсы.Валюта.Код КАК КодВалюты,
Курсы.Курс КАК Курс,
Курсы.Кратность КАК Кратность
ИЗ
РегистрСведений.КурсыВалют КАК Курсы
ГДЕ
Курсы.Период МЕЖДУ &НачалоПериода И &КонецПериода
УПОРЯДОЧИТЬ ПО
Курсы.Период
Результат запроса в консоли можно выгрузить в табличный документ и далее в Excel. Для среза последних курсов на дату используйте виртуальную таблицу РегистрСведений.КурсыВалют.СрезПоследних(&Дата) — она вернёт по одной актуальной записи на каждую валюту.
ВЫБРАТЬ Курсы.Валюта.Код КАК Код, Курсы.Курс КАК Курс, Курсы.Кратность КАК Кратность ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыСпособ 3: программная выгрузка обработкой
Для регулярной выгрузки (например, ежедневной отправки курсов в другую систему) пишется внешняя обработка или расширение. Логика проста: запрос к регистру, запись результата в файл CSV, XML, JSON или передача через веб-сервис.
Пример фрагмента кода для выгрузки в CSV:
Запрос = Новый Запрос(
"ВЫБРАТЬ Период, Валюта.Код КАК Код, Курс, Кратность
|ИЗ РегистрСведений.КурсыВалют
|ГДЕ Период = &Дата");
Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());
Выборка = Запрос.Выполнить().Выбрать();
Текст = Новый ТекстовыйДокумент;
Пока Выборка.Следующий() Цикл
Текст.ДобавитьСтроку(СтрШаблон("%1;%2;%3;%4",
Формат(Выборка.Период, "ДФ=yyyy-MM-dd"),
Выборка.Код,
Формат(Выборка.Курс, "ЧРД=.; ЧГ="),
Формат(Выборка.Кратность, "ЧГ=")));
КонецЦикла;
Текст.Записать("C:\temp\kursy.csv", КодировкаТекста.UTF8);
Обратите внимание на разделитель дробной части: в CSV для внешних систем обычно нужна точка, поэтому в форматной строке задан ЧРД=.. Также отключите группировку разрядов (ЧГ=), иначе в числа попадут пробелы.
Для автоматизации обработку подключают к регламентному заданию. Убедитесь, что у пользователя, от имени которого выполняется задание, есть права на чтение регистра и запись в каталог выгрузки.
Сравнение способов выгрузки
Сравнение вариантов
Быстро и без прав разработчика; подходит для разовой выгрузки. Ограничение — ручные действия и лимит строк при выводе.
Гибкий отбор, срез последних, любые поля. Требует наличия консоли и базового знания языка запросов.
Полная автоматизация и нужный формат файла. Требует разработки, тестирования и прав на выполнение.
Подходит для переноса курсов между базами 1С по правилам обмена. Избыточен для выгрузки в Excel.
Для разовой задачи «получить курсы в Excel» достаточно первого способа. Если выгрузка нужна регулярно или в строго заданном формате для внешней системы — оправдана разработка обработки с регламентным заданием.
Типичные ошибки при выгрузке курсов
Отдельная группа проблем — права доступа. Если пользователю недоступен регистр «Курсы валют», список откроется пустым без сообщения об ошибке. В этом случае запросите у администратора права на чтение регистра или попросите выполнить выгрузку пользователя с полными правами.
Выгрузка курсов в другую базу 1С
Если задача — перенести курсы из одной базы 1С в другую (например, из ERP в Бухгалтерию), используйте типовые механизмы синхронизации данных или обработку «Выгрузка и загрузка данных XML» (доступна в «Все функции» — «Обработки» в ряде конфигураций на БСП). Она выгружает данные регистра в XML с сохранением ссылок на валюты.
При переносе между базами важно, чтобы валюты в базе-приёмнике существовали и сопоставлялись по коду. Иначе записи регистра загрузятся с битыми ссылками или не загрузятся вовсе. Сначала синхронизируйте справочник «Валюты», затем — курсы.
Альтернатива — загрузка курсов в каждой базе независимо из интернета. Это проще и надёжнее: обе базы получают одинаковые данные из одного источника, и необходимость в переносе отпадает.
Что важно запомнить
Курсы хранятся в регистре сведений «Курсы валют» вместе с кратностью. Для разовой выгрузки достаточно вывода списка в табличный документ и сохранения в Excel, для регулярной — консоли запросов или обработки с регламентным заданием. Перед выгрузкой проверяйте актуальность курсов, после — число строк и корректность разделителей в файле.
Частые вопросы
Почему в списке курсов валют пусто, хотя курсы точно загружались?
Скорее всего, у текущего пользователя нет прав на чтение регистра сведений «Курсы валют» либо в списке установлен отбор, который отсекает все записи. Снимите отбор через «Ещё» — «Настроить список» и проверьте права с администратором. Также проверьте, что смотрите ту информационную базу — в клиент-серверном режиме легко подключиться не к той базе.
Как выгрузить курсы только на последнюю дату, а не всю историю?
Используйте запрос к виртуальной таблице «СрезПоследних» регистра сведений «Курсы валют» с параметром даты — он вернёт по одной актуальной записи на каждую валюту. В списке регистра можно поставить отбор «Период = нужная дата», но срез последних надёжнее: он покажет курс, действующий на дату, даже если запись была сделана раньше.
В каком формате лучше сохранять выгрузку для Excel?
Для работы в Excel удобнее всего сохранять табличный документ сразу в формате xlsx — сохранятся типы данных и не будет проблем с разделителями. CSV выбирайте, если файл будет загружаться в другую программу: он проще для машинной обработки, но требует контроля разделителя дробной части и кодировки (используйте UTF-8).
Можно ли выгружать курсы автоматически по расписанию?
Да. Создаётся внешняя обработка с кодом выгрузки в файл, которая подключается к регламентному заданию, либо используется фоновое задание с вызовом процедуры из общего модуля. Убедитесь, что задание выполняется под пользователем с правами на чтение регистра и запись в целевой каталог, и предусмотрите журналирование ошибок.
Что делать, если курсы в выгрузке отличаются от курсов ЦБ?
Проверьте кратность: для ряда валют курс хранится за 10, 100 или 1000 единиц, и после деления на кратность значение совпадёт с официальным. Если расхождение остаётся — проверьте дату записи (возможно, выгружен не тот период) и источник загрузки: в старых версиях конфигураций курсы могли загружаться с РБК, а не с сайта ЦБ, с округлением.
Как перенести курсы валют из 1С 7.7 в 1С 8?
В «семёрке» курсы хранятся как периодические реквизиты справочника «Валюты». Выгрузите их в текстовый файл или DBF через обработку, либо используйте типовые правила перехода с 7.7 на 8, которые переносят валюты вместе с историей курсов. В восьмёрке данные должны попасть в регистр сведений «Курсы валют» — после загрузки сверьте несколько дат с исходной базой.