Каждый разработчик 1С рано или поздно сталкивается с загадочной ситуацией: в конфигураторе вносятся изменения в схему компоновки данных (СКД) — правится макет, переименовываются шапки таблиц, добавляются параметры, но при запуске отчета в режиме «1С:Предприятие» все остается по-старому. Пользователь видит прежнюю форму, старые заголовки и неактуальный дизайн.
Эта проблема особенно актуальна при работе с макетами оформления, когда статичный текст в шапке таблицы заменяется на шаблон для динамического вывода параметров (например, даты отчета или ответственного лица). Разберем по шагам, почему платформа игнорирует ваши изменения в конфигураторе, и выясним конкретные причины этой проблемы, а также способы их решения.
Проанализируем ситуацию, когда вы заменяете обычный текст в шапке таблицы на шаблон с параметром (например, текст "Период отчета" заменяете на конструкцию "Период отчета: [ДатаОтчета]"). Часто разработчики забывают изменить технические свойства самой ячейки в конструкторе макетов СКД.
По умолчанию для любой ячейки табличного документа в СКД установлен тип заполнения «Текст». Если вы просто напишете выражение в квадратных скобках, платформа продолжит воспринимать его как обычную текстовую строку. В пользовательском режиме вы увидите либо старый текст, либо буквально строку "Период отчета: [ДатаОтчета]" без подстановки реального значения.
Решение проблемы:
Текст на Шаблон.Только после этого СКД поймет, что текст в квадратных скобках является параметром, значение которого нужно вычислить и подставить при формировании отчета.
Если вы разрабатываете или отлаживаете внешний отчет (файл с расширением .erf), платформа 1С:Предприятие может преподнести неприятный сюрприз в виде жесткого кэширования временных файлов.
Когда вы открываете внешний отчет через меню Файл — Открыть, платформа компилирует его и сохраняет копию во временной директории операционной системы (обычно это папки в каталогах %TEMP%\1cv8 или %LOCALAPPDATA%\1C\1cv8). При последующих открытиях файла, даже если вы перезаписали его на диске, 1С может проигнорировать новую версию и запустить отчет из локального кэша.
Разберем методы борьбы с кэшированием файлов:
ОстаткиТоваров на ОстаткиТоваров_Отладка. Сохраните файл. Платформа воспримет этот отчет как совершенно новый и загрузит актуальную схему СКД.1cv8.В современных конфигурациях, построенных на базе БСП (например, «1С:Бухгалтерия», «1С:ERP», «1С:Управление торговлей»), работают мощные механизмы кастомизации печатных форм и отчетов. Эти механизмы имеют наивысший приоритет над тем, что написано в конфигураторе.
Рассмотрим подробнее два сценария конфликта с БСП:
БСП позволяет пользователям редактировать макеты отчетов и печатных форм прямо в режиме «1С:Предприятие» без использования конфигуратора (раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм). Если ранее кто-то из пользователей отредактировал этот макет вручную, система создала индивидуальную копию макета в регистре сведений ПользовательскиеМакетыПечати.
Пока эта запись существует, программа будет выводить исключительно сохраненную пользовательскую версию макета, полностью игнорируя любые изменения программного кода и схем СКД.
Как вернуть стандартный макет:
Если отчет уже зарегистрирован в базе данных как дополнительный (внешний) отчет, то при попытке открыть локальный файл .erf через меню Файл — Открыть БСП может перехватить этот вызов. Вместо локального файла система запустит двоичные данные отчета, которые хранятся непосредственно в справочнике информационной базы.
Решение: На время разработки и тестирования измените внутреннее имя отчета в конфигураторе либо временно отключите (приостановите публикацию) отчет в справочнике дополнительных отчетов и обработок.
Платформа автоматически сохраняет настройки компоновки данных для каждого пользователя. В системных таблицах базы данных кэшируются не только выбранные поля и отборы, но и структура выводимых группировок, оформление и заголовки.
Когда вы запускаете отчет, система считывает настройки из хранилища и накладывает их поверх вашей новой схемы СКД. Из-за этого старая структура макета продолжает отображаться на экране. При этом стандартная кнопка «Установить стандартные настройки» в режиме Предприятия помогает далеко не всегда, так как она сбрасывает только видимые пользователю параметры СКД, но не очищает кэш оформления интерфейса.
Как гарантированно обойти кэш настроек программно:
Посмотрим на пример решения этой проблемы через модуль объекта отчета. Мы можем принудительно инициализировать компоновщик настроек актуальными данными из схемы при каждом формировании. Для этого откройте модуль вашего отчета и найдите предопределенное событие ПриКомпоновкеРезультата. Запишем в него следующий код:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Принудительно загружаем настройки по умолчанию из нашей актуальной схемы СКД
НовыеНастройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
КомпоновщикНастроек.ЗагрузитьНастройки(НовыеНастройки);
КонецПроцедуры
Этот код гарантирует, что при каждом формировании отчета платформа будет обращаться непосредственно к макету и настройкам, описанным в конфигураторе, полностью игнорируя сохраненный пользовательский кэш.
На вкладке «Макеты» в конструкторе СКД все области табличного документа жестко привязываются к конкретным группировкам отчета. Эта привязка осуществляется по имени группировки.
Если на вкладке «Настройки» вы изменили структуру отчета (например, переименовали группировку, добавили новое поле в иерархию или удалили старую детальную запись), то связь макета с настройками мгновенно «ломается». Макет перестает ассоциироваться с выводимыми данными, и платформа автоматически переключается на стандартный (системный) механизм отрисовки таблиц, игнорируя ваш красивый макет.
Что необходимо проверить:
Применяя эти шаги последовательно, вы сможете быстро диагностировать причину «невидимости» изменений и успешно применить новые макеты оформления в отчетах на СКД.