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

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

Базовая концепция и иерархия данных

Любой объект метаданных в платформе, будь то справочник, документ или регистр сведений, состоит из набора реквизитов. Именно они определяют структуру хранения информации в базе данных SQL или файловой системе. Важно различать сам объект и его атрибуты: объект — это сущность (например, "Номенклатура"), а реквизиты — это характеристики этой сущности (например, "Артикул", "Вес", "Ставка НДС").

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

Стоит отметить, что платформа автоматически добавляет системные реквизиты, которые нельзя удалить, но можно использовать. К ним относятся Ссылка, Код, Наименование, ПометкаУдаления и ДатаИзменения. Эти поля присутствуют у большинства объектов и обеспечивают базовую функциональность системы, такую как поиск, маркировка на удаление и аудит изменений.

💡

Всегда давайте реквизитам осмысленные имена на английском или транслите (например, Articul вместо Pole1). Это значительно упростит поддержку кода в будущем и чтение запросов другими разработчиками.

Классификация реквизитов по объектам метаданных

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

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

  • 📂 Справочники: хранят условно-постоянную информацию, имеют иерархию и владельцы.
  • 📄 Документы: фиксируют факты хозяйственной жизни, обязательно имеют дату и номер.
  • 📊 Регистры: предназначены для накопления и среза данных, имеют измерения и ресурсы.
  • ⚙️ Константы: хранят глобальные настройки системы, не меняющиеся в ходе работы.

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

📊 С каким типом объектов вы работаете чаще всего?
Справочники
Документы
Регистры накопления
Регистры сведений

Типы данных и свойства полей

Каждый реквизит объекта 1С должен иметь строго определенный тип данных. Платформа поддерживает как простые типы (Число, Строка, Дата, Булево), так и составные типы, позволяющие хранить в одном поле значения разных видов. Выбор типа влияет на то, как данные будут храниться в базе и как их можно будет обрабатывать.

При настройке свойств поля в конфигураторе вы можете задать длину строки, точность числа, формат даты и другие параметры. Например, для поля "Телефон" логично выбрать тип Строка с длиной 20 символов, а для поля "Количество" — тип Число с точностью 3 знака после запятой. Использование составных типов, таких как "СправочникСсылка.Номенклатура + Строка", дает гибкость, но усложняет написание запросов.

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

Тип данных Описание Пример использования
Число Хранит числовые значения с заданной точностью Количество товара, Сумма документа
Строка Текстовая информация фиксированной или переменной длины Комментарий, Артикул, Адрес
Дата Дата и время с точностью до секунды Дата отгрузки, Время начала смены
СправочникСсылка Ссылка на элемент другого справочника Контрагент, Склад, Менеджер
Булево Логическое значение (Истина/Ложь) Флаг "Новый клиент", "Оплачено"

Работа с реквизитами в коде и запросах

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

В запросах ситуация аналогична работе с SQL, но с использованием синтаксиса 1С. Вы выбираете нужные поля из таблиц виртуальной базы данных. Если реквизит находится в табличной части, к нему нужно обращаться через точку, указывая имя табличной части. Например: ВЫБРАТЬ ДокументРеализацияТоваровУслуг.Товары.Номенклатура ИЗ Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг.

⚠️ Внимание: При работе с составными типами в запросах будьте осторожны. Если в поле могут храниться ссылки на разные справочники, фильтрация по конкретному типу может требовать использования оператора ТИПЗНАЧЕНИЯ или проверки через ЕСТЬ NULL.

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

Оптимизация запросов к реквизитам

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

Динамические списки и вывод реквизитов

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

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

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

  • 🖥️ Настройка списка: пользователь может самостоятельно выбрать видимые колонки через меню "Изменить форму".
  • 🧮 Вычисляемые поля: позволяют отображать данные из связанных объектов без изменения структуры базы.
  • 🎨 Условное оформление: меняет цвет или шрифт ячейки в зависимости от значения реквизита.

Ограничения и особенности хранения

Хотя платформа 1С абстрагирует разработчика от физической структуры базы данных, существуют технические ограничения, о которых нужно знать. Максимальная длина строкового реквизита, ограничения на вложенность объектов и объем данных в одном поле регулируются настройками СУБД и самой платформы. Превышение этих лимитов может привести к ошибкам записи.

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

⚠️ Внимание: Изменение структуры метаданных (добавление или удаление реквизитов) требует обновления конфигурации базы данных. В работающих системах с большим объемом данных эта процедура может занять от нескольких минут до нескольких часов. Всегда выполняйте резервное копирование перед обновлением!

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

💡

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

Частые вопросы разработчиков (FAQ)

Как программно добавить новый реквизит в объект?

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

В чем разница между реквизитом и измерением регистра?

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

Можно ли сделать реквизит обязательным для заполнения?

Да, в свойствах реквизита в конфигураторе есть флаг "Обязательное". Если он установлен, система не позволит записать объект, если это поле пустое. Дополнительно можно реализовать более сложную логику проверки в событии формы ПередЗаписью или в модуле объекта.

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

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