- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
Запрос1 = Новый Запрос;
Запрос1.Текст = "ВЫБРАТЬ
| Номенклатура.ЕдиницаИзмерения
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка = &ном";
Запрос1.УстановитьПараметр("Ном", ЭлементыФормы.Товары.ТекущаяСтрока.Номенклатура);
Результат1 = Запрос1.Выполнить();
Выборка1 = Результат1.Выбрать();
Пока Выборка1.Следующий() Цикл
ед = выборка1.единицаизмерения;
КонецЦикла;
ЭлементыФормы.Товары.ТекущаяСтрока.ЕдИзм= ед;
"Простой" способ подставить единицу измерения в табличную часть))
...
ед = выборка1.единицаизмерения.ссылка;
...
И всё это положить в "ПриВыводеСтроки".
Сравните, что будет в скуле, когда напишите так:
У вас еще и блокировка ляжет на объект....
А при такой реализации произойдет грязное чтение, которому пофиг на блокировку. Да и по скорости большой разницы не будет
Эдак, давайте, налепим сюда ещё проверку на количество выборки, на существование колонки "ЕдИзм" и прочего говна. А что, по скорости большой разницы не будет.
Кстати, что выдаст этот код, если номенклатура окажется пустой ссылкой?
В общем, не стоит мудрить, когда это того не стоит. В 90% случаев, через жопу получается только хуже.
ТекущаяСтрока.Номенклатура.ЕдиницаИзмере ния - это запрос к БД с получением объекта в память, со всеми его реквизитами.
То, как сделано - получение только ссылки.
Более короткий код не всегда эффективнее. Кто сомневается - пузырьковая сортировка против например Quicksort Чарльза Хоара.
А тянуть единственный мне нужный реквизит запросом - имеет смысл. Потому что платформа-то потянет все реквизиты.
В итоге проиграем 10 нс, а выиграем 1 мс и трафик и нагрузку на скуль.
А сеть, насколько я знаю, самый медленный элемент в цепи HDD/Память/Процессор/Сеть
Один пакет на 10 байт и один пакет на килобайт будут идти примерно одинаково. В общем-то, даже два-три пакета подряд будут идти чуть-чуть дольше, чем только один первый.
З.Ы. Но если эта ваша платформа вытягивает поля по одному, а не пачкой - тогда да, запрос всего объекта будет лагать как говно.
никак
Единственное, что нужно было сделать - вызвать стандартную функцию БСП ЗначениеРеквизитаОбъекта, а не лепить свою.