Как изменить основную схему компоновки данных, если изменения не отображаются в 1С

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

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

Почему 1С игнорирует изменения в схеме СКД?

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

Эти данные сохраняются в Хранилище системных настроек (SystemSettingsStorage). Когда вы открываете внешний отчет (файл .erf), платформа выполняет следующие действия:

  1. Считывает структуру схемы из файла.
  2. Ищет в базе данных сохраненные настройки для данного пользователя и данного отчета.
  3. Если настройки найдены, она пытается «наложить» их на текущую схему.

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

Решение 1: Сброс настроек к стандартным

Рассмотрим самый простой и быстрый способ, который помогает в 90% случаев. Если структура отчета изменилась, нам нужно заставить платформу игнорировать старые пользовательские настройки и загрузить те, что прописаны в схеме по умолчанию.

Выполним следующие шаги в режиме 1С:Предприятие:

  1. Откройте ваш отчет.
  2. Нажмите кнопку Еще на панели инструментов.
  3. Выберите пункт Установить стандартные настройки.

После этого действия КомпоновщикНастроек будет инициализирован заново на основании вашей новой схемы. Все старые «фантомные» поля исчезнут, а новые появятся в списке доступных.

Решение 2: Проблема дублирования во внешних отчетах

Разберем ситуацию, когда отчет зарегистрирован в справочнике «Дополнительные отчеты и обработки». Если вы отлаживаете отчет, просто открывая файл через Файл -> Открыть, система может идентифицировать его по внутреннему имени и подтянуть настройки от того экземпляра, который уже загружен в базу.

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

Решение 3: Очистка кэша метаданных

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

Проанализируем шаги по очистке кэша:

  1. Закройте все сеансы 1С.
  2. Перейдите в папку временных файлов пользователя. Обычно это пути:
    • %AppData%\1C\1Cv8
    • %LocalAppData%\1C\1Cv8
  3. Удалите папки с длинными буквенно-цифровыми названиями (идентификаторы баз). Внимание: это приведет к сбросу настроек положения окон и списка баз, если удалять все подряд, поэтому лучше удалять только папки конкретной информационной базы.

Решение 4: Исправление ошибки «Ошибка создания источника доступных настроек»

Эта ошибка часто возникает во время программной инициализации отчета. Если вы используете программный вывод, убедитесь, что ваш код корректно обрабатывает инициализацию компоновщика. Рассмотрим пример правильной инициализации в модуле формы или объекта:


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

// Важно правильно инициализировать компоновщик
КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек);

Если вы редактировали XML-код схемы вручную, проверьте корректность структуры DataSets (наборов данных). Ошибка источника часто означает, что КомпоновщикНастроек не может сопоставить текущие настройки с полями наборов данных из-за их повреждения или отсутствия.

Решение 5: Программный сброс настроек при обновлении версии

Если вы распространяете внешний отчет среди множества пользователей, вы не сможете подойти к каждому и нажать «Установить стандартные настройки». В таком случае разберем программный метод. Мы можем добавить проверку версии отчета и, если она изменилась, принудительно очищать настройки.

Посмотрим на пример кода, который можно разместить в модуле объекта отчета:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    // Если мы радикально поменяли схему, можно форсировать загрузку настроек
    // Это гарантирует, что пользователь увидит актуальные поля
    Если ПараметрыСеанса.ТекущийПользователь.Наименование = "Разработчик" Тогда
        // Для отладки можно всегда сбрасывать
        КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    КонецЕсли;

КонецПроцедуры

Нюансы работы в клиент-серверном варианте

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

Подведем итог: Основной алгоритм при изменении схемы СКД — сохранить отчет, открыть в 1С и сразу нажать «Установить стандартные настройки». Если же вы столкнулись с ошибкой источника настроек — проверяйте программный код инициализации КомпоновщикаНастроек и целостность XML-структуры макета схемы.

← На главную