Как обновить настройки СКД во внешнем отчете 1С, если сохраняются старые формулы и вычисления?

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

Разработчики 1С часто сталкиваются с ситуацией: во внешнем отчете на базе Системы компоновки данных (СКД) вносятся изменения (например, меняется формула в вычисляемом поле), отчет загружается в информационную базу, но при формировании программа продолжает выдавать старый результат. Это происходит из-за сложной архитектуры хранения настроек и кэширования метаданных в современных конфигурациях на базе БСП (Библиотеки стандартных подсистем), таких как УТ 11, ERP 2 или КА 2.

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

Почему 1С "помнит" старые настройки?

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

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

Рассмотрим пошагово, как бороться с каждым из этих факторов.

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

Это первое действие, которое необходимо выполнить. Однако просто нажать кнопку «Сформировать» недостаточно. Разберем правильную последовательность действий в управляемых формах:

  1. Откройте отчет в режиме 1С:Предприятие.
  2. Перейдите в меню Еще — Прочее — Установить стандартные настройки. В этот момент визуально могут сброситься только периоды или отборы, но внутри объектная модель настроек обновляется до состояния, заложенного в схеме.
  3. Если это не помогло, перейдите в Настройки — Расширенные.
  4. В нижней части окна нажмите кнопку Еще — Установить стандартные настройки именно внутри окна настроек.
  5. Нажмите Сформировать и закрыть.

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

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

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

  1. Зайдите в раздел Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки.
  2. Найдите нужный отчет и нажмите Обновить из файла.
  3. Критически важно: После загрузки файла нажмите кнопку Записать и закрыть. Не пытайтесь проверять отчет сразу из формы редактирования обработки, так как в этот момент регистрация изменений в справочнике Варианты отчетов может быть еще не завершена.
  4. Полностью закройте форму отчета, если она была открыта в другом окне, и откройте её заново через соответствующий раздел интерфейса.

Способ 3. Очистка пользовательских настроек (Административный метод)

Если пользователей много и у всех "тянется" старая формула, можно принудительно очистить их настройки через механизмы БСП. Выясним, как это сделать:

  1. Перейдите в Администрирование — Обслуживание — Управление настройками пользователей.
  2. Выберите пункт Очистка настроек.
  3. В списке найдите нужный отчет. Вы можете выбрать конкретных пользователей или «Всех пользователей».
  4. Удалите настройки внешнего вида и настройки самого отчета. Это гарантированно заставит систему перечитать схему из файла при следующем открытии.

Способ 4. Программная очистка кэша настроек (Для разработчика)

Если вы хотите автоматизировать процесс или решить проблему точечно для конкретного отчета, можно использовать встроенный язык 1С. Рассмотрим пример кода, который удаляет настройки отчета из хранилища системных настроек. Это полезно запустить один раз через Консоль кода.


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

Также полезно программно инициировать обновление метаданных в справочнике вариантов. Проанализируем ситуацию: в БСП за это отвечает общий модуль ВариантыОтчетов. Вызов процедуры ОбновитьОбъект для соответствующего элемента справочника ВариантыОтчетов заставит систему пересохранить схему СКД во внутреннее хранилище базы данных.

Способ 5. Работа с идентификаторами (GUID) полей

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

Резюме

Чтобы изменения в СКД гарантированно вступили в силу без переименования отчета, рекомендуем придерживаться следующего чек-листа:

  1. Убедитесь, что в схеме СКД изменения сохранены и файл .erf обновлен.
  2. Загрузите отчет в базу и обязательно нажмите «Записать и закрыть».
  3. Используйте команду Установить стандартные настройки в форме отчета.
  4. Если настройки "приросли" намертво — воспользуйтесь формой Управление настройками пользователей для полной очистки кэша конкретного отчета.
  5. В крайнем случае, если отчет запущен в клиент-серверном варианте, попробуйте очистить серверный кэш метаданных (перезапуск службы 1С), хотя для внешних отчетов это требуется крайне редко.

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

← На главную