Где в 1С:Бухгалтерия 3.0 найти ставку рефинансирования и как получить ее программно?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Налоговый учет IT и автоматизация бизнеса
← На главную

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

Почему исчез регистр сведений?

Ранее в конфигурации существовал регистр сведений, который хранил историю изменений ставки рефинансирования. Однако, начиная с определенных релизов, разработчики 1С отказались от хранения этих данных в виде отдельного регистра в типовой конфигурации. Это связано с тем, что информация о ключевой ставке является динамической, и для обеспечения ее актуальности наиболее надежным способом признано использование внешних источников — официальных веб-сервисов Банка России.

Решение проблемы: использование веб-сервиса ЦБ РФ

Наиболее эффективным и профессиональным подходом является использование методов веб-сервиса DailyInfo, предоставляемого Банком России. Это позволяет получать данные напрямую от регулятора без необходимости ручного обновления констант или регистра в программе.

Рассмотрим пошагово, как реализовать получение текущей ставки рефинансирования с помощью кода 1С:

Шаг 1: Подключение к веб-сервису

Для работы с сервисом нам потребуется объект WSОпределения и WSПрокси. Мы будем обращаться к методу MainInfoXML, который возвращает актуальные ключевые показатели.


Функция ПолучитьТекущуюСтавку()
    Определения = Новый WSОпределения("http://www.cbr.ru/DailyInfoWeb/DailyInfo.asmx?WSDL");
    Прокси = Новый WSПрокси(Определения, "http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap");
    
    ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://web.cbr.ru/").Получить("MainInfoXML");
    WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
    
    РезультатXDTO = Прокси.MainInfoXML(WSПараметр);
    
    // Извлекаем значение ставки
    Ставка = РезультатXDTO.MainInfoXMLResult.RegData.stavka_ref;
    Возврат Ставка;
КонецФункции

Шаг 2: Получение истории ставок за период

Если ваша задача — получить ставку на конкретную дату или в диапазоне дат (например, для расчета пеней за определенный период), воспользуйтесь методом KeyRate. Это позволит получить всю историю изменений в заданном интервале.


Процедура ПолучитьИсториюСтавок(ДатаНачала, ДатаКонца)
    Определения = Новый WSОпределения("http://www.cbr.ru/DailyInfoWeb/DailyInfo.asmx?WSDL");
    Прокси = Новый WSПрокси(Определения, "http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap");
    
    ТипПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://web.cbr.ru/").Получить("KeyRate");
    Параметры = Прокси.ФабрикаXDTO.Создать(ТипПараметра);
    
    Параметры.FromDate = ДатаНачала;
    Параметры.ToDate = ДатаКонца;
    
    РезультатXDTO = Прокси.KeyRate(Параметры);
    
    // Перебор полученных данных
    Для Каждого СтрокаТаблицы Из РезультатXDTO.KeyRateResult.diffgram.KeyRate.KR Цикл
        Сообщить("Дата: " + СтрокаТаблицы.Date + ", Ставка: " + СтрокаТаблицы.Rate);
    КонецЦикла;
КонецПроцедуры

Важные рекомендации при разработке

При интеграции данного кода в ваши отчеты или обработки, обязательно учитывайте следующие аспекты:

  1. Обработка ошибок: Все вызовы внешних веб-сервисов должны быть обернуты в конструкцию Попытка...Исключение. Внешний ресурс может быть недоступен из-за проблем с сетью или регламентных работ на стороне ЦБ.
  2. Кэширование данных: Не рекомендуется обращаться к веб-сервису при каждом вычислении в цикле. Лучше один раз получить данные в массив или таблицу значений при старте формирования отчета, а затем использовать эти локальные данные.
  3. Приведение типов: Помните, что веб-сервис возвращает данные в формате XML. При получении значения Rate, обязательно приводите его к числу для проведения дальнейших математических операций, например, через функцию Число().

Таким образом, использование веб-сервиса — это современный стандарт работы с данными Банка России, который обеспечивает точность и актуальность ваших финансовых отчетов в 1С:Бухгалтерия 3.0.

← На главную