Реквизиты объектов 1С:Предприятия 8.3 — от поля в карточке до колонки в базе

· 10 мин

Содержание

Реквизит в 1С — это свойство объекта конфигурации, в котором хранится одно значение: ИНН у контрагента, дата у документа, склад у поступления. Пользователь видит реквизит как поле на форме, а в базе данных он превращается в отдельную колонку таблицы этого объекта.

Частое заблуждение — считать реквизитом любое поле, которое видно на экране. Это не так. Часть полей формы ничего не хранит в базе и живёт, только пока форма открыта. Где проходит граница, какие бывают реквизиты в 1С:Предприятии 8.3 и как их добавлять, не ломая обновления, — по порядку.

Реквизит простыми словами: место в структуре конфигурации

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

Удобно представлять так:

  • 📁 объект (справочник «Контрагенты») — это таблица в базе;
  • 📄 элемент (конкретный контрагент «ООО Ромашка») — строка этой таблицы;
  • 🔤 реквизит (ИНН, КПП, Основной договор) — колонка.

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

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

Вид объектаЧто в нём хранится помимо реквизитов
СправочникТабличные части, предопределённые элементы
ДокументТабличные части, движения по регистрам
Регистр сведенийИзмерения и ресурсы
Регистр накопленияИзмерения и ресурсы
План видов характеристикТабличные части, тип значения характеристик

Стандартные реквизиты и те, что добавляет разработчик

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

Стандартные реквизиты справочника:

  • 🔑 Ссылка — уникальный идентификатор элемента;
  • 🔢 Код — строка или число, длина задаётся в свойствах справочника;
  • 🏷️ Наименование;
  • 🗑️ ПометкаУдаления;
  • 📂 Родитель и ЭтоГруппа — для иерархических справочников;
  • 👤 Владелец — для подчинённых справочников (например, договоры подчинены контрагентам).

Стандартные реквизиты документа:

  • 🔑 Ссылка;
  • 🔢 Номер;
  • 📅 Дата;
  • ✅ Проведен;
  • 🗑️ ПометкаУдаления.

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

Имя пользовательского реквизита не может совпадать с именем стандартного. Назвать реквизит документа Дата не получится — конфигуратор сообщит, что имя не уникально. Используйте ДатаОплаты, ДатаПоставки и подобные.

Типы реквизитов: какие значения можно хранить

Тип реквизита определяет, что в нём лежит и как с ним работает программа. Тип выбирают в палитре свойств реквизита, в поле «Тип».

Примитивные типы

ТипЧто хранитЧто настраивают
СтрокаТекстДлину; 0 — неограниченная длина
ЧислоСуммы, количества, процентыДлину и точность (знаков после запятой), неотрицательность
ДатаДату, время или дату со временемСостав даты
БулевоДа / Нет—

Пример: реквизит «Сумма» с длиной 15 и точностью 2 вмещает 13 знаков до запятой и 2 после. Максимальное значение — 9 999 999 999 999,99.

Ссылочные типы

Реквизит может хранить ссылку на элемент справочника, документ, значение перечисления, вид характеристики. Например, тип СправочникСсылка.Склады. В базе хранится только идентификатор, а наименование склада программа берёт из справочника. Поэтому, если переименовать склад, новое название сразу появится во всех документах.

Составной тип

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

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

Строка неограниченной длины

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

Шапка и табличная часть документа

Реквизиты документа и справочника делятся на две группы.

Реквизиты шапки хранят одно значение на весь объект. У счёта на оплату это дата, номер, организация, покупатель, договор, общая сумма.

Реквизиты табличной части хранят значения для каждой строки. У того же счёта табличная часть «Товары» содержит номенклатуру, количество, цену, сумму, ставку НДС. Строк может быть одна, а может быть пятьсот.

В базе данных табличная часть — это отдельная таблица, связанная с основной по ссылке на объект. У каждой строки есть стандартный реквизит НомерСтроки.

