Почему изменения в схеме СКД не отображаются в режиме 1С:Предприятие и как это исправить?

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

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

Выясняем причину: почему встроенный отчет «не видит» изменений?

Проблема кроется в механизмах оптимизации платформы «1С:Предприятие 8». Когда мы запускаем встроенный отчет, система пытается ускорить работу, используя кэшированные данные. Эти данные могут храниться в нескольких местах:

  1. Локальный кэш конфигурации на компьютере разработчика или пользователя.
  2. Хранилище общих настроек (SystemSettingsStorage), где хранятся пользовательские настройки вариантов отчетов.
  3. Справочники Библиотеки стандартных подсистем (БСП), если конфигурация построена на её основе.

Ситуация, когда внешняя копия отчета работает, а встроенная — нет, однозначно указывает на то, что платформа «привязала» старую структуру схемы к идентификатору встроенного объекта и отказывается её обновлять, считая, что ничего не изменилось. Проанализируем основные методы борьбы с этим «упрямством» системы.

Способ 1. Принудительное обновление метаданных через переименование

Как показывает практика и обсуждение в сообществе, это самый быстрый и эффективный «танец с бубном». Суть метода заключается в том, чтобы заставить платформу считать отчет абсолютно новым объектом.

  1. Зайдем в конфигуратор и откроем свойства нашего отчета.
  2. Изменим его Имя (например, добавим единицу в конце: ПродажиПоСкладам -> ПродажиПоСкладам1).
  3. Обновим конфигурацию базы данных (F7).
  4. Запустим предприятие и проверим результат. Если поле появилось — значит, проблема была в кэше метаданных.
  5. После этого можно вернуть отчету исходное имя. В большинстве случаев после обратного переименования кэш обновляется корректно.

Способ 2. Очистка кэша пользовательских настроек

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

Попробуем выполнить программную очистку настроек. Для этого можно воспользоваться специальными обработками по очистке кэша или выполнить короткий код в консоли кода:


ИмяНужногоОтчета = "Отчет.ИмяВашегоОтчета";
ХранилищеОбщихНастроек.Удалить("Общее/НастройкиОтчета/" + ИмяНужногоОтчета, "", "");
ХранилищеВариантовОтчетов.Удалить(ИмяНужногоОтчета, "", "");

Этот код очистит записи в системных таблицах, которые мешают корректному отображению новой структуры СКД.

Способ 3. Обновление через справочник «Варианты отчетов» (для конфигураций на БСП)

Если ваша конфигурация использует БСП (например, 1С:ERP, 1С:УТ 11, 1С:Бухгалтерия 3.0), то информация о настройках отчетов дублируется в справочнике Варианты отчетов. Платформа берет структуру доступных полей именно оттуда.

Разберем алгоритм действий:

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

Способ 4. Проверка функциональных опций и прав доступа

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

Проанализируем вкладку «Наборы данных» в схеме компоновки:

Способ 5. Перезагрузка схемы через XML

Иногда внутренний идентификатор схемы (UUID) в конфигураторе «залипает». В этом случае помогает полная перезаливка структуры схемы компоновки данных.

Рассмотрим шаги выполнения:

  1. Откроем схему СКД в конфигураторе.
  2. Нажмем кнопку «Сохранить схему в файл» (дискета) и выгрузим её в формате .xml.
  3. Удалим текущую схему из отчета (нажмем «Х» в строке выбора основной схемы компоновки).
  4. Сохраним конфигурацию (F7).
  5. Создадим новую схему и загрузим её из ранее сохраненного файла .xml.

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

Заключение

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

← На главную