§ 4.3. Поле и его путь к данным
В свойство попадает адрес — имя того, что поле показывает. Документация говорит об этом свойстве коротко: оно содержит путь к реквизиту, с которым связан элемент. Адрес этот читается по частям, и прочитать его — значит ответить на главный вопрос о любом поле: откуда оно берёт значение.
1. Поле — элемент, который показывает одно значение
Из пяти видов элементов поле встречается чаще прочих, и работа у него простая: показать одно значение и, если разрешено, дать его изменить. Строки — не его дело, для них есть таблица.
В документации это сказано так: поле предназначено для показа и редактирования реквизитов формы нетабличных типов, а внутри таблицы поле становится её колонкой. Читать это нужно как «поле показывает одно значение, а не таблицу целиком»: значение это может быть и из табличной части — тогда поле и живёт колонкой. К колонкам вернёмся в главе о списках.
2. Путь читается по частям
Путь — это имя, собранное через точку. Первая часть называет то, чем располагает форма, то есть её реквизит — чаще всего основной, «Объект»; остальные части уточняют, что взять внутри.
| путь | что означает |
|---|---|
| ПоказыватьПодробности | реквизит формы целиком |
| Объект.Артикул | реквизит объекта внутри основного реквизита |
| Объект.Товары.Количество | колонка табличной части |
Правило чтения у нас уже есть — оно из главы о данных: начинается с «Объект.» — значит, перед нами данные записи, о которой форма разговаривает; начинается с другого имени — значит, форма держит это значение у себя.
Путь к данным — адрес, а не копия. Поле не держит значение у себя: оно показывает то, что лежит в данных формы по этому адресу, и по этому же адресу отправляет введённое обратно.
3. Путь не пишут, его выбирают
Свободного текста здесь нет: путь задают, выбирая из списка того, чем форма располагает.
| как появился элемент | что с путём |
|---|---|
| перетащили реквизит в элементы | путь заполнен сразу |
| добавили элемент вручную | путь пуст, его выбирают из списка данных формы |
Отсюда следствие, успокаивающее новичка: выбирая из списка, ошибиться трудно — там только то, что у формы есть. Набрать путь руками редактор тоже позволяет, и вот тогда опечатка возможна. А испортиться путь может и позже — об этом чуть ниже.
4. Из пути поле узнаёт свой тип
Связь даёт полю больше, чем значение. Из данных приходит тип, а из типа — то, как поле выглядит и ведёт себя по умолчанию.
| тип, пришедший из данных | что появляется у поля |
|---|---|
| строка | обычный ввод текста |
| число | ввод цифр, выравнивание вправо |
| дата | кнопка календаря |
| булево | флажок |
| ссылка на запись | кнопка выбора, если выбор разрешён |
Правило, которое встречалось ещё в разговоре об автоформах, здесь получает точное объяснение. Вид поля следует из типа реквизита не потому, что платформа угадывает, а потому, что поле спрашивает тип по своему адресу. Слово «по умолчанию» тут не лишнее: у поля есть и собственное свойство «Вид», которым выбор платформы можно изменить, — об этом следующий параграф.
Поле не хранит тип у себя: оно спрашивает его у данных, на которые указывает. А вид, подсказанный типом, можно и переопределить.
5. Когда путь ведёт в пустоту
Опечатки нет, а сломаться связь всё-таки может: реквизит удалили или переименовали, а поле осталось со старым адресом.
было: Объект.Артикул → реквизит
стало: Объект.Артикул → нет такого
Эти два случая стоит различать с самого начала: путь не задан — связи никогда не было; путь ведёт в пустоту — связь была и устарела. Поле в обоих случаях пустое, а чинят их по-разному: в первом связь задают, во втором ищут, что случилось с реквизитом.
Проверять это стоит там же, где менялось: изменили состав данных — пройдите по элементам и посмотрите их пути. Привычка та же, что из разговора о цене своей формы: поменяли объект — проверьте его формы.
6. Как читать поле в чужой форме
Разбор одного поля укладывается в три вопроса, и все три закрываются свойством с путём.
| вопрос | ответ по пути |
|---|---|
| откуда значение | адрес целиком |
| это данные записи или формы | начинается ли путь с «Объект.» |
| где искать источник | в дереве объекта или в реквизитах формы |
Есть и четвёртый вопрос, который задают, когда пути нет вовсе: чем занят элемент, если он ничего не показывает? Ответов два. Либо это кнопка, группа или декорация — им путь и не положен. Либо это поле, которому связь просто не задали: так бывает у элемента, добавленного вручную.
7. В Конфигураторе
Соберём и прочитаем связь своими руками.
- Откройте форму элемента «Товаров», выделите поле «Артикул» и найдите в палитре свойств путь к данным. Прочитайте его вслух по частям.
-
Посмотрите путь у поля-флажка «ПоказыватьПодробности»: он из одной части — это данные формы, а не записи.
-
Добавьте в элементы новое поле вручную, не перетаскиванием. Посмотрите на предпросмотр: поле есть, показывать ему нечего.
-
Задайте новому полю путь к данным, выбрав «Объект.Наименование». Теперь на форме два элемента показывают одно значение — то самое, о чём говорил прошлый параграф.
-
Удалите добавленное поле: оно было нужно для опыта.
Третий шаг стоит запомнить: именно так выглядит элемент, которому не задали связь. Не «сломан», не «пуст» — просто ни с чем не связан.
Главное в одном абзаце
У поля есть свойство, в котором записан путь к данным — адрес того, что поле показывает; документация так и говорит: путь к реквизиту, с которым связан элемент. Читается адрес по частям через точку: первая часть называет реквизит формы, остальные уточняют, что взять внутри, — «Объект.Артикул» это данные записи, «ПоказыватьПодробности» данные самой формы. Пишут путь не руками: его выбирают из списка того, чем форма располагает, поэтому опечатки почти исключены — зато адрес может повиснуть, если реквизит потом удалили или переименовали. Из пути поле узнаёт тип, а из типа берётся его вид и поведение: календарь у даты, кнопка выбора у ссылки, флажок у булева — поле не знает своего типа, оно узнаёт его у данных. Поэтому разбор любого поля начинается с одного места: посмотреть путь и прочитать его по частям.
Тип пришёл из данных и сам выбрал полю вид. Но у поля есть и собственное свойство «Вид» — значит, выбор платформы можно изменить? И насколько далеко это заходит: одно значение — сколько способов показать?
Контрольные вопросы
- Что записано в свойстве «путь к данным» и как оно читается?
- Что означает путь, начинающийся с «Объект.», и чем он отличается от пути из одной части?
- Как выглядит путь к колонке табличной части?
- Почему опечатка в пути почти невозможна и как он тогда может повиснуть?
- Откуда поле берёт свой тип и что из этого следует для его вида?
- Что показывает поле, которому не задали путь?
- Какие три вопроса о поле закрывает его путь к данным?
Упражнения
По образцу. Выпишите пути к данным всех полей формы элемента «Контрагентов» и отметьте, какие из них ведут в запись, а какие — в данные формы.
Своё: предскажите вид. Не открывая редактор, скажите, что появится у поля, связанного с реквизитом «Дата» документа, с реквизитом «Контрагент» и с реквизитом формы типа Булево.
Ловушка: «поле сломалось». После того как из справочника убрали реквизит, в форме осталось поле, которое ничего не показывает. Коллега предлагает пересобрать форму заново. Что вы предложите вместо этого?
Обратный ход. У поля путь «Объект.Товары.Цена». Что можно сказать об этом поле и где оно, скорее всего, находится на форме?
На чтение. В форме два элемента: у первого путь «Объект.Контрагент», у второго пути нет вовсе, а на экране в нём виден текст. Что это за элементы?
Ответы — в конце части.