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