При разработке или доработке конфигураций 1С часто возникает задача отслеживания происхождения данных. Одна из типичных задач звучит так: необходимо добавить в регистр сведений КурсыВалют объект, который будет показывать, откуда была получена информация о курсе валюты. Разберем эту задачу по шагам, проанализируем возможные архитектурные решения и выберем наиболее оптимальное.
Первый вопрос, с которым мы сталкиваемся: куда именно добавлять новое поле? В 1С у регистра сведений есть измерения, ресурсы и реквизиты. Рассмотрим два возможных варианта для хранения источника данных.
Добавление источника как Реквизита. Это наиболее безопасный и рекомендуемый путь. Если мы добавим поле Источник в качестве реквизита, то в регистре по-прежнему будет храниться только один актуальный курс на конкретную дату для конкретной валюты. Реквизит будет носить исключительно информационный характер, просто показывая, откуда именно пришло это значение (например, загружено автоматически или введено вручную). Этот способ никак не сломает типовые алгоритмы 1С при проведении документов.
Добавление источника как Измерения. Если мы сделаем источник измерением, то структура регистра кардинально изменится. Появится возможность на одну и ту же дату хранить сразу несколько разных курсов для одной и той же валюты (например, курс ЦБ РФ и параллельно курс коммерческого банка). Однако мы крайне не рекомендуем этот подход без крайней необходимости. Такое изменение нарушит работу всех типовых документов: при проведении система просто не поймет, какой из нескольких курсов брать для расчетов, и нам придется переписывать программный код проведения практически всей базы.
Теперь выясним, какой тип данных лучше всего подойдет для нашего нового реквизита. Пользователи форума предлагали строку, перечисление и справочник. Проанализируем каждый вариант.
ИсточникиКурсовВалют. Это позволит обычным пользователям самостоятельно пополнять список источников в режиме «Предприятие» без малейшего участия разработчика.В итоге, мы создаем новый реквизит в регистре сведений КурсыВалют, называем его Источник и назначаем ему тип СправочникСсылка.ИсточникиКурсовВалют.
Давайте посмотрим, какие элементы мы можем сразу предопределить или добавить в наш новый справочник в качестве базовых значений. Откуда вообще в 1С появляются курсы?
Стоит также отметить, что если пользователю просто нужно иногда узнавать, кто именно ввел курс, можно обойтись и без доработки конфигурации. Мы можем использовать типовой ЖурналРегистрации.
Проанализируем записи в журнале: если курс был загружен автоматически, автором создания записи будет служить системный пользователь (например, DefUser) или фоновое регламентное задание. Если курс вбили руками — там будет указана конкретная фамилия пользователя. Тем не менее, для удобного, наглядного вывода этой информации прямо в форму списка курсов или в специализированные отчеты, добавление нового реквизита Источник является наиболее правильным и элегантным решением.
Мы успешно разобрали задачу добавления информации об источнике курсов валют. Применяйте справочники для гибкости и добавляйте новые поля в качестве реквизитов регистра, чтобы не нарушать типовую логику системы!