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