Схема объекта метаданных
Лекция № 1.
Тема: Общая концепция системы 1С:Предприятие 8.
Ну во-первых, в системе «1С:Предприятие» важно понятие «экономическое ПО» – это программное обеспечение предназначающееся прежде всего для ведения бизнеса. То есть на платформе «1С:Предприятие 8» игрушек не напишешь (хотя прецеденты были). Во-вторых - это система управления базой данных, т.е. все правила работы с базами данных к системе применить можно.
С точки зрения разработчика систему «1С:Предприятие 8» можно представлять одним из двух способов:
1. Совокупность таблиц: все данные системы хранятся в таблицах. Например информация о сотрудниках предприятия хранится в специальной таблице, где есть поля «ФИО», «Пол», «Адрес», «Дата рождения» и прочее.
2. Совокупность объектов. Это более «продвинутое» с точки зрения языков программирования понятие. Под объектом системы мы, например, можем представить себе тот же самый справочник «Сотрудники», только теперь под этим понятием будут не только поля перечисленные выше (атрибуты объекта), но и «вложенная» таблица с списком детей сотрудника, и некий набор методов управления этим объектом, например «Удалить». То есть объект – это набор таблиц с их полями (свойства объекта) и набор программных средств для манипулирования объектом (методы объекта).
Объекты системы могут как составлять часть метаданных (описание структуры и свойств данных), так и являться вспомогательными объектами, например, в объекте метаданных хранится информация о дне рождения сотрудника, но для редактирования пользователем этой информации используется специальный вспомогательный объект «Форма» в котором расположены элементы управления, в том числе и элемент «Дата рождения».
Над таблицами базы данных на прямую нельзя производить манипуляции – таблица не всегда представляет собой один объект, поэтому таблицы базы данных доступны только для чтения, обращение к таким таблицам обычно происходит с помощью запросов системы. Любое манипулирование базой данных производится с помощью объектной модели.
Для более детального знакомства с типичным образцом объекта метаданных разберем свойства дерева метаданных.
Первые шаги в дереве метаданных. (откроем конфигурацию)
Итак, пользуясь документацией системы «1С:Предприятие» из стандартной поставки вы установили платформу и подключили к ней пустую конфигурацию.
Дерево метаданных
Для продолжения разговора о метаданных предлагаю открыть дерево конфигурации (меню «Конфигурация» - «Открыть Конфигурацию»).
То что вы увидели в дереве метаданных и есть те самые типы объектов которые будут составлять метаданные. То есть именно они определяют структуру базы данных. Язык программирования в «1С:Предприятии 8» иногда называют объектно-ориентированным, я бы назвал его «почти ООП» и все опять же из-за дерева метаданных. Это дерево можно назвать классами объектов системы и они жестко определены. Нет возможности создать новые типы объектов средствами встроенного языка, однако можно создать сколь угодно много объектов определенного класса и наделить его уникальными свойствами.
Свойства объекта
На рисунке справа показаны свойства объекта «Справочник» (желтым выделены части свойств встречающиеся в большинстве других объектах). Для описания структуры базы данных в свойствах объекта (на закладке «Данные») необходимо описать необходимые реквизиты, табличные части и реквизиты табличных частей. Однако зачастую объект уже наделен определенным реквизитным составом, например, несмотря на то что справочник мы только что создали, у него уже есть таблица с полями (реквизитами) «Код» и «Наименование», длина этих реквизитов настраивается на все той же закладке «Данные».
Кроме самой структуры базы данных справочник объект обладает немаловажным описанием интерактивной работы пользователя, описание это заключается в создании форм для просмотра и редактирования записей справочника, и в описании событий этих форм (открытие, запись, закрытия, и т.п.), свойства и количество форм никак не сказываются на структуре базы данных и являются исключительно свойством конфигурации.
Не интерактивные события объекта описываются в его модуле. Можно представить себе устройство объекта метаданных в виде небольшой схемы:
Схема объекта метаданных
На этой схеме мы впервые видим модули. Именно в модулях системы мы будем описывать поведение программы при различных событиях. Какие модули бывают, и какова их иерархия:
1. Общие модули. Модули содержат общие для всей конфигурации процедуры и функции (однако могут содержать и локальные процедуры и функции доступные только из этого же модуля). Могут вызывать процедуры и функции другого общего модуля. Не содержат описание переменных и область инициализации переменных, нет основного текста программы (только процедуры и функции). Общие модули делятся на глобальные и не глобальные. Процедуры и функции описанные в глобальных общих модулях могут быть вызваны просто по имени, а те которые описаны в не глобальных общих модулях вызываются посредством обращения к модулю ( НазваниеМодуля.НазваниеПроцедуры().
2. Специализированные модули приложения: модуль приложения, модуль внешнего соединения и модуль сеанса. Служат для описания событий связанных с интерактивными или COM-событиями старта системы и завершения работы. Могут вызывать процедуры и функции общих модулей.
3. Модули объектов. Принадлежат объектам, содержат описание процедур и функций для работы с определенным объектом и в том числе описание не интерактивных событий объекта. Могут вызывать процедуры и функции общих модулей.
4. Модули форм. Содержат описание событий работы пользователя в форме. Могут вызывать процедуры и функции модуля объекта и общих модулей.
Стоит сказать, что есть возможность описать "Экспортные" процедуры и функции в модуле любого объекта и обращаться к ним, но для этого придется "получить" сам объект для начала.
Все вышесказанное про модули я поясню в виде схемы:
Взаимосвязь модулей
Структура модулей.
Каждый модуль (есть исключения) можно разделить на несколько частей:
1. бласть объявления переменных. В этой области описываются переменные, «область жизни» которых весь модуль, то есть значение переменной можно получить в любой процедуре и функции модуля.
2. Область описания процедур и функций. Порядок описания процедур и функций не зависит от их места вызова. Однако рекомендуется например процедуры-обработчики событий описывать в том порядке в котором будет происходить их вызов системой (при открытии, при записи, при закрытии). Внутри процедур и функций также есть возможность объявлять переменные (локальные), объявление переменных внутри процедур и функций должно располагаться до основного их текста.
3. Основной текст программы, или область инициализации переменных. После описания процедур и функций располагается текст программы вызов которого будет осуществлен сразу при обращении к текущему модулю, таким образом в этой части можно располагать тот текст который должен быть выполнен, например, при открытии объекта. Однако, не стоит забывать что система «1С:Предприятие 8» является языком «событийным», вызов соответствующих процедур и функций будет вызываться системой самостоятельно, и в этой части модуля обычно лишь присваиваются значения переменным, описанным в первой части модуля.
Ни одна из частей модуля не является обязательной. В общих модулях не может располагаться объявление переменных модуля и их инициализация, таким образом можно сказать что общие модули это «репозитарии общих процедур и функций».
В информационной базе системы 1С:Предприятие 8.0 хранятся две конфигурации - основная конфигурация (редактируемая) и конфигурация базы данных. Конфигурация базы данных определяет структуру таблиц базы данных и всю функциональность, с которой работают пользователи. Основная конфигурация используется только для изменения. Это позволяет вносить и сохранять изменения в конфигурации в процессе работы пользователей. Произвести изменение в конфигурации базы данных в процессе работы пользователей нельзя.
Для просмотра структуры конфигурации базы данных, свойств, форм, макетов и другой информации об объектах, можно открыть окно конфигурации базы данных. Для этого необходимо выбрать пункт "Конфигурация - Конфигурация базы данных - Открыть конфигурацию БД". По виду оно ничем не отличается от окна "Конфигурация". Приемы работы с объектами конфигурации базы данных совпадают с приемами работы в окне "Конфигурация" с тем лишь отличием, что все объекты доступны только для чтения (просмотра).
Дерево конфигурации
Конфигурация представляется в виде древовидной структуры, каждая ветвь которой описывает определенную составляющую конфигурации. Дерево конфигурации представляет собой иерархический список всех объектов конфигурации. Дерево конфигурации позволяет создавать и удалять объекты конфигурации, менять их порядок, копировать и переносить объекты, фильтровать объекты по подсистемам.
Окно конфигурации
Работа с конфигурацией осуществляется в окне "Конфигурация". Для открытия конфигурации необходимо выбрать пункт "Конфигурация - Открыть конфигурацию". На экран выводится окно "Конфигурация". Чтобы увеличить рабочую область для работы с различными объектами, окно "Конфигурация" можно временно закрыть. Закрытие окна "Конфигурация" не означает завершение работы с отдельными ее составляющими, открытыми для редактирования: закрывается не конфигурация, а окно конфигурации. Для открытия окна "Конфигурация" необходимо выбрать пункт "Конфигурация - Окно конфигурации". С помощью контекстного меню окна, вызванного правой кнопкой мыши на шапке конфигурации, окно конфигурации можно сделать прикрепленным, свободным, прячущимся. Если свойство окна "Соединяемые" не активно, то режимы размещения окна "Прикрепленное" и "Прячущееся" не доступны.
Создание объектов
Для создания нового объекта конфигурации необходимо выполнить следующие действия:
· в дереве конфигурации выделить наименование типа объекта конфигурации или любого из существующих объектов конфигурации того типа, который должен быть у создаваемого объекта;
· выбрать пункт "Действия - Добавить" окна "Конфигурация" или
· в дереве конфигурации выделить наименование типа объекта конфигурации;
· выбрать пункт "Добавить" в контекстном меню.
Создание нового подчиненного объекта можно также производить следующим образом:
· открыть окно редактирования объекта (пункт "Действия - Изменить" окна "Конфигурация");
· указать нужный вид подчиненного объекта;
· нажать кнопку "Добавить".
В результате этих действий на текущей ветви дерева конфигурации появится новый объект, а на экран для редактирования свойств этого объекта будет автоматически вызвана палитра свойств.
Удаление объектов
Для удаления объекта конфигурации укажите его в дереве конфигурации и выберите пункт "Действия - Удалить" окна "Конфигурация". Если на объект нет ссылок в других объектах конфигурации, объект удаляется.
Если на объект есть ссылки (объект используется), то выдается сообщение "Объект не может быть удален, так как на него есть ссылки в других объектах!". А в окно сообщений выводится список использования данного объекта.
Для перехода к объекту, в котором используется ссылка на удаляемый объект, необходимо дважды щелкнуть мышью наименование этого объекта в окне сообщений.
Копирование объектов
Для создания нового объекта можно использовать механизм перетаскивания объектов с помощью мыши. При перетаскивании объектов (как в пределах "своей" ветви, так и за ее пределами) создается новый объект. При этом производится проверка возможности использования исходных свойств объекта в результирующем. Если результирующий поддерживает свойства, то они копируются. Пример успешного копирования: перенос реквизитов, макетов справочника в документ.
Если исходный объект содержит подчиненные объекты (реквизиты, формы, макеты и др.), то при перетаскивании на "подобный" уровень (например, перетаскивается объект справочник "Валюты" в ветвь "Документы") скопируются реквизиты, формы, макеты и табличные части. При этом некоторые свойства составных частей могут быть изменены (например, для документа отсутствует свойство "Родитель").
Сортировка объектов
При работе с деревом конфигурации объекты конфигурации в пределах "своей" группы объектов можно расставить в требуемом порядке. В таком же порядке объекты конфигурации будут выдаваться в различных списках.
Для перестановки объекта конфигурации необходимо выделить его в окне "Конфигурация" и использовать пункты меню "Действия - Переместить вверх" или "Действия - Переместить вниз", а также "Действия - Упорядочить список".
Для удобства поиска в дереве конфигурации объекта, редактируемого в данный момент, используйте пункт меню "Правка - Найти в дереве".
Используя настройку сортировки, за один раз можно отсортировать однотипные объекты конфигурации, подчиненные одному объекту конфигурации.
Выделив объект конфигурации, из контекстного меню выбираем пункт "Сортировать".
Выбираем свойство, по которому будет выполняться сортировка:
· имя;
· синоним;
· комментарий.
Выбираем направление сортировки:
· по возрастанию;
· по убыванию.