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

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

Как установить основной реквизит формы в 1С

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

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

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

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

Что такое основной реквизит формы и зачем он нужен

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

Основной реквизит определяет поведение всей формы. От него зависят:

  • какие стандартные команды доступны (Записать, Провести, Пометить на удаление);
  • как форма реагирует на открытие со значением ключа;
  • работают ли стандартные обработчики ПриЧтенииНаСервере и ПриЗаписиНаСервере;
  • возможно ли расширение формы объектом или записью.

Для формы документа основным реквизитом обычно служит реквизит типа «ДокументОбъект.<Имя>», для формы элемента справочника — «СправочникОбъект.<Имя>». При автоматической генерации формы платформа создаёт такой реквизит сама, но при ручном конструировании или доработке его приходится устанавливать явно.

Как установить основной реквизит в конфигураторе

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

В правой части редактора находится панель «Реквизиты». Если реквизит уже существует, выделите его и откройте палитру свойств (правый клик → «Свойства» или Alt+Enter). Найдите свойство «Основной реквизит» и установите значение «Истина». В списке реквизитов основной помечается жирным шрифтом и специальной пиктограммой.

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

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

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

Выбор типа основного реквизита под задачу

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

Назначение формыТип основного реквизитаКомментарий
Форма документаДокументОбъект.<Имя>Поддерживает проведение и запись
Форма элемента справочникаСправочникОбъект.<Имя>Стандартная запись элемента
Форма записи регистра сведенийРегистрСведенийЗапись.<Имя>Редактирование одной записи
Форма спискаДинамическийСписокОтображение выборки без редактирования объекта
Произвольная форма обработкиДанныеФормыСтруктура и др.Без привязки к объекту БД — основной реквизит может отсутствовать

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

Особенности для обычных и управляемых форм

В управляемых формах (режим «Такси» и обычный интерфейс управляемого приложения) основной реквизит задаётся описанным выше способом, а данные на сервере представлены в специальном формате «ДанныеФормы». Для обращения к объекту в коде используется конструкция РеквизитФормыВЗначение("Объект"), а обратное преобразование — ЗначениеВРеквизитФормы().

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

Программное изменение реквизитов формы

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

Проверка результата после установки

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

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

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

Открытие существующего объекта
Норма

Поля формы заполнены данными из базы

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

Форма пустая или ошибка «Значение не является значением объектного типа»

Запись изменений
Норма

Объект записывается, изменения видны в списке

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

Ошибка записи или данные не сохраняются

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

Открывается пустая форма с заполненными значениями по умолчанию

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

Ошибка при создании формы

Проведение документа
Норма

Документ проводится штатно

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

Кнопка проведения недоступна или ошибка

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

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

Типичные ошибки
01
Основной реквизит не установлен вовсе — форма открывается, но не читает и не сохраняет данные объекта
02
Тип реквизита не совпадает с типом ключа — ошибка преобразования при открытии формы из списка
03
Флаг установлен у вспомогательного реквизита (например, у строки-комментария) — запись объекта перестаёт работать
04
Попытка назначить два основных реквизита — конфликт при проверке конфигурации
05
Удаление основного реквизита при доработке формы — все стандартные обработчики чтения и записи теряют источник данных

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

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

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

FAQ

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

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

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

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

Как изменить основной реквизит у существующей формы?

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

Можно ли назначить основной реквизит программно в режиме 1С:Предприятие?

Нет. Метод ИзменитьРеквизиты() позволяет добавлять и удалять реквизиты формы, но свойство «основной» задаётся только в конфигураторе на этапе разработки.

Что делать, если при открытии формы ошибка несоответствия типов?

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

Итог

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

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