Как добавить информацию об источнике загрузки в регистр сведений «Курсы валют» в 1С?

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

При разработке или доработке конфигураций 1С часто возникает задача отслеживания происхождения данных. Одна из типичных задач звучит так: необходимо добавить в регистр сведений КурсыВалют объект, который будет показывать, откуда была получена информация о курсе валюты. Разберем эту задачу по шагам, проанализируем возможные архитектурные решения и выберем наиболее оптимальное.

Шаг 1. Архитектурный выбор: Реквизит или Измерение регистра?

Первый вопрос, с которым мы сталкиваемся: куда именно добавлять новое поле? В 1С у регистра сведений есть измерения, ресурсы и реквизиты. Рассмотрим два возможных варианта для хранения источника данных.

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

Добавление источника как Измерения. Если мы сделаем источник измерением, то структура регистра кардинально изменится. Появится возможность на одну и ту же дату хранить сразу несколько разных курсов для одной и той же валюты (например, курс ЦБ РФ и параллельно курс коммерческого банка). Однако мы крайне не рекомендуем этот подход без крайней необходимости. Такое изменение нарушит работу всех типовых документов: при проведении система просто не поймет, какой из нескольких курсов брать для расчетов, и нам придется переписывать программный код проведения практически всей базы.

Шаг 2. Оптимальный тип данных для источника

Теперь выясним, какой тип данных лучше всего подойдет для нашего нового реквизита. Пользователи форума предлагали строку, перечисление и справочник. Проанализируем каждый вариант.

  1. Строка. Самый простой, но самый ненадежный вариант. Использование строки неизбежно приведет к пересортице и опечаткам. Один пользователь напишет «ЦБ», другой «Центробанк», третий «цб рф». В итоге мы не сможем собрать нормальную статистику или построить красивый отчет по источникам.
  2. Перечисление. На первый взгляд, логичный выбор. Мы можем задать значения программно. Но перечисления жестко задаются в конфигураторе. Если завтра бухгалтерия решит брать курс с нового сайта, программисту придется снимать базу с поддержки, добавлять новое значение и обновлять конфигурацию. Это неудобно.
  3. Справочник. Лучшая практика в 1С для подобных задач — создание отдельного справочника, например, ИсточникиКурсовВалют. Это позволит обычным пользователям самостоятельно пополнять список источников в режиме «Предприятие» без малейшего участия разработчика.

В итоге, мы создаем новый реквизит в регистре сведений КурсыВалют, называем его Источник и назначаем ему тип СправочникСсылка.ИсточникиКурсовВалют.

Шаг 3. Какие значения могут быть источниками курсов валют?

Давайте посмотрим, какие элементы мы можем сразу предопределить или добавить в наш новый справочник в качестве базовых значений. Откуда вообще в 1С появляются курсы?

Шаг 4. Системная альтернатива (Журнал регистрации)

Стоит также отметить, что если пользователю просто нужно иногда узнавать, кто именно ввел курс, можно обойтись и без доработки конфигурации. Мы можем использовать типовой ЖурналРегистрации.

Проанализируем записи в журнале: если курс был загружен автоматически, автором создания записи будет служить системный пользователь (например, DefUser) или фоновое регламентное задание. Если курс вбили руками — там будет указана конкретная фамилия пользователя. Тем не менее, для удобного, наглядного вывода этой информации прямо в форму списка курсов или в специализированные отчеты, добавление нового реквизита Источник является наиболее правильным и элегантным решением.

Мы успешно разобрали задачу добавления информации об источнике курсов валют. Применяйте справочники для гибкости и добавляйте новые поля в качестве реквизитов регистра, чтобы не нарушать типовую логику системы!

← На главную