← На главную
При переводе конфигураций (например, «1С:Управление торговлей» редакции 11.0) на новые версии платформы «1С:Предприятие 8.3» с отключением режима совместимости разработчики часто сталкиваются с неожиданными сбоями. Одна из распространенных проблем — ошибка формата «Ошибка при выполнении запроса. по причине: Поле не найдено "[ИмяРеквизита]"» при попытке открыть управляемую форму.
При этом указанный реквизит является обычным реквизитом формы (например, типом Булево), а в запросе динамического списка он не участвует и участвовать не должен. Разберем подробнее, почему возникает этот сбой и какими способами можно его оперативно устранить.
Выясним причину возникновения ошибки
Проанализируем механизмы работы управляемого приложения при смене режима совместимости. При отключении режима совместимости платформа переходит на новые алгоритмы строгого валидирования схемы компоновки данных и внутренней структуры форм. Основные причины ошибки заключаются в следующем:
- Повреждение структуры XML-описания формы: Старые формы, созданные в прошлых релизах конфигураций в режиме совместимости с платформой 8.2 или ранними версиями 8.3, при изменении режима совместимости могут некорректно конвертироваться. Внутренние индексы реквизитов формы и элементов интерфейса нарушаются.
- Использование реквизита в настройках динамического списка: Если реквизит формы случайно попал в пользовательские или системные настройки динамического списка (отборы, условное оформление, группировки), платформа попытается найти его в запросе списка и выдаст ошибку.
- Некорректная привязка элементов: Свойство
ПутьКДанным элемента таблицы динамического списка ошибочно указывает на реквизит формы вместо поля самого динамического списка.
- Кэширование устаревших настроек: В информационной базе или локальном кэше пользователя сохраняются старые пользовательские настройки формы, которые после снятия режима совместимости ссылаются на несуществующие структуры данных.
Способ 1. Пересоздание (копирование) управляемой формы
Самым быстрым и гарантированным практическим решением при повреждении структуры формы является ее пересборка внутри Конфигуратора. Рассмотрим этот процесс по шагам:
- Откроем Конфигуратор и найдем объект метаданных, в котором возникла ошибка.
- Найдем проблемную управляемую форму и создадим ее копию (через контекстное меню или сочетание клавиш).
- Убедимся, что новая форма скопировала состав реквизитов, элементы и модуль формы.
- Удалим исходную форму и переименуем скопированную форму, вернув ей оригинальное имя (или назначим ее основной в свойствах объекта).
- Сохраним и обновим конфигурацию базы данных.
При копировании платформа заново генерирует внутреннюю XML-структуру управляемой формы с учетом текущего (актуального) режима совместимости. Это полностью устраняет скрытые сбои индексации реквизитов.
Способ 2. Проверка привязок данных и динамического списка
Если пересоздание формы нежелательно, проанализируем внутренние настройки элементов формы и динамического списка:
- Откроем форму в Конфигураторе и выделим динамический список.
- Перейдем на вкладку «Настройка» в свойствах динамического списка. Проверим закладки «Отбор», «Условное оформление», «Группировка» и «Порядок». Убедимся, что там отсутствуют ссылки на реквизиты формы, отсутствующие в тексте запроса.
- Проверим все элементы, входящие в состав таблицы динамического списка на форме. У каждого элемента свойство
ПутьКДанным должно ссылаться строго на поле динамического списка (например, Список.ИмяПоля), а не на автономный реквизит формы (Объект.ИмяРеквизита или ТолькоКлиент).
Способ 3. Очистка кэша платформы и пользовательских настроек
Часто проблема кроется в застрявших настройках формы у конкретных пользователей. Для решения выполним следующие действия:
- Очистка настроек формы: В режиме «1С:Предприятие» откроем меню администрирования пользовательских настроек (или через меню
Главное меню -> Настройки -> Настройки формы) и выполним сброс настроек для проблемной формы.
- Запуск с ключом очистки кэша: Перезапустим сеанс «1С:Предприятие» с параметром запуска
/ClearCache.
- Полная очистка локального кэша: При необходимости удалим файлы из каталогов кэша 1С на клиентском компьютере:
%AppData%\1C\1Cv8
%LocalAppData%\1C\1Cv8
Способ 4. Полная пересборка конфигурации через файл .cf
В случаях, когда ошибка проявляется на нескольких формах после массового отключения режима совместимости, рекомендуется выгрузить конфигурацию в файл и загрузить ее обратно:
- В Конфигураторе выберем пункт меню «Конфигурация» -> «Сохранить конфигурацию в файл...» и сохраним файл
.cf.
- Затем выберем «Конфигурация» -> «Загрузить конфигурацию из файла...» и укажем сохраненный файл.
- Выполним обновление конфигурации базы данных. Это принудительно пересчитает структуру всех метаданных под текущую версию платформы.