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

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

1. Строка, которую завёл конструктор

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

реквизиты формы
├── Объект            ← основной, полужирным
└── (остальные, если заведут)

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

Основной реквизит — это предмет разговора, записанный в форму. Всё остальное в форме говорит о нём или вокруг него.

2. Имя и тип зависят от вида формы

Конструктор подбирает основному реквизиту тип под разговор. Форма одной записи получает саму запись, форма списка — список.

формаимя основного реквизитатип
элемента товараОбъектСправочникОбъект.Товары
документа поступленияОбъектДокументОбъект.ПоступлениеТоваров
списка товаровСписокдинамический список

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

3. Почему форма «знает», кем ей быть

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

основной реквизитгодится как
СправочникОбъект.Товарыформа элемента товара
динамический список товаровформа списка или выбора
нет основного реквизитаокно без предмета: ставить основной бессмысленно

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

4. Основной реквизит — реквизит формы

Легко запутаться ровно в том месте, которое разбирали в прошлом параграфе. «Объект» — реквизит формы. Он лежит в списке формы, живёт, пока открыто окно, и принадлежит форме. Но тип у него — объект справочника, и потому внутри него оказываются реквизиты объекта: артикул, единица, наименование.

реквизит формы «Объект»
  тип: СправочникОбъект.Товары
  внутри: Артикул, ЕдиницаИзмерения, …
          ↑ реквизиты объекта

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

5. Почему основной только один

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

образ    предмет разговора
строго   основной реквизит формы
адрес    список реквизитов формы,
         строка с отметкой основного

6. Форма без основного реквизита

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

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

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

7. В Конфигураторе

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

  2. Сравните два списка и назовите разницу одним предложением.

  3. Удалите произвольную форму: она была нужна только для сравнения.

Главное в одном абзаце

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


Внутри «Объекта» лежат реквизиты товара — те самые, из дерева. Но как они туда попадают и что видно, если этот реквизит развернуть?

Контрольные вопросы

  1. Как отличить основной реквизит в списке реквизитов формы?
  2. Кто создаёт основной реквизит и в каком случае его не будет?
  3. От чего зависят имя и тип основного реквизита?
  4. Как основной реквизит связан с тем, в какие основные формы объекта годится форма?
  5. «Объект» — реквизит формы или реквизит объекта? Объясните, что внутри него.
  6. Почему основной реквизит у формы только один?
  7. Для чего нужны формы без основного реквизита?

Упражнения

По образцу. Найдите основной реквизит в форме элемента «Контрагентов» и назовите его имя и тип.

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

Ловушка: «переименую — станет понятнее». Разработчик переименовал «Объект» в «Товар» и доволен. Что от этого изменилось, а что нет, и почему коллеги попросят вернуть?

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

На чтение. В списке реквизитов формы: «Объект» типа ДокументОбъект.Заказ и «ПоказыватьОплаты» типа Булево. Что из этого предмет разговора, а что — данные вокруг него?

Ответы — в конце части.