К статье
Практический материал

Разработка и Конфигурация · 13 мин

Требования назначения функциональности в 1С 8.3: для чего нужны и как настроить

Что такое требования назначения функциональности в 1С 8.3, зачем они нужны, как задать их в конфигураторе и расширении, типичные ошибки и проверка результата.

Требования назначения функциональности — это механизм платформы 1С:Предприятие 8.3, который позволяет конфигурации или расширению явно заявить, какие объекты метаданных и возможности платформы ей необходимы для работы. Проще говоря, разработчик заранее описывает «минимальные условия», при которых его решение будет функционировать корректно, а платформа проверяет эти условия при установке расширения или публикации решения.

Механизм чаще всего встречается при работе с расширениями конфигурации и при подготовке решений для публикации в сервисе 1С:Фреш и магазине расширений. Если расширение обращается к документу «РеализацияТоваровУслуг», а в целевой конфигурации такого документа нет, без требований назначения функциональности ошибка проявится только в момент обращения — у пользователя, в худшем месте и в худшее время. Требования позволяют отловить несовместимость заранее.

В статье разберём, где в конфигураторе задаются требования, какие виды проверок поддерживает платформа, как проверить результат и какие ошибки допускают разработчики чаще всего. Материал ориентирован на тех, кто дорабатывает типовые конфигурации, пишет расширения или готовит решения к распространению.

Что такое требования назначения функциональности и где они задаются

Требования назначения функциональности представляют собой список условий, который хранится в составе конфигурации или расширения. Каждое условие указывает на конкретный объект метаданных (справочник, документ, регистр, роль, подсистему) или на возможность платформы, без которой решение работать не сможет. Платформа сопоставляет этот список с фактическим составом целевой конфигурации и принимает решение: разрешить установку или отказать с понятным сообщением.

В конфигураторе настройка выполняется через палитру свойств корневого узла конфигурации или расширения. Для расширения откройте его в конфигураторе, выделите корневой элемент дерева (имя расширения) и в палитре свойств найдите раздел, связанный с требованиями назначения функциональности. Там добавляются строки требований: выбирается тип объекта, сам объект и характер требования.

Важно понимать, что требования — это не функциональные опции. Функциональные опции управляют видимостью и доступностью интерфейса внутри одной конфигурации, а требования назначения функциональности описывают внешние зависимости решения от состава метаданных. Эти механизмы часто путают из-за похожего названия, но решают они разные задачи.

Для чего механизм нужен на практике

Первая и главная задача — защита пользователя от установки заведомо неработоспособного решения. Расширение, написанное под «Управление торговлей», физически не сможет работать в «Бухгалтерии предприятия», если опирается на отсутствующие там документы и регистры. Требования назначения функциональности превращают эту проблему из ошибки времени выполнения в отказ на этапе подключения с внятной диагностикой.

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

Третья задача — документирование зависимостей. Даже во внутренних проектах явно заданные требования служат живой спецификацией: по ним видно, на какие объекты типовой конфигурации опирается доработка. При обновлении типовой конфигурации этот список помогает быстро оценить, что могло сломаться.

Какие виды требований можно задать

Набор доступных видов требований зависит от версии платформы, поэтому перед настройкой сверьтесь с документацией на ваш релиз 8.3. Типичные категории требований включают наличие конкретных объектов метаданных: справочников, документов, регистров сведений и накопления, перечислений, отчётов и обработок. Для каждого объекта указывается его имя в целевой конфигурации.

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

В некоторых сценариях доступны требования к версии платформы и режиму совместимости. Это полезно, когда решение использует возможности, появившиеся в конкретном релизе 8.3, — например, новые механизмы расширения или изменения в модели безопасности.

Расширение обращается к типовым объектамНужны требования на объекты метаданных

Перечислите все справочники, документы и регистры, к которым есть обращения в коде

Решение публикуется в сервисеТребования обязательны для фильтрации

Проверьте правила публикации магазина расширений

Расширение для одной базы внутри компанииТребования желательны, но не критичны

Зафиксируйте хотя бы ключевые зависимости для контроля при обновлениях

Используются новые возможности платформыНужно требование к версии платформы

Уточните минимальный релиз, на котором работает используемый механизм

Как задать требования в конфигураторе: порядок действий

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

Общий порядок такой: откройте расширение в конфигураторе, выделите корневой узел дерева конфигурации расширения, откройте палитру свойств и найдите свойство, отвечающее за требования назначения функциональности. В открывшемся редакторе добавьте строки требований, для каждой указав тип объекта и его имя в целевой конфигурации точно так, как объект назван в метаданных — с учётом регистра и без лишних пробелов.

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

Порядок действий
  1. 1
    Откройте расширение в конфигураторе и выделите корневой узел дерева
  2. 2
    В палитре свойств найдите раздел требований назначения функциональности
  3. 3
    Добавьте требования: тип объекта и точное имя в целевой конфигурации
  4. 4
    Добавьте требования к ролям и версии платформы, если решение от них зависит
  5. 5
    Сохраните расширение и обновите конфигурацию базы данных
  6. 6
    Проверьте подключение в совместимой и в заведомо несовместимой базе

Требования в расширениях и при публикации решений

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

