§ 4.3. Поле и его путь к данным

В свойство попадает адрес — имя того, что поле показывает. Документация говорит об этом свойстве коротко: оно содержит путь к реквизиту, с которым связан элемент. Адрес этот читается по частям, и прочитать его — значит ответить на главный вопрос о любом поле: откуда оно берёт значение.

1. Поле — элемент, который показывает одно значение

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

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

2. Путь читается по частям

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

путьчто означает
ПоказыватьПодробностиреквизит формы целиком
Объект.Артикулреквизит объекта внутри основного реквизита
Объект.Товары.Количествоколонка табличной части

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

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

3. Путь не пишут, его выбирают

Свободного текста здесь нет: путь задают, выбирая из списка того, чем форма располагает.

как появился элементчто с путём
перетащили реквизит в элементыпуть заполнен сразу
добавили элемент вручнуюпуть пуст, его выбирают из списка данных формы

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

4. Из пути поле узнаёт свой тип

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

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

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

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

5. Когда путь ведёт в пустоту

Опечатки нет, а сломаться связь всё-таки может: реквизит удалили или переименовали, а поле осталось со старым адресом.

было:  Объект.Артикул  → реквизит
стало: Объект.Артикул  → нет такого

Эти два случая стоит различать с самого начала: путь не задан — связи никогда не было; путь ведёт в пустоту — связь была и устарела. Поле в обоих случаях пустое, а чинят их по-разному: в первом связь задают, во втором ищут, что случилось с реквизитом.

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

6. Как читать поле в чужой форме

Разбор одного поля укладывается в три вопроса, и все три закрываются свойством с путём.

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

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

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

Соберём и прочитаем связь своими руками.

  1. Откройте форму элемента «Товаров», выделите поле «Артикул» и найдите в палитре свойств путь к данным. Прочитайте его вслух по частям.
Здесь будет снимок экранапалитра свойств поля «Артикул» с заполненным путём к данным
  1. Посмотрите путь у поля-флажка «ПоказыватьПодробности»: он из одной части — это данные формы, а не записи.

  2. Добавьте в элементы новое поле вручную, не перетаскиванием. Посмотрите на предпросмотр: поле есть, показывать ему нечего.

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

  4. Удалите добавленное поле: оно было нужно для опыта.

Третий шаг стоит запомнить: именно так выглядит элемент, которому не задали связь. Не «сломан», не «пуст» — просто ни с чем не связан.

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

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


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

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

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

Упражнения

По образцу. Выпишите пути к данным всех полей формы элемента «Контрагентов» и отметьте, какие из них ведут в запись, а какие — в данные формы.

Своё: предскажите вид. Не открывая редактор, скажите, что появится у поля, связанного с реквизитом «Дата» документа, с реквизитом «Контрагент» и с реквизитом формы типа Булево.

Ловушка: «поле сломалось». После того как из справочника убрали реквизит, в форме осталось поле, которое ничего не показывает. Коллега предлагает пересобрать форму заново. Что вы предложите вместо этого?

Обратный ход. У поля путь «Объект.Товары.Цена». Что можно сказать об этом поле и где оно, скорее всего, находится на форме?

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

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