Разработка и Конфигурация · 10 мин
Общие реквизиты 1С: для чего нужны и как их использовать
Общие реквизиты 1С: назначение, отличие от обычных реквизитов, настройка состава, разделение данных, типичные ошибки и FAQ для разработчиков и администраторов.
Общие реквизиты в 1С — это объекты конфигурации, которые позволяют один раз описать поле (например, «Организация», «Склад» или «Комментарий») и автоматически добавить его сразу в несколько документов, справочников и других объектов. Вместо того чтобы создавать одинаковый реквизит в каждом объекте вручную, разработчик настраивает состав общего реквизита, и платформа сама включает его в нужные объекты метаданных.
У общих реквизитов две большие области применения. Первая — технологическая: унификация структуры конфигурации и упрощение её сопровождения. Вторая — функциональная: механизм разделения данных в сервисе (SaaS), где общие реквизиты определяют, какие данные видны конкретному абоненту, а какие являются общими для всех.
Ниже разберём, как устроен механизм, когда его стоит применять, как настроить состав, какие ограничения существуют и каких ошибок лучше избегать.
Что такое общий реквизит и как он работает
Общий реквизит создаётся в ветке «Общие» — «Общие реквизиты» дерева конфигурации. У него есть те же свойства, что и у обычного реквизита: имя, синоним, тип, длина, обязательность заполнения. Ключевое отличие — свойство «Состав», где перечисляются объекты, в которые платформа должна включить этот реквизит.
Для каждого объекта в составе задаётся режим использования: «Автоматически» или «Использовать». При значении «Автоматически» поведение определяется свойством «Автоиспользование» самого общего реквизита, при «Использовать» реквизит включается в объект принудительно. Объекты, отмеченные как «Не использовать», реквизит не получают.
Физически в базе данных общий реквизит хранится как обычное поле таблицы каждого объекта, в который он включён. Это не единое общее хранилище: у каждого документа или справочника своё значение реквизита. Общим является только описание метаданных.
Когда общие реквизиты действительно нужны
Первый сценарий — унификация типовых полей. Если в конфигурации десятки документов должны содержать реквизит «Организация» или «Ответственный», проще описать его один раз как общий. При изменении типа или длины правка вносится в одном месте и применяется ко всем объектам состава.
Второй сценарий — разделение данных в модели сервиса. В свойстве общего реквизита «Разделение данных» указывается, что реквизит является разделителем: записи разных абонентов изолируются друг от друга, и каждый абонент видит только свои данные. Общие реквизиты с включённым разделением используются при работе с менеджером сервиса и технологией SaaS.
Третий сценарий — построение отборов и отчётов по единому признаку. Когда одноимённый реквизит гарантированно присутствует во всех нужных объектах с одинаковым типом, проще строить универсальные запросы, отборы в динамических списках и обработки.
Сравнение вариантов
Подходит, когда поле нужно в большом числе объектов и должно меняться централизованно. Ограничение: нельзя задать разные типы для разных объектов.
Подходит, когда у объектов разные типы, обязательность или логика заполнения. Минус — правки приходится вносить в каждый объект отдельно.
Подходят для пользовательских полей без изменения конфигурации. Ограничение: хранятся в отдельной таблице, медленнее в запросах и недоступны как разделители данных.
Как создать и настроить общий реквизит
Работа выполняется в конфигураторе и требует прав на изменение конфигурации. Перед началом убедитесь, что есть актуальная резервная копия информационной базы: изменение структуры метаданных влечёт реструктуризацию таблиц.
- 1Откройте конфигуратор, в дереве конфигурации найдите ветку «Общие» — «Общие реквизиты» и добавьте новый элемент.
- 2Задайте имя, синоним и тип реквизита — так же, как для обычного реквизита объекта.
- 3Откройте свойство «Состав» и отметьте объекты, в которые нужно включить реквизит, выбрав режим «Использовать» или «Автоматически».
- 4При необходимости настройте разделение данных, если конфигурация работает в режиме сервиса.
- 5Обновите конфигурацию базы данных и согласуйте реструктуризацию таблиц.
- 6Откройте несколько объектов из состава в режиме предприятия и убедитесь, что реквизит появился и сохраняется.
После обновления конфигурации базы данных проверьте объекты, у которых в составе стоял режим «Автоматически»: если автоиспользование у реквизита выключено, реквизит в них не появится. Это частая причина «пропавшего» поля.
Общие реквизиты и разделение данных
В конфигурациях, работающих в режиме сервиса, общие реквизиты выполняют роль разделителей. Свойство «Разделение данных» переводит реквизит в особый режим: платформа автоматически добавляет условие отбора по значению разделителя ко всем запросам к разделённым объектам.
Дополнительно настраиваются свойства «Использование разделителя» (независимо, независимо и совместно, не использовать) и «Значение разделителя». От этих настроек зависит, какие данные доступны в сеансе абонента и как ведут себя общие (неразделённые) таблицы. Ошибочная настройка может привести к тому, что абонент увидит чужие данные или, наоборот, потеряет доступ к своим.
Ограничения и особенности механизма
Общий реквизит имеет один тип для всех объектов состава. Если в одних документах поле должно быть ссылкой на справочник, а в других — строкой, общий реквизит не подойдёт: придётся создавать обычные реквизиты.
Не все объекты могут входить в состав общего реквизита: набор поддерживаемых типов метаданных ограничен платформой (документы, справочники, планы видов характеристик, бизнес-процессы, задачи и некоторые другие). Регистры, например, общие реквизиты не используют.
Добавление общего реквизита в объекты с большим объёмом данных вызывает реструктуризацию, которая на крупных таблицах может занять продолжительное время и потребовать монопольного доступа. Планируйте такие изменения на время минимальной нагрузки.
Типичные ошибки при работе с общими реквизитами
Отдельная ошибка — использование общих реквизитов там, где они не нужны. Если поле требуется в двух-трёх объектах и логика у них разная, создание общего реквизита только усложняет конфигурацию и затрудняет чтение метаданных.
Как проверить результат настройки
После обновления конфигурации базы данных убедитесь, что реквизит реально появился в целевых объектах и корректно работает. Проверку выполняйте и в конфигураторе, и в режиме предприятия.
Как проверить результат
Все нужные объекты отмечены режимом «Использовать» или «Автоматически» при включённом автоиспользовании
Часть объектов не входит в состав или стоит «Не использовать»
Реквизит отображается, заполняется и сохраняется
Поле отсутствует на форме или значение не сохраняется
Существующие записи открываются без ошибок, поле пустое или заполнено ожидаемо
Ошибки при открытии объектов, потерянные значения
Поле доступно в конструкторе запросов для всех объектов состава
Запрос к реквизиту в отдельных объектах выдаёт ошибку «Поле не найдено»
Полезно также выполнить тестирование и исправление информационной базы в режиме проверки логической целостности после массовой реструктуризации — это помогает вовремя выявить скрытые проблемы.
Перед добавлением общего реквизита в типовую конфигурацию на поддержке оцените последствия для обновлений: изменённые общие реквизиты и расширенный состав могут усложнить сравнение и объединение при выходе новых релизов. Во многих случаях безопаснее использовать расширение конфигурации.
Частые вопросы об общих реквизитах 1С
Чем общий реквизит отличается от обычного реквизита объекта?
Обычный реквизит описывается внутри конкретного объекта и существует только в нём. Общий реквизит описывается один раз и включается платформой во все объекты из его состава. По сути хранения различий нет — в обоих случаях это поле таблицы объекта, отличается только способ описания метаданных.
Можно ли задать разные типы общего реквизита для разных объектов?
Нет. Тип, длина и другие свойства у общего реквизита едины для всего состава. Если в разных объектах нужны разные типы или разная обязательность заполнения, используйте обычные реквизиты в каждом объекте.
Что произойдёт с данными, если исключить объект из состава общего реквизита?
При обновлении конфигурации базы данных платформа удалит соответствующее поле из таблицы объекта вместе со всеми заполненными значениями. Если данные представляют ценность, заранее перенесите их в другой реквизит с помощью обработки.
Для чего нужно свойство «Разделение данных» у общего реквизита?
Оно превращает реквизит в разделитель данных для работы в режиме сервиса (SaaS). Платформа автоматически отфильтровывает записи по значению разделителя, чтобы каждый абонент видел только свои данные, а общие таблицы оставались доступны всем.
Можно ли добавить общий реквизит через расширение конфигурации?
Возможности расширений по работе с общими реквизитами ограничены и зависят от версии платформы: как правило, расширения позволяют добавлять собственные реквизиты в объекты, но полноценное управление общими реквизитами и разделением данных доступно только в основной конфигурации. Перед разработкой проверьте поддержку нужного механизма в документации к вашей версии платформы.
Почему общий реквизит не появился в документе после настройки?
Чаще всего дело в режиме использования: для объекта в составе выбрано «Автоматически», а у самого реквизита автоиспользование выключено. Установите для объекта режим «Использовать» или включите автоиспользование, затем обновите конфигурацию базы данных и проверьте форму документа — поле может просто не быть выведено на форму.