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

08.08.13

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Обработка для проверки
.epf 6,55Kb
4
4 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

 или изящная

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

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

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

См. также

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

23.06.2024    7453    bayselonarrend    20    

154

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

13.03.2024    5946    dsdred    16    

80

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

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

24.01.2024    17673    YA_418728146    26    

71

Перенос данных 1C Механизмы платформы 1С Системный администратор Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    11225    dsdred    44    

130

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

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    23762    SeiOkami    48    

135

Механизмы платформы 1С Системный администратор Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    18832    human_new    27    

80

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    14734    YA_418728146    7    

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

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

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

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

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


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

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

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