![]() |
![]() |
![]() |
|
V7 выбран() или пустоеЗначение() ₽ |
☑ | ||
---|---|---|---|---|
0
OnCheck
27.12.06
✎
08:53
|
V7 выбран() или пустоеЗначение(), что быстрее?
|
|||
1
Фокусник
27.12.06
✎
08:54
|
(0) а в цикл загнать и проверить? (:
|
|||
2
OnCheck
27.12.06
✎
08:58
|
(1) писать надо.... а мне много еще писать. Хочу решить, что правильнее будет ставить в модуле проведения
Если ПустоеЗначение(Объект)=0 тогда или Если Объект.Выбран()=0 тогда |
|||
3
orefkov
27.12.06
✎
08:59
|
ПустоеЗначение быстрее гораздо.
|
|||
4
Guk
27.12.06
✎
08:59
|
(2) ПустоеЗначение. имхо...
|
|||
5
OnCheck
27.12.06
✎
09:00
|
(4) Ок, спасибо.
|
|||
6
mikecool
27.12.06
✎
09:01
|
(3,4) на чем основываетесь?
или выбран() делает запрос а пустоезначение проверяет только ссылку? |
|||
7
orefkov
27.12.06
✎
09:10
|
(6)
Ну, как бы тебе объяснить... Основываюсь во-первых на практике, во-вторых, на следующем: Для работы метода ПустоеЗначение достаточно у CValue проверить type, и если он не 0, а допустим 12 (справочник), проверить еще ObjID, что он нулевой. А для работы метода "Выбран" сначала необходимо из CValue получить CBLContext (тк вызов методов возможен только для них). Для этого к ссылке на справочник применятся LinkContext, в котором, если контекст не закэширован, произойдет обращение к базе, чтобы подчитать атрибуты. Затем в этом CBLContext'е надо найти метод "Выбран", проверить его количество параметров, убедится, что это функция, а не процедура, и вызвать его. А уж он в-свою очередь проверит ObjID на ненулевое значение. Вот примерно как-то так. |
|||
8
mikecool
27.12.06
✎
09:12
|
(7) спасибо, объяснил - так объяснил
|
|||
9
Guk
27.12.06
✎
09:14
|
(8) Я красивых слов как в (7) говорить не умею, скажу проще. Хотя бы для того, чтобы исключить ситуацию, при которой метод Выбран у Объекта отсутствует...
|
|||
10
smaharbA
27.12.06
✎
09:23
|
Наколешься на пустоезначение
|
|||
11
Deon
27.12.06
✎
09:29
|
(10) как?
|
|||
12
OnCheck
27.12.06
✎
09:30
|
(10) Поподробнее
|
|||
13
orefkov
27.12.06
✎
09:30
|
(9)
+1 Когда-то давно по этой причине я и стал юзать ПустоеЗначение |
|||
14
Chieftain
27.12.06
✎
09:31
|
Бывает гадость с битыми ссылками - ПустоеЗначение()<>0,Выбран()=0
|
|||
15
Chieftain
27.12.06
✎
09:31
|
(14) Особенно на чужих базах
|
|||
16
GrayT
27.12.06
✎
09:32
|
(7)Блеск :) День прожит не зря
|
|||
17
orefkov
27.12.06
✎
09:39
|
В базе с битыми ссылками можно еще и не так наколоться...
|
|||
18
smaharbA
27.12.06
✎
09:48
|
(11)
|
|||
19
mishaPH
27.12.06
✎
09:53
|
Проводил опыты с данными методами. ПустоеЗначение в 15 раз оказалось быстрее в моем случае. После Выбран() использую редко крайне и то только для одиночных реквизитов.
|
|||
20
Лефмихалыч
27.12.06
✎
09:54
|
(18) это нормально, просто ПустоеЗначение нужно применять к ТекущийЭлемент(), а не к чему попало
|
|||
21
mishaPH
27.12.06
✎
09:55
|
+19 в 15 раз на СКЛ версии
|
|||
22
Guk
27.12.06
✎
10:02
|
(18) Это не наколка, это "Дурь конечно"...
|
|||
23
dk
27.12.06
✎
10:10
|
(18)+
Док = 0; Сообщить(ПустоеЗначение(Док)); Док = СоздатьОбъект("Документ.ПКО"); Док.Новый(); Сообщить(ПустоеЗначение(Док)); ----- ЗЫ не проверял, но накалывался на подобной ситуации |
|||
24
Эльниньо
27.12.06
✎
10:15
|
(14)
Если Лев(Строка(Док.Серия),18) = "<Объект не найден>" Тогда |
|||
25
Chieftain
27.12.06
✎
10:34
|
(24) А попробуй это сделать на типовых обработках выгрузки и загрузки через XML)))
|
|||
26
Эльниньо
27.12.06
✎
10:41
|
(25) Не лублу я эксимель.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |