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