Ответы к части 1

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

§ 1.1. Автогенерируемая форма: что это и когда срабатывает

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

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

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

К вопросу 4. Указание. В какой момент автоформа появляется?

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

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

К вопросу 6. Ответ. Потому что объект и без своих форм полностью доступен пользователю: платформа построит окно сама. Пустая ветка означает решение, а не недоделку.

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

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

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

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

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

§ 1.2. Что попадает в автогенерируемую форму: правила сборки

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

К вопросу 2. Ответ. Реквизиты, которые есть у объекта сами по себе: код, наименование, пометка удаления, ссылка у справочника; номер, дата, признак проведения у документа. Настройки — в окне редактирования объекта, на закладке «Данные», за кнопкой «Стандартные реквизиты».

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

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

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

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

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

К упражнению «Своё: нарисуйте по дереву». Ответ. Сверху код и наименование, дальше в порядке дерева: «Должность» — поле ввода, «ДатаПриёма» — поле с календарём, «Уволен» — флажок, «Руководитель» — поле с кнопкой выбора, открывающее список сотрудников. Внизу кнопки «Записать и закрыть» и «Записать».

К упражнению «Ловушка: поля не видно». Указание. Что должно случиться между правкой дерева и появлением поля у пользователя?

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

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

§ 1.3. Виды автогенерируемых форм: список, элемент, выбор, группа

К вопросу 1. Ответ. Форма списка — какие записи есть; форма элемента — какова эта запись; форма выбора — выберите одну; форма группы — какова эта папка.

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

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

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

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

К вопросу 6. Ответ. Правило сборки: все они собираются из одного описания объекта — стандартные реквизиты, свои реквизиты, табличные части, стандартные команды, порядок как в дереве, вид поля по типу.

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

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

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

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

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

§ 1.4. Где у платформы предел: когда автоформ перестаёт хватать

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

К вопросу 2. Ответ. Ничего: в автоформе нет ни надписей, ни пояснений, ни разделителей. Предупредить, что цену вводят без налога, нечем.

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

К вопросу 4. Ответ. Только стандартные: записать, провести, закрыть. Своих действий — подбора, заполнения по прошлому документу, печати — в ней не бывает.

К вопросу 5. Указание. Поведение поведению рознь: одно следует из свойства, другое нужно описать шагами.

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

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

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

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

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

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

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

§ 1.5. Когда оставляем автоформу, когда делаем свою

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

К вопросу 2. Ответ. Автоформа строится заново при каждом открытии, по текущему описанию объекта. Своя форма собрана однажды: новый реквизит в неё нужно поставить руками.

К вопросу 3. Ответ. По работе, а не по виду окна: как часто с формой работают и что именно мешает. Служебный справочник живёт на автоформе, ежедневный документ просит своей формы.

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

К вопросу 5. Указание. Что дерево описывает и что живёт дольше — данные или окно?

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

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

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

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

К упражнению «Ловушка: „своя форма догонит“». Ответ. Не подхватит: своя форма собрана один раз и новые реквизиты сама не показывает.

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

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