Как перенести настройки из внешнего отчета во внутренний отчет конфигурации 1С

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

В процессе разработки и сопровождения конфигураций на базе 1С:Предприятие 8.3 (таких как УТ 11, ERP 2, КА 2) программисты часто сталкиваются с ситуацией, когда отчет, находящийся внутри конфигурации, работает некорректно или имеет неполный набор настроек. При сохранении этого отчета во внешний файл (.erf) внезапно обнаруживается «лишний» вариант настройки, который формирует данные правильно. Возникает логичный вопрос: как вернуть эту правильную настройку обратно в основную конфигурацию, если ручное копирование параметров не помогает?

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

Почему возникают различия в настройках?

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

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

Когда мы открываем внешний отчет, система часто создает для него новую запись в справочнике ВариантыОтчетов, используя уникальный идентификатор файла или его путь. Именно поэтому «внутренний» и «внешний» отчеты живут своей жизнью, даже если их схемы компоновки данных идентичны.

Способ 1: Перенос через XML-файл настроек в режиме 1С:Предприятие

Этот метод является наиболее простым и надежным, так как он позволяет обойти программные ограничения и различия в идентификаторах объектов. Рассмотрим его по шагам:

  1. Запустим 1С:Предприятие и откроем внешний отчет (тот самый, где 5-й вариант работает правильно).
  2. Выберем нужный вариант отчета и нажмем кнопку «Настройки».
  3. Перейдем в «Расширенный режим» настройки отчета.
  4. Нажмем кнопку «Еще» в верхней части окна настроек и выберем пункт «Сохранить настройки в файл...».
  5. Система предложит сохранить файл с расширением .xml. Этот файл содержит полную структуру варианта: группировки, отборы, выбранные поля и условное оформление.
  6. Закроем внешний отчет и откроем тот же отчет, но уже встроенный в конфигурацию.
  7. Снова зайдем в «Настройки» -> «Расширенный».
  8. Нажмем «Еще» -> «Загрузить настройки из файла...» и выберем наш сохраненный XML-файл.
  9. Нажмем «Завершить редактирование» и сохраним вариант (кнопка «Варианты отчета» -> «Сохранить как...»). Для автоматизации этой последовательности действий при работе с большим количеством отчетов можно настроить платформу RPA для роботизации действий пользователя в интерфейсе.

Теперь правильная настройка привязана к внутреннему отчету и доступна пользователям.

Способ 2: Загрузка настроек в схему СКД через Конфигуратор

Если нам необходимо, чтобы правильный вариант стал «предопределенным» и всегда поставлялся вместе с конфигурацией, воспользуемся инструментами разработчика в Конфигураторе.

Рассмотрим последовательность действий:

  1. Откроем внешний отчет (.erf) в Конфигураторе.
  2. Зайдем в основную схему компоновки данных (обычно макет ОсновнаяСхемаКомпоновкиДанных).
  3. Перейдем на самую последнюю вкладку — «Настройки».
  4. В верхней панели окна настроек (там, где список вариантов) выберем нужный вариант.
  5. Найдем кнопку «Сохранить настройки в файл» (иконка с изображением дискеты именно в панели управления вариантами СКД, а не на общей панели инструментов). Сохраним настройки в формате .xml.
  6. Теперь откроем дерево метаданных конфигурации, найдем наш внутренний отчет и откроем его схему СКД.
  7. Перейдем на вкладку «Настройки».
  8. Нажмем кнопку «Загрузить настройки из файла» (иконка папки) и выберем созданный ранее XML-файл. Если требуется миграция не только настроек, но и объектов учета между базами с несовпадающими идентификаторами, используется перенос данных между похожими конфигурациями 1С по полям поиска.

Важный нюанс: После загрузки настроек убедитесь, что имя варианта (поле «Имя» в нижней части окна) соответствует тому, что ожидает система. Если в конфигурации уже есть вариант с таким именем, он будет перезаписан новыми правильными настройками.

Способ 3: Работа со справочником «Варианты отчетов»

Иногда проблема кроется в том, что БСП «закешировала» старые настройки во внутреннем справочнике. Проанализируем, как это исправить:

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

Программный перенос настроек

В редких случаях, когда нужно программно скопировать настройки одного пользователя другому или между разными объектами, программисты используют ХранилищеОбщихНастроек. Выясним, как выглядит обращение к хранилищу в коде:


// Пример получения настроек из хранилища
КлючОбъекта = "Отчет.ИмяВашегоОтчета/Вариант.ИмяВарианта";
Пользователь = "ИмяПользователя";
Настройки = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, , , Пользователь);

// Пример сохранения настроек для другого ключа (например, для внутреннего отчета)
НовыйКлючОбъекта = "Отчет.ИмяВнутреннегоОтчета/Вариант.ПравильныйВариант";
ХранилищеОбщихНастроек.Сохранить(НовыйКлючОбъекта, , Настройки, , Пользователь);

Здесь важно помнить, что для внешних отчетов префикс ключа объекта будет ВнешнийОтчет.ИмяФайла, а для внутренних — Отчет.ИмяМетаданных. Различие в этих строковых идентификаторах — основная причина, по которой ИР.редактор хранилища настроек может не видеть связи между ними автоматически.

Резюме

Мы проанализировали ситуацию и выяснили, что наиболее эффективным методом переноса «потерянных» настроек из внешнего отчета во внутренний является экспорт/импорт настроек через XML-файл в режиме 1С:Предприятие. Этот способ гарантирует, что все группировки и отборы будут перенесены корректно, независимо от того, как система идентифицирует сам отчет в справочниках БСП. Если же задача стоит в закреплении настроек на уровне разработки, используйте загрузку в схему СКД внутри Конфигуратора.

← На главную