Пример обращения к обеим группам в запросе:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|	Поступление.Номер КАК Номер,
|	Поступление.Склад КАК Склад,
|	Товары.Номенклатура КАК Номенклатура,
|	Товары.Количество КАК Количество
|ИЗ
|	Документ.ПоступлениеТоваровУслуг КАК Поступление
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК Товары
|		ПО Поступление.Ссылка = Товары.Ссылка
|ГДЕ
|	Поступление.Ссылка = &Документ";
Запрос.УстановитьПараметр("Документ", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Сообщить(Строка(Выборка.Номенклатура) + ": " + Формат(Выборка.Количество, "ЧГ=0"));
КонецЦикла;

Как решить, куда положить новый реквизит? Задайте себе вопрос: значение одно на весь документ или может отличаться от строки к строке? Склад, общий для всей накладной, — в шапку. Склад, который в одной накладной разный для разных товаров, — в табличную часть.

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

Реквизиты формы и реквизиты объекта: в чём разница

В управляемых формах 1С:Предприятия 8.3 есть второй вид реквизитов — реквизиты формы. Их создают в редакторе формы, на вкладке «Реквизиты».

Главное отличие:

Реквизит объектаРеквизит формы
Где создаётсяВ дереве конфигурации, в свойствах объектаВ редакторе формы
Хранится в базеДа, колонка таблицыНет, только пока открыта форма
Доступен в отчётах и запросахДаНет
Типичное назначениеУчётные данныеСлужебные флажки, промежуточные итоги, отборы

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

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

Есть ещё одна особенность, которая постоянно сбивает с толку. На клиенте основной реквизит формы — это не сам объект, а его копия в виде данных формы. Обратиться через точку к реквизиту ссылки на клиенте нельзя: выражение Объект.Контрагент.ИНН в клиентском коде вызовет ошибку. Значение реквизита ссылки получают на сервере. В конфигурациях на БСП для этого есть функция ОбщегоНазначения.ЗначениеРеквизитаОбъекта():

&НаСервереБезКонтекста
Функция ИННКонтрагента(Контрагент)
	Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ИНН");
КонецФункции

Как добавить реквизит в конфигураторе

Порядок для справочника или документа одинаковый.

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

Свойства, которые стоит настроить сразу

  • ✅ Проверка заполнения — «Выдавать ошибку», если без значения записывать объект нельзя.
  • 🔎 Индексировать — если по реквизиту часто ищут или отбирают. Индекс ускоряет отбор, но замедляет запись и увеличивает базу.
  • 🌳 Использование — для иерархических справочников: реквизит нужен у элемента, у группы или у обоих.
  • 🧩 Связи параметров выбора — например, договор выбирается только из договоров указанного контрагента.

Типовая конфигурация: через расширение, а не снятие с поддержки

Если база на типовой конфигурации — Бухгалтерии 3.0, ЗУП 3.1, УТ 11, — добавлять реквизит прямо в основную конфигурацию плохая идея. Придётся включить возможность изменения, и каждое обновление превратится в сравнение и объединение.

Правильнее использовать расширение конфигурации (доступно с платформы 8.3.6):

  1. В конфигураторе откройте Конфигурация → Расширения конфигурации и создайте расширение.
  2. Заимствуйте в него нужный объект (контекстное меню объекта в основной конфигурации → «Добавить в расширение»).
  3. В заимствованном объекте добавьте свой реквизит.
  4. Заимствуйте форму и выведите на неё поле.
  5. Обновите конфигурацию базы данных.

Реквизиты, добавленные в расширение, хранятся в отдельных таблицах, а типовая конфигурация остаётся на поддержке и обновляется штатно.

Дополнительные реквизиты без программиста

Не всегда нужен конфигуратор. В конфигурациях на БСП есть механизм дополнительных реквизитов и сведений — пользователь с правами администратора создаёт новые поля прямо в режиме «Предприятие».

В Бухгалтерии 3.0 он включается в разделе Администрирование → Общие настройки: флажок «Дополнительные реквизиты и сведения». После включения рядом появляется ссылка на список дополнительных реквизитов, где выбирают объект и создают поле.

Чем отличаются два варианта:

Дополнительный реквизитДополнительное сведение
Где хранитсяВ табличной части самого объектаВ отдельном регистре сведений
Меняет версию объектаДаНет
Где видноНа форме объектаПо отдельной команде формы

Типовые сценарии: «Ответственный менеджер» у контрагента, «Номер тендера» у реализации, «Цвет» у номенклатуры. Такие поля доступны в отборах списков и в отчётах на СКД.

💡 Если поле нужно только для отборов и печати — хватит дополнительного реквизита. Если на нём строится логика проведения или расчёт — это задача для разработчика и расширения.

Где создать новое поле?

Ошибки при работе с реквизитами и как их избежать

Диагностика: выберите симптом

Ещё несколько ошибок проектирования, которые проявляются не сразу:

  • 🐢 Ссылочный реквизит без индекса у объекта с миллионами строк. Отборы по нему тормозят. Индекс добавляйте осознанно — только там, где реально ищут.
  • 🔁 Дублирование данных. Реквизит «ИННКонтрагента» в документе, когда ИНН уже есть в карточке контрагента. При изменении карточки документы останутся со старым значением. Иногда это нужно (зафиксировать на дату), чаще — нет.
  • 🧱 Слишком широкий составной тип. Реквизит, в который «можно положить что угодно», сложно проверять и дорого читать в запросах.
  • ✍️ Синоним без смысла. Пользователь видит синоним, а не имя. «Реквизит1» на форме — это вопросы в поддержку.

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

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

Чем реквизит отличается от табличной части?
Реквизит хранит одно значение на весь объект. Табличная часть — это список строк, у каждой из которых свой набор реквизитов.
Можно ли изменить тип реквизита, если в базе уже есть данные?
Можно, платформа преобразует значения при обновлении структуры. Но при несовместимых типах данные будут потеряны, поэтому сначала сделайте копию базы.
Где посмотреть все реквизиты документа, не открывая конфигуратор?
В режиме «Предприятие» откройте документ и выберите в меню «Ещё» команду изменения формы: там видны доступные поля. Полный список с типами есть только в конфигураторе.
Что такое общий реквизит?
Это реквизит, который один раз описывают в ветке «Общие» и подключают сразу к нескольким объектам. Его используют для разделения данных и для общих полей вроде области данных в сервисных решениях.
Сколько реквизитов можно добавить к одному объекту?
Жёсткого практического предела для обычных задач нет, но каждый реквизит увеличивает размер записи и время чтения. Добавляйте только то, что действительно используется.