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