Разработка и Конфигурация · 11 мин
Общие реквизиты в 1С 8.3: для чего нужны и как их использовать
Общие реквизиты в 1С 8.3: назначение, настройка состава, разделение данных, отборы и отчёты. Практические примеры, типичные ошибки и ответы на вопросы.
Общие реквизиты в 1С 8.3 — это объект конфигурации, который позволяет один раз описать реквизит и автоматически добавить его сразу в несколько объектов: справочники, документы, планы счетов, регистры и другие. Вместо того чтобы вручную создавать поле «Организация» или «Комментарий» в каждом из пятидесяти документов, разработчик создаёт один общий реквизит и указывает, в какие объекты он входит.
У общих реквизитов два основных назначения. Первое — унификация структуры: одинаковое имя, тип и длина поля во всех объектах упрощают построение отчётов, отборов и обменов данными. Второе — механизм разделения данных: специальное свойство «Разделение данных» позволяет использовать общий реквизит как разделитель в режиме SaaS, когда в одной информационной базе работают несколько независимых абонентов.
Механизм доступен в конфигураторе в ветке «Общие → Общие реквизиты». Он применим и в типовых конфигурациях (например, реквизит «Организация» в «1С:Бухгалтерии» реализован именно так), и при доработке собственных решений. Ниже разберём, как создать общий реквизит, как управлять его составом, где он даёт реальную выгоду и каких ошибок стоит избегать.
Что такое общий реквизит и где он находится
Общий реквизит — это метаданные верхнего уровня, расположенные в дереве конфигурации в ветке «Общие». У него есть имя, синоним, тип данных, длина и другие стандартные свойства, как у обычного реквизита объекта. Отличие в том, что он не принадлежит одному конкретному справочнику или документу — платформа добавляет его во все объекты, перечисленные в свойстве «Состав».
Для объектов, включённых в состав, общий реквизит выглядит как обычное поле: его видно в форме, можно вывести в список, использовать в запросах и отборах. При этом изменение свойств общего реквизита (например, увеличение длины строки) применяется сразу ко всем объектам, что исключает рассинхронизацию структуры.
Для чего нужны общие реквизиты: основные сценарии
Первый сценарий — сквозные аналитические разрезы. Если по всем документам нужно анализировать данные в разрезе организации, склада или проекта, общий реквизит гарантирует, что поле будет присутствовать везде с одинаковым типом. Это критично для сводных отчётов: запрос может обращаться к одному имени поля в разных таблицах.
Второй сценарий — разделение данных. Если свойство «Разделение данных» установлено в значение «Разделять», общий реквизит становится разделителем: в одной физической базе хранятся данные нескольких областей, и каждый пользователь видит только свою. Так работает модель сервиса (SaaS) в 1С:Фреш. Для разделённых таблиц платформа автоматически добавляет условие отбора по значению разделителя.
Третий сценарий — упрощение сопровождения. При добавлении нового документа достаточно включить его в состав общего реквизита, и поле появится автоматически. Это снижает риск забыть добавить обязательную аналитику в новый объект.
Сравнение вариантов
Подходит, когда одно и то же поле нужно в десятках объектов и важна единая структура; обязателен для разделения данных в SaaS.
Подходит, когда поле нужно в одном-двух объектах или у него разные типы и логика заполнения; проще для точечных доработок.
Подходят, когда поля добавляют пользователи без изменения конфигурации; не участвуют в разделении данных и медленнее в запросах.
Как создать общий реквизит и настроить состав
Создание выполняется в конфигураторе. Откройте ветку «Общие → Общие реквизиты», добавьте новый элемент, задайте имя (например, Организация), тип данных и при необходимости длину. Затем откройте свойство «Состав» — откроется окно со списком всех объектов конфигурации, в которые реквизит может быть включён.
Для каждого объекта доступны варианты использования: «Использовать», «Не использовать» и «Авто». Режим «Авто» управляется свойством «Автоиспользование» самого общего реквизита: если оно включено, объекты со значением «Авто» получают реквизит автоматически. Это удобно, когда реквизит нужен почти во всех документах — новые документы подхватят его без лишних действий.
После изменения состава потребуется обновить конфигурацию базы данных. Если реквизит добавляется в таблицы, где уже есть данные, платформа выполнит реструктуризацию — в больших базах это может занять заметное время, поэтому операцию лучше выполнять вне рабочих часов.
Разделение данных: когда общий реквизит становится разделителем
Свойство «Разделение данных» имеет два значения: «Не разделять» (по умолчанию) и «Разделять». Во втором случае реквизит превращается в разделитель, и платформа начинает хранить данные объектов из состава с привязкой к значению разделителя. При входе пользователя устанавливается значение сеансового разделителя, и все запросы автоматически фильтруются.
Дополнительно настраивается свойство «Использование разделителя»: «Независимо» (разделяются только данные объекта), «Независимо и совместно» (разделяются и данные, и движения по регистрам). Выбор влияет на то, как разделяются связанные таблицы, и ошибка здесь приводит к ситуации, когда документ виден в одной области, а его движения — в другой.
Использование в запросах, отборах и отчётах
В запросах общий реквизит доступен как обычное поле объекта: Документ.РеализацияТоваровУслуг.Организация. Это позволяет строить универсальные отчёты, объединяющие данные разных видов документов по единому разрезу. В динамических списках и журналах документов общий реквизит можно вывести колонкой и использовать для отбора без дополнительного кода.
Для разделённых реквизитов в запросах не нужно вручную писать условие на разделитель — платформа добавляет его неявно. Если же в запросе с разделённой таблицей явно обратиться к полю разделителя, убедитесь, что это не нарушает логику неявных отборов, особенно в виртуальных таблицах регистров.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Реализация.Организация КАК Организация,
| СУММА(Реализация.СуммаДокумента) КАК Сумма
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
|СГРУППИРОВАТЬ ПО
| Реализация.Организация";Проверка результата и типичные ошибки
После настройки проверьте результат в нескольких точках: откройте формы документов из состава, убедитесь, что поле отображается и заполняется; постройте отчёт с группировкой по реквизиту; для разделённых данных войдите под пользователями разных областей и убедитесь, что каждый видит только свои записи.
Частые ошибки связаны с составом и режимами. Например, объект забыли включить в состав — в запросе появляется ошибка «Поле не найдено», а в отчёте по этому виду документов пустые строки. Другая ситуация: у части объектов реквизит включён, у части нет, и сводный отчёт показывает неполные данные без явного сообщения об ошибке.
Как проверить результат
Реквизит виден и заполняется во всех объектах из состава
В части объектов поля нет — проверьте состав и автоиспользование
Данные группируются по всем видам документов без пустых значений
Пустые строки или ошибка «Поле не найдено»
Пользователи разных областей видят только свои записи
Видны чужие данные или записи пропали — проверяйте разделители сеанса
Ограничения и когда общий реквизит не нужен
Общий реквизит не подходит, если поле требуется в одном-двух объектах или если у разных объектов должны быть разные типы и логика заполнения. Также общие реквизиты не поддерживаются для всех видов объектов — например, их нельзя добавить в некоторые служебные таблицы. Перед проектированием проверьте список доступных объектов в окне состава.
Учтите, что включение общего реквизита в объект, участвующий в планах обмена, может потребовать корректировки правил конвертации. А в режиме совместимости со старыми версиями платформы часть возможностей разделения данных может быть недоступна — проверяйте режим совместимости конфигурации.
Что важно запомнить
Общий реквизит — способ централизованно добавить одно поле во множество объектов и основа механизма разделения данных. Создавайте его через ветку «Общие», управляйте составом, тестируйте реструктуризацию на копии и не используйте там, где достаточно обычного реквизита.
Частые вопросы
Чем общий реквизит отличается от обычного реквизита документа?
Обычный реквизит описывается внутри конкретного объекта и существует только в нём. Общий реквизит описывается один раз в ветке «Общие» и платформа добавляет его во все объекты из состава. Изменение типа или длины общего реквизита применяется сразу ко всем объектам, а обычный пришлось бы править в каждом документе отдельно.
Можно ли добавить общий реквизит в типовую конфигурацию без снятия с поддержки?
Да, если конфигурация находится в режиме поддержки с возможностью изменения. Добавление собственного общего реквизита и включение его в состав объектов — это доработка, которая потребует аккуратного объединения при обновлениях. Альтернатива без изменения конфигурации — механизм дополнительных реквизитов и сведений из Библиотеки стандартных подсистем, но он работает медленнее и не подходит для разделения данных.
Что произойдёт с данными, если удалить общий реквизит из состава объекта?
При обновлении конфигурации базы данных соответствующая колонка будет удалена из таблицы объекта вместе с данными. Перед таким изменением сделайте резервную копию и, если данные нужны, предварительно перенесите их в другой реквизит обработкой.
Обязательно ли использовать общие реквизиты для разделения данных?
Да, механизм разделения данных в 1С построен именно на общих реквизитах: разделителем может быть только общий реквизит со свойством «Разделение данных» в значении «Разделять». Обычные реквизиты объектов для этой цели не подходят.
Почему в запросе возникает ошибка «Поле не найдено» при обращении к общему реквизиту?
Чаще всего объект, к которому идёт обращение, не включён в состав общего реквизита, либо для него стоит режим «Не использовать». Откройте свойство «Состав» общего реквизита и проверьте нужный объект. Также убедитесь, что конфигурация базы данных обновлена после изменения состава.
Влияют ли общие реквизиты на производительность?
Само по себе наличие общего реквизита не замедляет работу — это обычная колонка в таблице. Влияние появляется при разделении данных: платформа добавляет неявные отборы по разделителю, и для больших таблиц важны корректные индексы. Также длительной может быть реструктуризация при добавлении реквизита в таблицы с большим объёмом записей.