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

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

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

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

Причина 1. Неправильный тип заполнения ячейки в макете СКД

Проанализируем ситуацию, когда вы заменяете обычный текст в шапке таблицы на шаблон с параметром (например, текст "Период отчета" заменяете на конструкцию "Период отчета: [ДатаОтчета]"). Часто разработчики забывают изменить технические свойства самой ячейки в конструкторе макетов СКД.

По умолчанию для любой ячейки табличного документа в СКД установлен тип заполнения «Текст». Если вы просто напишете выражение в квадратных скобках, платформа продолжит воспринимать его как обычную текстовую строку. В пользовательском режиме вы увидите либо старый текст, либо буквально строку "Период отчета: [ДатаОтчета]" без подстановки реального значения.

Решение проблемы:

  1. Перейдите на вкладку «Макеты» в конструкторе схемы компоновки данных.
  2. Выделите ячейку, в которой вы настроили вывод параметра.
  3. Откройте палитру свойств этой ячейки (клавиша F4).
  4. Найдите свойство «Тип заполнения» (Fill Type) и принудительно измените его значение с Текст на Шаблон.

Только после этого СКД поймет, что текст в квадратных скобках является параметром, значение которого нужно вычислить и подставить при формировании отчета.

Причина 2. Кэширование внешних отчетов платформой 1С

Если вы разрабатываете или отлаживаете внешний отчет (файл с расширением .erf), платформа 1С:Предприятие может преподнести неприятный сюрприз в виде жесткого кэширования временных файлов.

Когда вы открываете внешний отчет через меню Файл — Открыть, платформа компилирует его и сохраняет копию во временной директории операционной системы (обычно это папки в каталогах %TEMP%\1cv8 или %LOCALAPPDATA%\1C\1cv8). При последующих открытиях файла, даже если вы перезаписали его на диске, 1С может проигнорировать новую версию и запустить отчет из локального кэша.

Разберем методы борьбы с кэшированием файлов:

  1. Изменение идентификатора объекта. Это самый надежный способ «обмануть» кэш. Откройте внешний отчет в конфигураторе, перейдите в его свойства и измените значение в поле «Имя» (внутренний идентификатор метаданных). Например, замените ОстаткиТоваров на ОстаткиТоваров_Отладка. Сохраните файл. Платформа воспримет этот отчет как совершенно новый и загрузит актуальную схему СКД.
  2. Очистка временных файлов. Полностью закройте сеансы «1С:Предприятие» и Конфигуратора. Перейдите в каталог временных файлов вашего пользователя в Windows и вручную удалите все папки, начинающиеся на 1cv8.

Причина 3. Конфликт с механизмами Библиотеки стандартных подсистем (БСП)

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

Рассмотрим подробнее два сценария конфликта с БСП:

А. Регистр «Пользовательские макеты печати»

БСП позволяет пользователям редактировать макеты отчетов и печатных форм прямо в режиме «1С:Предприятие» без использования конфигуратора (раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм). Если ранее кто-то из пользователей отредактировал этот макет вручную, система создала индивидуальную копию макета в регистре сведений ПользовательскиеМакетыПечати.

Пока эта запись существует, программа будет выводить исключительно сохраненную пользовательскую версию макета, полностью игнорируя любые изменения программного кода и схем СКД.

Как вернуть стандартный макет:

  1. Перейдите в раздел Администрирование — Печатные формы, отчеты и обработки.
  2. Откройте гиперссылку Макеты печатных форм.
  3. Найдите в списке ваш отчет. Если рядом с ним отображается значок зеленого карандаша, значит, для него используется измененный макет.
  4. Выделите строку с отчетом и нажмите на панели кнопку Использовать стандартный макет (или удалите измененный макет).

Б. Справочник «Дополнительные отчеты и обработки»

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

Решение: На время разработки и тестирования измените внутреннее имя отчета в конфигураторе либо временно отключите (приостановите публикацию) отчет в справочнике дополнительных отчетов и обработок.

Причина 4. Кэширование настроек в хранилище (SystemSettingsStorage)

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

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

Как гарантированно обойти кэш настроек программно:

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


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

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

Причина 5. Нарушение связи между настройками и макетами в СКД

На вкладке «Макеты» в конструкторе СКД все области табличного документа жестко привязываются к конкретным группировкам отчета. Эта привязка осуществляется по имени группировки.

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

Что необходимо проверить:

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

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

← На главную