8 (800) 302-62-68
+7 (499) 348-29-58
sale@rbs-crm.ru

Документация разработчика

Работа с объектом (ORM)

Концепция ORM позволяет обращаться к записям и полям хранимых данных в базе данных (далее — БД), как к объектам и их свойствам. Соответственно ORM позволяет абстрагировать обращение к базе данных обращением к свойству объекта.

Назначение и архитектура

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

Основные классы модуля:

  • Data — представляет точку входа для обращения к структурам данных.
  • Entry — содержит представление одного Объекта конкретной структуры и хранит данные. Родительский класс который может наследоваться классами для специфических структур (скажем, только документов).
  • EntrySet — содержит представление множества Объектов конкретной структуры, а также хранит ее прототип.

Интерфейс модуля

Data — точка входа для обращения к структурам данных в системе. Ссылка на модуль хранится в переменной $this->Data сценария, или возвращается статическим методом Kernel::Data() из любой другой точки.

Общий синтаксис обращения к объекту:

$this->Data->{ТИП СТРУКТУРЫ}->{НАЗВАНИЕ СТРУКТУРЫ}->{НАЗВАНИЕ ПОЛЯ/МЕТОДА}

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

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

foreach ($this->Data as $data)
  ... //Поочередно перечислит все типа: References, Documents, ...

foreach ($this->Data->References as $data)
  ... //Поочередно перечислит все справочники: Companies, Contacts, ...

foreach ($this->Data->References->Companies as $data)
  ... //Поочередно перечислит всеx контрагентов На третьем этапе мы уже имеем дело с EntrySet, который возвращает объекты Entry на каждой итерации.

 

Видеоурок «Использование ORM»

Если ролики на YouTube не открываются, можно посмотреть их на площадке Rutube.