При подготовке решения к публикации в магазине расширений 1С:Фреш требования проходят автоматическую проверку. Разработчику следует указывать только реально используемые объекты: избыточный список сужает круг потенциальных пользователей, а неполный — приводит к установке решения в несовместимые конфигурации. Перед публикацией полезно пройтись по коду расширения поиском обращений к метаданным и сверить каждое обращение со списком требований.

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

Удобный приём — вести список требований параллельно с разработкой, а не в конце. Каждый раз, когда в коде появляется обращение к новому типовому объекту, сразу добавляйте строку в требования. Итоговая сверка тогда занимает минуты, а не часы.
ПЗ
Практическое замечание

Проверка результата и типичные ошибки

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

К типичным ошибкам относятся опечатки в именах объектов (требование указывает на «РеализацияТоваров», а объект называется «РеализацияТоваровУслуг»), указание объектов, которые используются опционально, как обязательных, и наоборот — отсутствие требований на критичные объекты. Ещё одна частая проблема — устаревший список: после доработки расширения разработчик забыл добавить требования на новые зависимости.

Отдельный класс ошибок связан с ожиданием, что требования проверяются всегда и везде. При ручной загрузке расширения в конфигураторе или через предприятие строгость проверки зависит от версии платформы и сценария подключения. Не рассчитывайте на требования как на единственную защиту — дополняйте их защитным программированием: проверками наличия объектов через метаданные в коде там, где обращение может произойти в непредсказуемом контексте.

Типичные ошибки
01
Опечатка в имени объекта — требование никогда не срабатывает корректно, диагностика вводит в заблуждение
02
Избыточные требования на опционально используемые объекты — решение нельзя установить туда, где оно бы работало
03
Список требований не обновлён после доработки — расширение ставится в несовместимую базу и падает у пользователя
04
Ожидание проверки при любом способе подключения — в ряде сценариев платформа требования не контролирует, ошибка всплывает в рантайме

Ограничения механизма и альтернативы

Механизм требований назначения функциональности — декларативный и проверяет только то, что в нём явно заявлено. Он не анализирует код расширения автоматически и не гарантирует, что заявленные объекты имеют нужную структуру: реквизит документа мог быть переименован в новой версии типовой конфигурации, и требование на сам документ этого не отловит. Контроль состава реквизитов остаётся на разработчике.

В качестве дополнения используются программные проверки через объект «Метаданные»: в коде расширения при первом обращении или в обработчике запуска можно проверить наличие объектов и реквизитов и выдать пользователю осмысленное сообщение. Для сложных решений также практикуют адаптацию под несколько конфигураций через параметризуемые обращения к метаданным вместо жёсткой привязки к именам.

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

Контрольные точки

Как проверить результат

Подключение в совместимой базе
Норма

Расширение устанавливается, все функции работают

Тревожный признак

Отказ в установке или ошибки обращения к объектам

Подключение в несовместимой базе
Норма

Отказ с сообщением о невыполненном требовании

Тревожный признак

Расширение установилось, ошибки появляются при работе

Список требований против кода
Норма

Каждому обращению к типовым объектам соответствует требование

Тревожный признак

В коде есть обращения к объектам, которых нет в списке

Имена объектов
Норма

Имена совпадают с метаданными целевой конфигурации посимвольно

Тревожный признак

Опечатки, лишние пробелы, неверный регистр

Итог

Что важно запомнить

Требования назначения функциональности — декларативный список зависимостей решения от объектов и возможностей целевой конфигурации. Они защищают от установки в несовместимую базу, обязательны при публикации в сервисе и служат документацией зависимостей. Задаются в палитре свойств расширения, требуют точных имён объектов и регулярной актуализации при доработках и обновлениях типовой конфигурации.

Частые вопросы о требованиях назначения функциональности

Чем требования назначения функциональности отличаются от функциональных опций?

Функциональные опции управляют доступностью интерфейса и возможностей внутри одной конфигурации — включают и выключают блоки функциональности по настройке. Требования назначения функциональности описывают внешние зависимости решения: какие объекты и возможности должны существовать в базе, чтобы решение вообще могло работать. Это разные механизмы с разными задачами.

Обязательно ли заполнять требования для внутреннего расширения, которое используется только в одной базе?

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

Что произойдёт, если имя объекта в требовании указано с опечаткой?

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

Проверяет ли платформа требования при ручном подключении расширения?

Строгость проверки зависит от версии платформы и сценария подключения. Наиболее полная проверка выполняется при установке через механизмы сервиса и магазина расширений. При ручной загрузке через конфигуратор или режим предприятия рассчитывать на полную автоматическую проверку не стоит — дополняйте её программными проверками в коде.

Можно ли с помощью требований проверить наличие конкретного реквизита у документа?

Нет, механизм оперирует объектами метаданных целиком и не контролирует их внутреннюю структуру. Если расширение зависит от конкретных реквизитов, проверяйте их наличие программно через объект «Метаданные» и выводите понятное сообщение при несоответствии.

Нужно ли пересматривать требования после обновления типовой конфигурации?

Да. Новый релиз типовой конфигурации может переименовать или удалить объекты, на которые опирается расширение. После каждого обновления сверяйте список требований и обращения в коде с актуальным составом метаданных — это самый быстрый способ обнаружить потенциальные конфликты до того, как с ними столкнутся пользователи.