В процессе разработки отчетов или механизмов автоматического расчета в 1С:Бухгалтерия предприятия 3.0 многие разработчики сталкиваются с тем, что классический регистр сведений, хранящий ставку рефинансирования (ключевую ставку), отсутствует в последних релизах конфигурации. Давайте разберемся, почему так произошло и как правильно получать эти данные в современных реалиях разработки.
Ранее в конфигурации существовал регистр сведений, который хранил историю изменений ставки рефинансирования. Однако, начиная с определенных релизов, разработчики 1С отказались от хранения этих данных в виде отдельного регистра в типовой конфигурации. Это связано с тем, что информация о ключевой ставке является динамической, и для обеспечения ее актуальности наиболее надежным способом признано использование внешних источников — официальных веб-сервисов Банка России.
Наиболее эффективным и профессиональным подходом является использование методов веб-сервиса DailyInfo, предоставляемого Банком России. Это позволяет получать данные напрямую от регулятора без необходимости ручного обновления констант или регистра в программе.
Рассмотрим пошагово, как реализовать получение текущей ставки рефинансирования с помощью кода 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;
Возврат Ставка;
КонецФункции
Если ваша задача — получить ставку на конкретную дату или в диапазоне дат (например, для расчета пеней за определенный период), воспользуйтесь методом 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);
КонецЦикла;
КонецПроцедуры
При интеграции данного кода в ваши отчеты или обработки, обязательно учитывайте следующие аспекты:
Попытка...Исключение. Внешний ресурс может быть недоступен из-за проблем с сетью или регламентных работ на стороне ЦБ.Rate, обязательно приводите его к числу для проведения дальнейших математических операций, например, через функцию Число().Таким образом, использование веб-сервиса — это современный стандарт работы с данными Банка России, который обеспечивает точность и актуальность ваших финансовых отчетов в 1С:Бухгалтерия 3.0.