§ 8.2. Подсистемы: из чего складываются разделы

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

1. Подсистема — это вид деятельности

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

вид деятельностиподсистемараздел у пользователя
закупать товарЗакупки«Закупки»
продаватьПродажи«Продажи»
вести складСклад«Склад»

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

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

2. У подсистемы два читателя

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

кто смотритчто получает
пользовательраздел в программе
разработчикотбор объектов в дереве конфигурации

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

3. Что задают у подсистемы

Свойств немного, и почти все — про то, каким раздел увидит пользователь.

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

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

Такое бывает и нарочно: подсистемой пользуются как группировкой для разработчика, не показывая её пользователю.

4. Объект может жить в двух разделах сразу

Состав подсистемы — список объектов, которые к ней относятся. Один объект может входить в несколько подсистем: документация разрешает это прямо, «допускается указание принадлежности к нескольким подсистемам».

объектв каких подсистемах
«Поступление товаров»Закупки
«Реализация товаров»Продажи
«Контрагенты»Закупки и Продажи
«Товары»Закупки, Продажи, Склад

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

5. Вложенные подсистемы: группы внутри раздела

Подсистемы можно вкладывать друг в друга, и вложенные разделом не становятся — они дают группы команд внутри раздела своего родителя.

Подсистемы
├── Закупки          → раздел «Закупки»
│   ├── Заказы       → группа в разделе
│   └── Поставщики   → группа в разделе
└── Продажи          → раздел «Продажи»

Есть у подсистемы и свойство на особый случай — «использовать одну команду». Документация описывает его так: подсистема должна содержать только одну команду, и при выборе такого раздела команда выполняется сразу. Раздел ведёт себя как кнопка: щёлкнули — и сразу открылось то единственное, ради чего он существует. Случай частный, но знать о нём полезно: встретив раздел, который ничего не показывает, а сразу что-то делает, вы теперь знаете, где это задано.

6. Как читать подсистемы в чужой конфигурации

Ветка подсистем — самая короткая дорога к замыслу программы.

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

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

7. В Конфигураторе и в Предприятии

Заведём «Канцтоварам» два раздела.

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

  2. Так же заведите подсистему «Продажи».

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

  4. Вернитесь в Конфигуратор и посмотрите у обеих подсистем свойство состава: оно пустое. Наполним его со следующего разговора — тогда и разделы заработают.

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

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


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

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

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

Упражнения

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

Своё: разделите работу. Для магазина с доставкой предложите три-четыре подсистемы и скажите, по какому признаку вы делили.

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

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

На чтение. В программе восемнадцать разделов, и в каждом по одной-две команды. Что вы скажете о том, как автор делил работу?

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