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

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

Общие реквизиты в 1С 8.3: для чего нужны и как их использовать

Общие реквизиты в 1С 8.3: назначение, настройка состава, разделение данных, отборы и отчёты. Практические примеры, типичные ошибки и ответы на вопросы.

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

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

Механизм доступен в конфигураторе в ветке «Общие → Общие реквизиты». Он применим и в типовых конфигурациях (например, реквизит «Организация» в «1С:Бухгалтерии» реализован именно так), и при доработке собственных решений. Ниже разберём, как создать общий реквизит, как управлять его составом, где он даёт реальную выгоду и каких ошибок стоит избегать.

Что такое общий реквизит и где он находится

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

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

Для чего нужны общие реквизиты: основные сценарии

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

Второй сценарий — разделение данных. Если свойство «Разделение данных» установлено в значение «Разделять», общий реквизит становится разделителем: в одной физической базе хранятся данные нескольких областей, и каждый пользователь видит только свою. Так работает модель сервиса (SaaS) в 1С:Фреш. Для разделённых таблиц платформа автоматически добавляет условие отбора по значению разделителя.

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

Сравнение вариантов

Общий реквизит

Подходит, когда одно и то же поле нужно в десятках объектов и важна единая структура; обязателен для разделения данных в SaaS.

Обычный реквизит в каждом объекте

Подходит, когда поле нужно в одном-двух объектах или у него разные типы и логика заполнения; проще для точечных доработок.

Дополнительные реквизиты (БСП)

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

Как создать общий реквизит и настроить состав

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

Для каждого объекта доступны варианты использования: «Использовать», «Не использовать» и «Авто». Режим «Авто» управляется свойством «Автоиспользование» самого общего реквизита: если оно включено, объекты со значением «Авто» получают реквизит автоматически. Это удобно, когда реквизит нужен почти во всех документах — новые документы подхватят его без лишних действий.

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

Разделение данных: когда общий реквизит становится разделителем

Свойство «Разделение данных» имеет два значения: «Не разделять» (по умолчанию) и «Разделять». Во втором случае реквизит превращается в разделитель, и платформа начинает хранить данные объектов из состава с привязкой к значению разделителя. При входе пользователя устанавливается значение сеансового разделителя, и все запросы автоматически фильтруются.

Дополнительно настраивается свойство «Использование разделителя»: «Независимо» (разделяются только данные объекта), «Независимо и совместно» (разделяются и данные, и движения по регистрам). Выбор влияет на то, как разделяются связанные таблицы, и ошибка здесь приводит к ситуации, когда документ виден в одной области, а его движения — в другой.

Использование в запросах, отборах и отчётах

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

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

bsl
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Реализация.Организация КАК Организация,
| СУММА(Реализация.СуммаДокумента) КАК Сумма
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
|СГРУППИРОВАТЬ ПО
| Реализация.Организация";

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

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

Частые ошибки связаны с составом и режимами. Например, объект забыли включить в состав — в запросе появляется ошибка «Поле не найдено», а в отчёте по этому виду документов пустые строки. Другая ситуация: у части объектов реквизит включён, у части нет, и сводный отчёт показывает неполные данные без явного сообщения об ошибке.

Типичные ошибки
01
Включили реквизит не во все нужные объекты — сводные отчёты показывают неполные данные без явной ошибки.
02
Изменили тип или длину общего реквизита без проверки обменов — выгрузка в другие системы ломается из-за несовпадения форматов.
03
Включили разделение данных в рабочей базе без копии — реструктуризация больших таблиц блокирует работу пользователей.
04
Дублируют общий реквизит обычным реквизитом с тем же именем в объекте — конфликт имён при обновлении конфигурации.
05
Используют общий реквизит там, где достаточно одного локального поля — лишняя сложность состава и реструктуризаций.
Контрольные точки

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

Поле в формах объектов
Норма

Реквизит виден и заполняется во всех объектах из состава

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

В части объектов поля нет — проверьте состав и автоиспользование

Сводный отчёт по реквизиту
Норма

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

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

Пустые строки или ошибка «Поле не найдено»

Разделение данных
Норма

Пользователи разных областей видят только свои записи

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

Видны чужие данные или записи пропали — проверяйте разделители сеанса

Ограничения и когда общий реквизит не нужен

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

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

Итог

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

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

Частые вопросы

Чем общий реквизит отличается от обычного реквизита документа?

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

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

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

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

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

Обязательно ли использовать общие реквизиты для разделения данных?

Да, механизм разделения данных в 1С построен именно на общих реквизитах: разделителем может быть только общий реквизит со свойством «Разделение данных» в значении «Разделять». Обычные реквизиты объектов для этой цели не подходят.

Почему в запросе возникает ошибка «Поле не найдено» при обращении к общему реквизиту?

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

Влияют ли общие реквизиты на производительность?

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