Почему в отчете на СКД возникает ошибка «Поле не найдено» после добавления нового поля и как ее исправить?

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

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

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

Причины возникновения ошибки

Проанализируем архитектуру работы подсистемы «Варианты отчетов» БСП и механизма компоновки данных, чтобы выяснить первопричину сбоя:

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

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

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

Выполним следующие действия:

  1. Перейдем в раздел «НСИ и администрирование» — «Печатные формы, отчеты и обработки» — «Дополнительные отчеты и обработки».
  2. Найдем в списке нужный отчет и откроем его карточку.
  3. Нажмем кнопку «Загрузить из файла» и выберем отредактированный файл отчета.
  4. Нажмем «Записать и закрыть».

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

Способ 2. Временное изменение внутреннего имени отчета для отладки

Разберем ситуацию, когда разработчику необходимо протестировать схему компоновки локально через «Файл — Открыть», не обновляя отчет в рабочей базе данных.

Чтобы обойти кэширование и разорвать связь с сохраненными вариантами в базе, поступим следующим образом:

  1. Откроем внешний отчет в конфигураторе.
  2. В палитре свойств внешнего отчета найдем реквизит Имя.
  3. Временно изменим имя, добавив любой суффикс (например, МойОтчет_Тест).
  4. Сохраним файл отчета.

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

Способ 3. Очистка настроек пользователя

Если ошибка возникает у конкретного пользователя из-за «зависшего» кэша формы в ХранилищеСистемныхНастроек, можно принудительно очистить его индивидуальные настройки:

  1. Откроем «НСИ и администрирование» — «Настройки пользователей и прав» — «Очистка настроек».
  2. Выберем пользователя, у которого возникает ошибка.
  3. В списке объектов найдем проблемный отчет и очистим для него настройки отображения и вариантов.

Способ 4. Использование собственной формы отчета

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

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

← На главную