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

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

Как создать общий реквизит в 1С: подробная инструкция

Как создать общий реквизит в 1С: настройка состава, типов данных, автозаполнения и отборов. Практическая инструкция с проверкой результата и типичными ошибками.

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

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

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

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

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

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

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

Маршрут решения

Как выбрать действие

Одно и то же поле с одинаковым типом нужно в трёх и более объектахСоздайте общий реквизит и настройте его состав
Поле нужно в одном-двух объектах или с разными свойствамиСоздайте обычный реквизит внутри каждого объекта
Поле должно разделять данные между областями в сервисеИзучите механизм разделения данных — настройка общего реквизита там иная

Создание общего реквизита в конфигураторе

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

Откроется палитра свойств нового объекта. Минимально необходимые настройки:

  • Имя — идентификатор реквизита в метаданных, без пробелов, например Комментарий или ОтветственныйСотрудник;
  • Синоним — отображаемое название, которое увидит пользователь в формах;
  • Тип — тип данных: строка, число, дата, булево, ссылка на справочник или составной тип;
  • Длина — для строки и числа укажите разумные значения (например, строка 250 для комментария).

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

Порядок действий
  1. 1
    Откройте конфигуратор и ветку Общие → Общие реквизиты
  2. 2
    Добавьте новый общий реквизит и задайте имя, синоним и тип данных
  3. 3
    Откройте свойство «Состав» и отметьте объекты, куда включить реквизит
  4. 4
    Проверьте свойство «Автозаполнение» при необходимости массового включения
  5. 5
    Обновите конфигурацию базы данных (F7)
  6. 6
    Проверьте появление реквизита в формах объектов в режиме предприятия

Настройка состава: куда попадёт реквизит

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

Напротив каждого объекта доступны варианты использования: «Использовать» — реквизит будет добавлен в объект, «Не использовать» — не будет. Если у общего реквизита включено свойство «Автозаполнение», то новые объекты, добавляемые в конфигурацию позже, будут получать этот реквизит автоматически — это удобно для полей вроде «Комментарий», которые должны быть везде.

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

Выбор типа данных и его последствия

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

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

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

Общий реквизит в формах, отборах и запросах

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

В запросах общий реквизит доступен по имени так же, как обычный реквизит объекта:

ВЫБРАТЬ

РеализацияТоваровУслуг.Ссылка,

РеализацияТоваровУслуг.Комментарий

ИЗ

Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

Дополнительное преимущество — единообразные отборы. В динамических списках и отчётах на СКД можно строить отборы по одному и тому же полю для разных типов документов, например выводить все документы с непустым комментарием или по конкретному ответственному, не заботясь о различиях в именах реквизитов.

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

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

Реквизит виден в дереве объекта в конфигураторе
Норма

Реквизит отображается в ветке «Реквизиты» каждого объекта из состава

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

Реквизита нет — не настроен состав или не обновлена конфигурация БД

Поле в форме объекта в режиме предприятия
Норма

Поле отображается, заполняется и сохраняется

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

Поля нет — форма ручная, поле нужно добавить в редакторе формы

Запрос к реквизиту
Норма

Запрос выполняется без ошибок и возвращает значения

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

Ошибка «Поле не найдено» — проверьте имя и состав общего реквизита

Типичные ошибки и ограничения

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

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

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

Типичные ошибки
01
Не заполнен состав — реквизит существует в метаданных, но отсутствует во всех объектах
02
Не обновлена конфигурация базы данных — изменения видны в конфигураторе, но не работают в режиме предприятия
03
Включено автозаполнение без необходимости — реквизит попал в десятки объектов, где он не нужен
04
Сужение типа без копии базы — потеря данных в заполненных полях при реструктуризации
05
Удаление реквизита без поиска ссылок — ошибки в модулях, запросах и отчётах после обновления

Альтернативы общему реквизиту

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

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

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

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

Единый тип и централизованный состав; подходит для полей в шапке множества объектов. Требует обновления конфигурации БД при изменениях.

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

Гибкость в типах и свойствах для каждого объекта; больше ручной работы и риск расхождений.

Дополнительные реквизиты и сведения

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

FAQ: частые вопросы об общих реквизитах

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

Нет. Общий реквизит добавляется только в шапку объекта. Для табличных частей реквизиты создаются индивидуально внутри каждой табличной части каждого объекта.

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

Проверьте два момента: заполнено ли свойство «Состав» у общего реквизита (документ должен быть отмечен как «Использовать») и выполнено ли обновление конфигурации базы данных через F7. Без реструктуризации изменения метаданных не применяются к базе.

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

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

Можно ли у разных объектов задать разные типы одного общего реквизита?

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

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

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

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

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

Итог

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

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