Модели доступа к данным

models

Приветствую, товарищи! Разберём очередную простую тему — модели доступа к данным.

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

Объектная модель

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

Данная модель доступа представляется как иерархия типов данных (классов), каждый из которых обладает набором свойств и методов.

zapros_1_1

В случае со справочниками доступ к данным такой: сначала происходит обращение к типу СправочникиМенеджер, далее получается тип СправочникМенеджер у которого есть метод Выбрать(). Всё просто.

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

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

  1. Нет возможности наложить произвольные условия на выбираемые данные;
  2. Нет возможности выбрать данные из нескольких таблиц за одно обращение к базе данных (придётся несколько раз вызывать метод Выбрать(), что является не всегда быстрой операцией);
  3. Если в выбираемых данных присутствуют данные, на которые нет у пользователя прав, то возникнет ошибка.

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

Ну и парочка простых примеров объектной модели.

Пример 1: Найти номенклатуру по наименованию в справочнике «Номенклатура».

НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(«Квас»);

Пример 2: Выбрать все элементы справочника «Номенклатура», расположенных в определённой папке.

ВыборкаНоменклатура = Справочники.Номенклатура.Выбрать(СсылкаНаПапку);
Пока
ВыборкаНоменклатура.Следующий() Цикл
Сообщить(ВыборкаНоменклатура.Наименование);
КонецЦикла;

Ссылка на папку задаётся переменной СсылкаНаПапку. Более детально изучать данную модель доступа к данным не вижу смысла.

Табличная модель (запросы)

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

Визуализировать это можно на примере документа «Поступление товаров»:

pro_1_11_1

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

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

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

Бояться запросов не нужно, а вот запросы нас бояться точно будут laughwinkwink.

Понравилось? Не забудь поддержать сайт!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *