Сравнение скорости получения имени класса через Метаданные.*.Содержит и через Метаданные().ПолноеИмя()

08.08.13

Разработка - Механизмы платформы 1С

Сравнение скорости двух методов определения класса объекта через его метаданные. Когда есть Объект, но неизвестно заранее, какой у него тип (например получен из реквизита типа ЛюбаяСсылка)

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Обработка для проверки
.epf 6,55Kb
4 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Когда есть Объект, но неизвестно заранее, какой у него тип (например получен из реквизита типа ЛюбаяСсылка) приходится обращаться к Метаданным, но прямого способа получить класс (например, для использования при составлении текста запроса) 1С не даёт.

Проверил в подготовке новой версии "Браузера Хранилища" что будет быстрее - громоздкая конструкция

ТипЗначения = ТипЗнч(Объект);
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗначения);
Если Метаданные.Справочники.Содержит(ОбъектМетаданных) Тогда Класс = "Справочник" ИначеЕсли Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда Класс = "Документ" ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМетаданных) Тогда Класс = "ПланВидовХарактеристик" ИначеЕсли Метаданные.БизнесПроцессы.Содержит(ОбъектМетаданных) Тогда Класс = "БизнесПроцесс" ИначеЕсли Метаданные.Задачи.Содержит(ОбъектМетаданных) Тогда Класс = "Задача" Иначе Класс = "" КонецЕсли;

 или изящная

Класс = Объект.Метаданные().ПолноеИмя();
Класс = Лев(Класс, Найти(Класс, ".")-1);

при замере были прогнаны циклы около 27000 итераций и оказалось:
вариант 1: 27345    0,767779    4,49
вариант 2: 27345    0,811876    7,84

Пример для замера прилагается (цикл через перебор справочника ХранилищеДополнительнойИнформации, присутствующего в большинстве типовых конфигураций) 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    30448    TitanLuchs    106    

149

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    16658    bayselonarrend    127    

68

Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free)

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

30.01.2025    19920    user2122906    9    

66

Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 Бесплатно (free)

Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов.

17.01.2025    34418    user2122906    12    

62

Механизмы платформы 1С WEB-интеграция Программист 1С:Предприятие 8 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    30974    dsdred    100    

147

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    27395    bayselonarrend    22    

176

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    14898    dsdred    22    

85
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4607 08.08.13 16:20 Сейчас в теме
(0) Да, а что? Метаданные() довольно тормозной метод, давно известно.
3. taiba 88 08.08.13 16:27 Сейчас в теме
(1) Поручик, собственно продолжаю обосновывать фактами стандарты :)
4. DitriX 2115 09.08.13 09:32 Сейчас в теме
(3) вы извините, но это никак не факты.
Фактами оно было бы, если бы взяли разных 10 платформ, базы в файловом режиме и клиент серверном (не забываем про разные версии СУБД), делали замеры через каждый час, и все это длилось в среднем - сутки.
Вот тогда бы это все имело право на жизнь, а так...
555ProRock555; Артано; nixel; +3 1 Ответить
5. taiba 88 09.08.13 10:31 Сейчас в теме
(4) DitriX, я честно написал, что данные по 8.1, почему вас это не устраивает? Хотите массовое исследование - делайте, если позволяют ресурсы. Я лишь ПОДТВЕРДИЛ рекомендации 1С в конкретном варианте. Не думаю, что другие варианты поменяют ситуацию на противоположную - стандарт разработки-то не менялся.

Почему при отсутствии темы ВООБЩЕ вы ставите мне минус за частичное "рассеивание тьмы"? Я вам ведь ничего не должен.
6. DitriX 2115 09.08.13 11:54 Сейчас в теме
(5) давайте тогда каждый начнет выкладывать вот такого рода обрезанную информацию, где в частном случае, подтверждается что-то.
Просто такую инфу, как мне кажется, надо выкладывать в своем блоге (такое есть на инфостарте).
А вот если вы говорите о чем то, что должно заинтересовать некую часть людей (я не говорю даже о 1% посетителей ресурса, хотя бы 0,001%), то это можно и публиковать.
А так - это похоже на желтую прессу. Т.е. вы взяли заведомо некое правильное утверждение, рассмотрели его в частном случае, сделали вывод - что оно истинно.
Извините, но если бы такую статью написал чебуратор, алексис, или ежи с ними, то я бы видел смысл в этой статье, так как люди заслужившие уважение - сделали свое заключение.

А вообще, это вам не соц сеть, где надо обижаться на минуса и лепить свои в ответ.
Давайте почитаем - что рядом с оценкой написано:
Поставьте плюс, если вы рекомендуете данную публикацию к прочтению и использованию.
Вы понимаете что это значит? Я растолкую - это значит, что я не рекомендую эту публикацию остальным людям.
Для вас это значит - что надо лучше собирать информацию, думать перед публикацией, и развивать свои навыки.

А не кричать - АААААА, Вы мне минус поставили, ахтунг, я тебе ничего не сделал и бла бла бла.
Еще раз - такие статьи - во вконтактик пилите, а если пишете тут - будьте добры не плакать за оценки.

Если вы дополните статью какими либо сведениями, я изменю оценку.


Надеюсь я развернуто ответил?
7. taiba 88 09.08.13 12:17 Сейчас в теме
(6) DitriX, Вы ошибаетесь в том, что мой минус был "актом возмездия". Я считаю ваши требования завышенными. У меня нет ни технического ресурса, ни временного, чтобы поставить десяток платформ и субд и провести массовое исследование. Полагаю, что у многих тоже его нет. Поэтому я делюсь тем, что мне доступно. Именно вашей категоричности "Вот тогда бы это все имело право на жизнь, а так" я и поставил минус.

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

Я не требую, чтобы все читатели ринулись со слезами благодарности ставить плюсы моей публикации. Я сделал для себя мини-исследование и выбрал лучшую технологию. Однако не считаю её бесполезной - для указанной платформы она вполне адекватно описывает положение дел. Про ведение блогов здесь - не знал, но непонятен ваш критерий отнесения информации к блогу или к публикации.
8. V.Nikonov 125 15.08.13 21:28 Сейчас в теме
(6) DitriX, Действительно, минуса стоит ставить за ВРЕДНЫЕ статьи.
2. Поручик 4607 08.08.13 16:22 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация