Ответы к главе 10

§ 10.1. Пять вопросов к любой форме

К вопросу 1. Ответ. Чья это форма; о чём она; откуда у неё данные; как сложены элементы; что можно сделать.

К вопросу 2. Ответ. Логика одна, разное время и место: карту пишут на бумаге при разборе, вопросы задают на ходу и держат в голове.

К вопросу 3. Ответ. Он задаёт ожидания: от карточки справочника ждут записи, от документа — проведения, от отчёта — настроек и результата, от формы обработки — задачи. Без него легко искать запись там, где её нет.

К вопросу 4. Ответ. Что живёт в базе, а что исчезнет вместе с окном: данные записи, строки запроса или таблица значений в форме.

К вопросу 5. Ответ. Когда очередной ответ уже ничего не меняет в том, что вы собираетесь делать.

К вопросу 6. Указание. Она не о форме, а о последствиях.

Полное решение. Проверка «что останется, когда окно закроют». Она приносит находки — например, задачу, которую некуда перенести, — и показывает, что какой-то из пяти ответов неполон: не можете ответить, значит, что-то прочитано не до конца.

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

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

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

К упражнению «Ловушка: „сразу к кнопкам"». Ответ. Первый: чья это форма. Если форма справочника, «Провести» в ней быть не может вовсе; если документа — кнопка неактивна по состоянию записи или по правам.

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

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

§ 10.2. Контрольная задача: форма из рабочей системы

К вопросу 1. Ответ. Масштабом и происхождением: десятки реквизитов, несколько страниц, много авторов и годы истории. Устройство то же — те же виды элементов, пути, роли форм.

К вопросу 2. Ответ. Форму документа, который заводят часто, с табличной частью и средней величины. Не стоит начинать с форм настроек и служебных: в них меньше смысла и больше механики.

К вопросу 3. Ответ. В демонстрационной базе придуманные данные и портить там нечего. В чужой рабочей базе живые данные и живые люди.

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

К вопросу 5. Ответ. Утонуть в деталях; ждать книжной аккуратности; объяснять замыслом то, что осталось от истории.

К вопросу 6. Указание. Критериев четыре, и последний главный.

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

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

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

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

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

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

К упражнению «На чтение». Ответ. Либо команда пришла от другого объекта или из библиотеки — глобальная команда; либо кнопку добавил код при открытии формы. И то и другое — обычное дело в типовых; отметить и идти дальше.

§ 10.3. Живая система: модель и слой истории

К вопросу 1. Ответ. Годы платформы, много авторов, библиотеки и доработки под заказчика.

К вопросу 2. Ответ. Это обещание платформы вести себя по правилам выбранной версии. В старом режиме части свойств и возможностей форм нет, а кое-что показывается только в нём.

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

К вопросу 4. Ответ. Собственный объект завели в этой конфигурации; заимствованный пришёл из расширяемой. Значит, правки могут лежать в расширении — отдельном слое рядом с конфигурацией.

К вопросу 5. Ответ. Если в реальной форме что-то не вписывается в модель — это не повод отказаться от модели, а повод спросить, что именно не вписывается и почему.

К вопросу 6. Указание. Последний шаг — не про программу.

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

К вопросу 7. Ответ. За каждым решением могут стоять причины, которых вы не знаете. Убранное поле кому-то нужно раз в квартал — и очень нужно.

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

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

К упражнению «Ловушка: „значит, модель неверна"». Ответ. Модель описывает правила платформы, и они не изменились. Спросить стоит, что именно не сошлось: скорее всего, он встретил след библиотеки, доработки или старого режима совместимости.

К упражнению «Обратный ход». Ответ. В расширении: оно меняет форму, не трогая исходных объектов. Либо кнопку добавил код при открытии формы. В самой форме объяснения не будет.

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

§ 10.4. Своя задача: прокат велосипедов

К вопросу 1. Ответ. В Конфигураторе работа начинается раньше решения, и переделывать собранное дороже и жальче, чем перечеркнуть лист.

К вопросу 2. Ответ. О чём форма, что показать и как сложить. Те же вопросы, которыми читают чужие формы, только заданные себе.

К вопросу 3. Ответ. С описания работы человека: кто что делает и в каком порядке. Из такой фразы форма вырастает почти сама, а из «нужна форма документа» не вырастает ничего.

К вопросу 4. Ответ. Карточка велосипеда и список — что это за велосипед и свободен ли он; форма выдачи — кто взял, что взял, на какой срок; форма отчёта — сколько выдач и на какую сумму.

К вопросу 5. Ответ. Автоформа — бесплатный черновик: она показывает, чего не хватает, и где расхождений со скетчем нет, своя форма не нужна.

К вопросу 6. Указание. Сколько полей нужно, чтобы страницы оправдались?

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

К вопросу 7. Ответ. Расхождения: что появилось, чего не стало, что платформа разместила иначе. Каждое — то, чего вы не знали о формах до сборки.

К упражнению «По образцу». Ответ. В списке нужны наименование, тип велосипеда и признак занятости — чтобы приёмщик с одного взгляда видел свободные. Остальное открывают в карточке.

К упражнению «Своё: ещё один документ». Ответ. «Приёмщик принимает велосипед: находит выдачу, отмечает возврат, считает доплату за просрочку». На скетче — ссылка на выдачу, дата возврата, состояние, доплата и кнопка записи.

К упражнению «Ловушка: „соберу сразу в Конфигураторе"». Ответ. Он пропустил первый шаг — описание работы. Форма собралась из того, что подвернулось, и переделка ушла на то, что можно было решить на бумаге за десять минут.

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

К упражнению «На чтение». Ответ. Лишние кнопки — стандартные команды от объекта: записать, записать и закрыть, провести, отменить проведение. В скетчах их обычно не рисуют, потому что их не задают.

§ 10.5. Где здесь код: события и обработчики

К вопросу 1. Ответ. В действие команды, в события формы и в события элементов.

К вопросу 2. Ответ. Событие — момент, о котором платформа сообщает: форма создаётся, открывается, поле изменилось. Обработчик — процедура, которую платформа вызывает в этот момент.

К вопросу 3. Ответ. По имени: «при создании на сервере» происходит на сервере, «при открытии» и «при изменении» — на клиенте, когда окно уже у человека.

К вопросу 4. Ответ. Пометки «на клиенте» и «на сервере» перед именем процедуры: они говорят, где процедуре работать. Читателю форм достаточно знать, что они есть и откуда растут — из клиент-серверной границы.

К вопросу 5. Ответ. Поле заполнилось само; сумма пересчиталась при вводе; нестандартный вопрос при закрытии; часть полей появилась не сразу; кнопка не делает ничего.

К вопросу 6. Указание. Что остаётся верным, даже когда элемент добавил код?

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

К вопросу 7. Ответ. Где форма оживает: что происходит при открытии и записи, какие поля влияют на другие, какие команды написаны, а какие заготовлены, — и насколько форма вообще «живая».

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

К упражнению «Своё: предскажите обработчик». Ответ. К изменению поля велосипеда: выбрали велосипед — пересчитали залог. Если залог зависит ещё и от срока, обработчик понадобится и у поля срока.

К упражнению «Ловушка: „само заполнилось — значит, магия"». Ответ. Сначала правила объекта: заполнение по умолчанию, заполнение на основании. Потом обработчик в модуле формы. Порядок именно такой: правило видно без кода.

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

К упражнению «На чтение». Ответ. Его добавил код при открытии формы. Правилам он подчиняется тем же: показывает реквизит через путь к данным, лежит в группе, может иметь команду.

§ 10.6. Маршрут дальше

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

К вопросу 2. Ответ. События и код формы; запросы с компоновкой данных; программное создание форм; мобильный интерфейс.

К вопросу 3. Ответ. Первые две: события и запросы. Остальные берут по задаче.

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

К вопросу 5. Ответ. За каждым динамическим списком и каждым отчётом стоит запрос. Не читая запросов, вы видите, что список показывает, но не знаете, откуда он это берёт.

К вопросу 6. Ответ. Читать чужое и отвечать на пять вопросов; называть замысел одной фразой; вести список находок; спрашивать людей.

К вопросу 7. Указание. Все три — про ожидание окончательной ясности.

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

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

К упражнению «Своё: три непонятные формы». Ответ. Граница у каждой будет своя: у одной код, у другой запрос, у третьей права или история системы. Чаще всего повторяется одна — она и есть следующий шаг.

К упражнению «Ловушка: „сначала выучу всё"». Ответ. Что ждать нечего: формы читаются уже сейчас, без кода и запросов, а умение читать делает изучение кода осмысленным — вы будете знать, куда он приходит и зачем.

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

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