Заметки из Зазеркалья

31.03.2017

Схема данных

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле Updates_ru.htm.

Реализовано в версии 1.5.0.1122.

В среде разработки 1C:Enterprise Development Tools (EDT) мы реализовали новый, можно сказать, экспериментальный инструмент. Он, как и дерево объектов конфигурации, предназначен для того, чтобы представить разработчику всё прикладное решение.

Однако для этого он использует другую модель визуализации, в которой структуры данных представляются в виде так называемой ER-диаграммы (Entity Relationship Diagram). Новый инструмент мы назвали схема данных, поскольку ER-диаграмма представляет собой множество прямоугольников, связанных линиями.

2.png

Прежде чем рассказать о новом инструменте, нужно сделать небольшое отступление о ER-модели данных вообще. До сих пор эта модель не использовалась 1С:Предприятием, поэтому у вас может возникнуть естественный вопрос, зачем она понадобилась сейчас, и можно ли обойтись без неё.

Зачем в 1С:Предприятии понадобилась ER-модель

Необходимость использования этой модели данных в 1С:Предприятии прямо связана с ростом платформы и значительным усложнением прикладных решений. По этой же причине мы реализовали схему данных в составе новой среды разработки EDT, которая ориентирована именно на большие конфигурации.

Если посмотреть на любую базу данных 1С:Предприятия то вы увидите, что она основана на реляционной модели. Грубо говоря, она состоит из таблиц, которые связаны между собой различными способами. Таблицы имеют поля, из этих полей формируются ключи, которые позволяют связывать таблицы друг с другом.

Такая модель удобна для компьютерной обработки, но неудобна для визуального представления разработчику. Особенно неудобна она в случае 1С:Предприятия, где большинство таблиц имеет не абстрактное, а совершенно конкретное прикладное значение.

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

5.png

Современные прикладные решения 1С:Предприятия содержат большое количество объектов конфигурации, 10 тысяч и более. При таком количестве объектов задача нахождения их взаимных связей с помощью имеющихся инструментов становится довольно трудоёмкой. Причём трудоёмкость растёт не только за счёт прямого увеличения времени поиска ссылок среди большого количества объектов. Она растёт и косвенно, за счёт того, что найденные связи необходимо как-то запомнить и визуализировать. И если таких связей много, встаёт вопрос выбора подходящего внешнего инструмента.

Использование ER-модели (Entity-Relationship Model) как раз решает эту проблему. ER-модель представляет любую структуру данных в виде совокупности сущностей, обладающих атрибутами. Эти сущности взаимодействуют между собой при помощи связей.

В наших терминах, в терминах 1С:Предприятия, сущность это объект конфигурации, а атрибут это реквизит объекта конфигурации в широком смысле: реквизит, измерение, ресурс и т.д. Таким образом, ER-модель базы данных 1С:Предприятия это набор (никак не структурированный) объектов конфигурации (с их реквизитами), между которыми существуют некоторые связи. А схема данных это инструмент, позволяющий визуализировать эту модель.

Всё это теоретическое отступление мы написали только ради того, чтобы обратить ваше внимание на две важные вещи.

Во-первых, схема данных это не что-то опциональное, это не «бантик», добавляющий привлекательности среде разработки. Это вполне себе самостоятельный инструмент моделирования предметной области, обладающий своими преимуществами и особенностями.

Во-вторых, схема данных это не аналог и не замена дерева объектов конфигурации. Это ещё один инструмент разработки, но он, можно сказать, имеет свою собственную аудиторию.

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

В отличие от дерева объектов схема данных ориентирована скорее на тех разработчиков, которые не знакомы с прикладным решением глубоко, но которым необходимо быстро разобраться в устройстве какой-то его части. Также схема данных удобна для документирования разрабатываемых механизмов (в том числе и самими разработчиками), поскольку в понятном виде показывает связи между объектами или группами объектов.

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

Сценарий 1. Какие объекты конфигурации использует данный объект

Это самый простой сценарий. Например, у вас есть регистр Продажи. Вам нужно узнать, какие объекты конфигурации использует это регистр. То есть, на какие объекты конфигурации ссылаются его реквизиты, измерения и ресурсы.

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

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

1_.png

EDT сразу же показывает вам ER-диаграмму. В неё включаются все объекты первого уровня, которые использует регистр Продажи.

2.png

На этой схеме данных видно, что регистр Продажи использует документ РасходТовара и справочники Товары и Контрагенты. Эти связи исходят из регистра. Кроме этого на схеме показаны и взаимные связи между самими используемыми объектами (между документом и справочниками).

Вообще говоря, связей может быть много. Чтобы легче ориентироваться в них вы можете выделить мышью исследуемый объект, и тогда исходящие из него связи будут подсвечены. Также будут подсвечены и реквизиты объекта, задействованные в этих связях.

3.png

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

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

4.png

Закрытой стрелкой обозначается связь с владельцем, а ромбом – с регистратором. Это помогает визуально отличать «техногенные» связи от прикладных.

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

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

Поэтому здесь, в этом месте, не нужно увлекаться наведением «красоты», для этого есть другой сценарий, который мы тоже рассмотрим далее.

Сценарий 2. Разобраться с устройством механизма или подсистемы

Второй сценарий заключается в том, что вам нужно разобраться с устройством незнакомого механизма или подсистемы. Например, нужно понять, как устроена подсистема ТоварныеЗапасы. Какие объекты в ней задействованы и как они связаны друг с другом.

1.png

В этом случае, как и в первом сценарии, вы можете открыть редактор этой подсистемы и перейти на закладку Схема данных. Здесь вы увидите более интересную картину, потому что кроме объектов на этой схеме будут показаны и подчинённые подсистемы.

2.png

Подсистемы являются группами объектов. Содержащиеся в них объекты имеют связи с объектами, которые находятся «снаружи». Чтобы посмотреть, как устроена любая из этих подсистем, например подсистема Характеристики, вы можете кликнуть на ней прямо в схеме, и увидите её устройство.

3_.png

Интересным моментом является то, что схема данных поддерживает переходы Вперед / Назад по аналогии с браузерами. Поэтому, разобравшись с устройством этой подчинённой подсистемы, вы можете просто нажать кнопку Назад, и вернуться к предыдущей схеме.

Сценарий 3. Документирование

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

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

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

1_.png

Например, вы разрабатываете механизм работы с пользователями, и для его документирования хотите использовать схему данных. Тогда вы самостоятельно формируете схему, перетаскивая в неё из навигатора 1С:Предприятие нужные вам объекты. Например, справочник Пользователи.

2.png

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

3.png

Схема примет у вас такой вид:

4.png

Здесь видно, что справочник Пользователи используется в документе Заказ и в плане обмена Мобильные. Чтобы лучше видеть, в каких именно реквизитах он задействован, вы можете раскрыть группы реквизитов и раздвинуть блоки объектов по ширине.

5.png

После этого, скорее всего, схема примет не очень красивый вид.

6.png

Чтобы сделать её «читабельной» вы можете не перетаскивать объекты мышью, а использовать команду Автоматическое расположение. Она заново расположит объекты в схеме, не меняя их размеров.

7.png

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

8.png

В схеме появится справочник Склад.

9.png

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

Для редактирования схемы данных есть довольно широкие возможности. Вы можете двигать линии связей.

10.png

Передвигая объекты, вы можете выравнивать их относительно соседних объектов при помощи направляющих. Направляющие отображаются автоматически.

11.png

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

12.png

Если вы «перемудрили» со связями, или не получается хорошо расставить их вручную, вы можете воспользоваться командой Автоматическое построение связей.

13.png

Эта команда, не изменяя размеры и положение объектов, построит связи заново.

14.png

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

16.png

Кроме справочника Контрагенты его используют также план видов характеристик и регистр сведений. Но эти объекты не являются какими-то самостоятельными сущностями, взаимодействие которых между собой интересно в этой схеме. Они являются частью механизма характеристик, реализованного в прикладном решении. Поэтому вы можете выделить их мышью и объединить в группу.

17.png

В результате схема примет более простой вид, из которого будет понятно, что справочник Регионы используется только справочником Контрагенты. Но кроме этого, как и подавляющее большинство объектов этого прикладного решения, он задействован в механизме характеристик. Подробности этого механизма в данном случае не важны.

18_.png

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

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

19_.png

Схемы данных, построенные EDT или созданные вами, могут быть довольно большими. Для навигации по ним приходится прокручивать экран по вертикали и горизонтали. Чтобы не «заблудиться» в больших схемах вы можете использовать окно навигатора, которое открывается командой из панели инструментов.

21.png

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

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

22_.png

Сценарий 4. Разработка

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

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

23.png

Но теоретически ничто не мешает реализовать и другие функции разработки. Например, создание новых реквизитов объекта не путём их добавления в дерево объектов конфигурации, а путём «протягивания» связи от одного объекта к другому в схеме данных.

Как мы говорили в начале, схема данных это не только новый, но и в некоторой степени экспериментальный инструмент. Мы, конечно, имеем собственные планы по его дальнейшему развитию, но вместе с этим нас интересуют и ваши мысли по этому поводу. Также нам было бы интересно узнать ваше мнение в том случае, если раньше вам уже приходилось (применительно к 1С:Предприятию) решать подобные задачи сторонними средствами.

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

Теги: 1C:EDT  разработка 

Рассказать друзьям: