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

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

1. Откуда берутся «странности»

Типовая конфигурация — не чертёж, а постройка, которую много лет достраивали.

источник различийчто от него остаётся в формах
годы платформырешения, принятые, когда платформа была другой
много авторовразные привычки в именах и раскладке
библиотекиобщие механизмы, которых в самой конфигурации нет
доработки под заказчикаэлементы, нужные одному предприятию

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

Три странности из начала разговора раскладываются по этой же таблице. Имя, которое ни о чём не говорит, — обычно след библиотеки. Страница, куда не заходят, — остаток прежней задачи. Поле, которое никто не заполняет, — чаще всего доработка под одно предприятие.

Модель описывает, как устроена платформа. Типовая конфигурация показывает, как ею пользовались двадцать лет. Между ними лежит слой истории.

2. Платформа и сама носит историю

Это не упрёк конфигурациям: историю видно и в самой платформе.

где видночто это значит
режим совместимостиконфигурация может работать по правилам старой версии
обычные формы рядом с управляемымистарый способ описания форм никуда не делся
свойства, которые видно не всегдачасть из них показывается только в старом режиме

Список режимов совместимости в платформе длинный: от версии 8.1 до нынешних. Каждая строка — обещание платформы вести себя по правилам того года. Для форм это значит вот что: многое из того, что мы разбирали, появилось не сразу, и в старом режиме части свойств и возможностей просто нет. А кое-что платформа показывает только в старом режиме: у корня конфигурации есть свойство состава, и документация прямо оговаривает — оно видно, лишь когда выбран режим совместимости с версией 8.1.

Отсюда первое практическое следствие: прежде чем удивляться форме, посмотрите, по правилам какого года живёт конфигурация.

3. Библиотеки: то, чего в конфигурации нет

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

что видит читатель формычто за этим
реквизит с незнакомым префиксом в имениимя из библиотеки, не из этой конфигурации
кнопка, которой нет в командах объектакоманда из общего механизма
элемент, появившийся при открытииего добавил код библиотеки

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

4. Доработки: своё и заимствованное

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

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

Отсюда второе следствие для чтения: если форма ведёт себя не так, как написано в её дереве, причина может лежать вне конфигурации — в расширении. Искать объяснение в самой форме тогда бесполезно.

5. Якорное правило

Главное, с чем стоит закрыть эту главу, формулируется одной фразой.

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

Дальше действуют по трём шагам.

шагчто делаем
описатьчто именно не укладывается: элемент, имя, поведение
датироватькогда это могло появиться: режим совместимости, библиотека, доработка
спроситьу автора, у пользователя, в истории правок

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

6. Чего не стоит делать

Три реакции на «странности» выглядят естественно и портят дело.

реакцияпочему плохо
решить, что модель невернамодель описывает правила платформы, а не то, как ими пользовались двадцать лет
решить, что вы не поняливы поняли; просто перед вами ещё и история
переделать чужую форму «по модели»за каждым решением могут стоять причины, которых вы не знаете

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

7. В Конфигураторе

Найдём в живой системе следы истории, а потом применим к своей находке трёхшаговый приём.

  1. Откройте демонстрационную базу типовой конфигурации и посмотрите в свойствах конфигурации режим совместимости. Запишите, какой год указан.
Здесь будет снимок экранасвойство режима совместимости в свойствах конфигурации демонстрационной базы
  1. Поищите в дереве обычные формы — те, что описаны старым способом, без структуры элементов. Если нашлись, посмотрите, у каких объектов они остались.

  2. Найдите реквизит или команду с префиксом в имени — след библиотеки. Отметьте как «не из этой формы».

  3. Выберите одну «странность» из своего разбора прошлого параграфа и пройдите по трём шагам: описать, датировать, сформулировать вопрос.

  4. Запишите вопрос так, чтобы его можно было задать человеку: коротко и без упрёка.

Главное в одном абзаце

Разбирая живую систему, вы встретите то, что в чистую модель не укладывается, и это нормально: типовую конфигурацию много лет достраивали разные люди, в разные годы, под разные задачи. Историю носит и сама платформа — режим совместимости позволяет конфигурации жить по правилам старой версии, обычные формы соседствуют с управляемыми, а часть свойств видна только в старом режиме. Рядом работают библиотеки: их реквизиты и команды видны в форме, но в дереве этой формы их не найти. А доработки видно по принадлежности объекта — собственный он или заимствованный из расширяемой конфигурации; правки формы могут лежать вообще в расширении. Якорное правило: если что-то не вписывается в модель, это не повод отказаться от модели, а повод спросить, что именно не вписывается и почему, — и дальше описать, датировать и спросить у людей. Чего делать не стоит: считать модель неверной, считать себя непонявшим и приводить чужую форму «в порядок» без разговора с теми, кто в ней работает.


Разбор чужого — половина умения. Вторая половина обратная: придумать окно для работы, которой в программе пока нет. Чем её придумывают — и почему не мышкой?

Контрольные вопросы

  1. Назовите четыре источника различий между моделью и живой системой.
  2. Что такое режим совместимости и как он объясняет странности в формах?
  3. Почему не всё, что видно в форме, находится в её дереве?
  4. Что говорит о доработках принадлежность объекта?
  5. Сформулируйте якорное правило.
  6. Какие три шага делают со «странностью»?
  7. Почему опасно приводить чужую форму «в порядок по модели»?

Упражнения

По образцу. Найдите в демонстрационной базе три реквизита с префиксами в именах и предположите, из какой они области.

Своё: три вопроса. Возьмите три находки из своих разборов и превратите каждую в вопрос к человеку — коротко и без упрёка.

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

Обратный ход. Форма ведёт себя не так, как написано в её дереве: кнопка делает то, чего в командах нет. Где искать причину?

На чтение. В конфигурации указан режим совместимости десятилетней давности. Что это говорит о её формах и о том, чего в них ждать?

Ответы — в конце части.