В процессе разработки и сопровождения конфигураций на базе 1С:Предприятие 8.3 (таких как УТ 11, ERP 2, КА 2) программисты часто сталкиваются с ситуацией, когда отчет, находящийся внутри конфигурации, работает некорректно или имеет неполный набор настроек. При сохранении этого отчета во внешний файл (.erf) внезапно обнаруживается «лишний» вариант настройки, который формирует данные правильно. Возникает логичный вопрос: как вернуть эту правильную настройку обратно в основную конфигурацию, если ручное копирование параметров не помогает?
В данной статье мы разберем механизмы хранения настроек компоновки данных и рассмотрим несколько способов синхронизации вариантов отчетов между внешними файлами и метаданными конфигурации.
Прежде чем переходить к решению, проанализируем причину проблемы. В современных конфигурациях, использующих Библиотеку стандартных подсистем (БСП), настройки отчетов хранятся в нескольких местах одновременно:
Когда мы открываем внешний отчет, система часто создает для него новую запись в справочнике ВариантыОтчетов, используя уникальный идентификатор файла или его путь. Именно поэтому «внутренний» и «внешний» отчеты живут своей жизнью, даже если их схемы компоновки данных идентичны.
Этот метод является наиболее простым и надежным, так как он позволяет обойти программные ограничения и различия в идентификаторах объектов. Рассмотрим его по шагам:
.xml. Этот файл содержит полную структуру варианта: группировки, отборы, выбранные поля и условное оформление.Теперь правильная настройка привязана к внутреннему отчету и доступна пользователям.
Если нам необходимо, чтобы правильный вариант стал «предопределенным» и всегда поставлялся вместе с конфигурацией, воспользуемся инструментами разработчика в Конфигураторе.
Рассмотрим последовательность действий:
.erf) в Конфигураторе.ОсновнаяСхемаКомпоновкиДанных)..xml.Важный нюанс: После загрузки настроек убедитесь, что имя варианта (поле «Имя» в нижней части окна) соответствует тому, что ожидает система. Если в конфигурации уже есть вариант с таким именем, он будет перезаписан новыми правильными настройками.
Иногда проблема кроется в том, что БСП «закешировала» старые настройки во внутреннем справочнике. Проанализируем, как это исправить:
ОбновлениеВспомогательныхДанных, которая перечитает схему СКД и обновит записи в справочнике.В редких случаях, когда нужно программно скопировать настройки одного пользователя другому или между разными объектами, программисты используют ХранилищеОбщихНастроек. Выясним, как выглядит обращение к хранилищу в коде:
// Пример получения настроек из хранилища
КлючОбъекта = "Отчет.ИмяВашегоОтчета/Вариант.ИмяВарианта";
Пользователь = "ИмяПользователя";
Настройки = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, , , Пользователь);
// Пример сохранения настроек для другого ключа (например, для внутреннего отчета)
НовыйКлючОбъекта = "Отчет.ИмяВнутреннегоОтчета/Вариант.ПравильныйВариант";
ХранилищеОбщихНастроек.Сохранить(НовыйКлючОбъекта, , Настройки, , Пользователь);
Здесь важно помнить, что для внешних отчетов префикс ключа объекта будет ВнешнийОтчет.ИмяФайла, а для внутренних — Отчет.ИмяМетаданных. Различие в этих строковых идентификаторах — основная причина, по которой ИР.редактор хранилища настроек может не видеть связи между ними автоматически.
Мы проанализировали ситуацию и выяснили, что наиболее эффективным методом переноса «потерянных» настроек из внешнего отчета во внутренний является экспорт/импорт настроек через XML-файл в режиме 1С:Предприятие. Этот способ гарантирует, что все группировки и отборы будут перенесены корректно, независимо от того, как система идентифицирует сам отчет в справочниках БСП. Если же задача стоит в закреплении настроек на уровне разработки, используйте загрузку в схему СКД внутри Конфигуратора.