новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Недостатки объектной модели

  • Добавить свою публикацию
  • для этого требуется регистрация

 

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

 

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

 

В получении данных "через точку" и скрыта основная проблема этого принципа.

Какие недостатки имеет объектная модель и почему не следует ею пользоваться постянно?

Производительность

Для начала проведем простейший тест на скорость выборки данных. Разработаем два алгоритма, один из которых будет осуществлять выборку данных с помощью объектной модели, второй - с использованием класса "Запрос".

Изображение

С помощью встроенного инструмента замера производительности определим время прохождения системы по каждому из алгоритмов. Заполним необходимый справочник элементами (в данном случае было записано 5000 элементов) и произведем эксперимент. Результаты вы можете видеть на следующем скриншоте. Мы видим, что объектный подход проигрывает в десятки раз!
Изображение 

В чем кроется причина?

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

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

Как правильно использовать объектную модель?

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

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

  • При работе нужно по максимуму сокращать использование обращений к "точке". В этом вам поможет алгоритм использования временных переменных, в которые можно помещать промежуточные объекты. Ниже приведен привем оптимального и неоптимального использования объектного метода получения данных.Мы видим, что при нерациональном использовании объектной модели, система будет получать все поля текущих данных таблицы, при выборе какого-либо одного поля. В правильном варианте текущие данные таблицы сохраняются в промежуточную переменную, значение которой впоследствии используется для получения нужных полей.
    Изображение 
  • Старайтесь как можно реже использовать несколько точек в одной операции получения поля. Нужно разбивать этот сложный запрос на несколько более простых (опять же с использованием промежуточных переменных). Иначе для выборки данных платформа будет выполнять ПОЛНОЕ соединение таблиц, написанных в адресе обращения.

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

Вывод

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

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

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

 

 
0
Читайте также
Отловим переход между подсистемами
"Решение нестандартной задачи использования подсистем"
1С фриланс
В наше время становиться все более популярным удаленное программирование 1С фриланс - когда программисты создают собственные компоненты и плиложения для 1С удаленно.
Внимание! Будь осторожен - "макет" возможен.
В 1С 8 есть полезная возможность сохранять в качестве макета сторонние файлы
Разработки
Консоль компоновки данных
Обработка состоит их запросов, СКД и объектов
Создание кода для заполнения справочника
Создает часть программного кода
Аудит компьютеров и программного обеспечения
Конфигурация отслеживает программное обеспечение
Еще от автора
≡ к списку статей