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