Работа с расширениями конфигурации в 1С:Предприятие 8.3 стала стандартом де-факто для адаптации типовых решений. Однако мы часто сталкиваемся с неприятной ситуацией: в Конфигураторе новый реквизит или справочник добавлен, синтаксический контроль проходит успешно, но при запуске в режиме Предприятия этот реквизит отсутствует. Его не видно ни в Консоли запросов, ни в стандартных формах, а попытка обратиться к нему через Выбрать * игнорирует новое поле.
Вместе разберем причины такого поведения и рассмотрим проверенные способы решения этой проблемы, основываясь на опыте сообщества и технической документации.
Это самая частая причина, о которой, к сожалению, часто забывают при разработке расширений. Механизм прав доступа в 1С работает по разрешительному принципу. Когда мы создаем новый объект метаданных (например, реквизит справочника) в основной конфигурации, платформа часто автоматически предлагает включить права для роли "Полные права". В расширениях это работает иначе.
Если мы добавили новый реквизит в расширении, ни одна роль (даже "Полные права" из основной конфигурации) по умолчанию не знает о его существовании. Следовательно, срабатывает механизм RLS (Restriction Level Security) или простого ограничения прав, и поле становится невидимым для текущего пользователя, даже если это Администратор.
Что нам нужно сделать:
ПолныеПрава), либо создать собственную роль внутри расширения.После назначения прав Консоль запросов сразу "увидит" новое поле.
Еще один важный нюанс, влияющий на работу внешних отчетов и обработок (к которым относится и Консоль запросов), — это безопасный режим. Если расширение подключено с флагом Безопасный режим, платформа может ограничивать доступ к данным, модифицированным этим расширением, для внешних источников.
Проанализируем настройки подключения:
Отключение безопасного режима часто решает проблему доступности данных для инструментов разработчика.
Иногда случается так, что платформа не до конца корректно отрабатывает реструктуризацию базы данных при обновлении расширения. В базе данных поле физически не создается или метаданные кэшируются некорректно. В обсуждении коллеги предложили действенный метод "мягкой силы".
Если реквизит добавлен, но не виден, попробуем заставить платформу принудительно пересобрать таблицу:
Такое действие принуждает платформу заново выполнить реструктуризацию таблицы, что часто исправляет ошибки "потерянных" полей.
При создании расширения мы выбираем его свойство Назначение. Это не просто информационное поле, оно влияет на то, какие действия разрешены расширению.
Рассмотрим два основных типа:
Если у вас установлено назначение "Адаптация" и возникают проблемы со структурой данных, попробуем сменить его на "Дополнение" в свойствах корня расширения (через палитру свойств).
Нельзя исключать классическую проблему "фантомных" ошибок 1С — кэш. Если мы уверены, что права выданы, безопасный режим выключен, а реквизита все равно нет, выполним следующие шаги:
AppData/Local/1C/1cv8/ и AppData/Roaming/1C/1cv8/).ConfigDump.Важно следить за свойством Режим совместимости у самого расширения. Оно не должно превышать режим совместимости основной конфигурации.
Проверим это:
Версия 8.3.17).Версия 8.3.21 или Не использовать, если основная конфигурация работает в режиме совместимости.Если вы добавили реквизит в расширение, но не видите его в режиме Предприятия, действуйте по следующему алгоритму: