![]() |
![]() |
![]() |
|
Смысл функции "ПустоеЗначение" | ☑ | ||
---|---|---|---|---|
0
kalinin
12.01.10
✎
02:36
|
Доброй ночи!
Вроде все ясно сразу. В описании к функции сказано, что, в частности, для справочника функция работает аналогично методу Выбран(). Проверил. Ном - реквизит формы, элемент выбран сообщить(Строка(Ном.Выбран())); //1 сообщить(Строка(ПустоеЗначение(Ном))); //0 фыва = СоздатьОбъект("Справочник.Номенклатура"); фыва.найтипокоду("98764 "); сообщить(Строка(фыва.Выбран())); //1 сообщить(Строка(ПустоеЗначение(фыва))); //1 ?! Вопрос: почему 1 в последнем комментарии? или "ПустоеЗначение" корректно проверяет только значения на форме? как-то сомнительно :) |
|||
1
KRV
12.01.10
✎
02:48
|
сие шаманство было послано свыше Нуралиеву и самим не понято, но донесено до смердов...
|
|||
2
kalinin
12.01.10
✎
03:03
|
:)
успел найти в форуме что ПустоеЗначение(фыва.ТекущийЭлемент())=0 и действительно так |
|||
3
Stillcat
12.01.10
✎
05:08
|
Не используй
ПустоеЗначение() для объектов,созданных функцией СоздатьОбъект() для них она не работает |
|||
4
DenLaDen
12.01.10
✎
06:55
|
(3) да что вы говорите? А если использовать ТекущийЭлемент(), ТекущийДокумент() ?
(0) Попробуй сообщить(Строка(ПустоеЗначение( фыва.ТекущийЭлемент() ))); |
|||
5
big
12.01.10
✎
07:07
|
(3) Фигасе!! А мужики-то не знали! (с) :))))
|
|||
6
Chai Nic
12.01.10
✎
07:10
|
Для справочника использовать метод Выбран можно только если вы хотите специально замедлить программу, по какой-то причине он на порядок медленнее работает, чем функция ПустоЗначение.
|
|||
7
los_hooliganos
12.01.10
✎
07:43
|
(6) потому что выбран() вытягивает всю запись из базы, в отличие от пустоезначение()
|
|||
8
los_hooliganos
12.01.10
✎
07:45
|
ну и вообще, то чем (0) занимается как-то непонятно.
|
|||
9
vcv
12.01.10
✎
08:08
|
Выбран() тянет запись из базы данных и возвращает 1, если она физически существует. А ПустоеЗначение() проверяет, является ли значение пустой ссылкой (для справочников и документов), или нет. Если в базе есть неразрешенные ссылки (кто-нибудь непосредственным удалением побаловался), Выбран() для них вернет 0, потому что запись физически не существует, а ПустоеЗначение() - 1, потому что не пустая ссылка.
|
|||
10
Chai Nic
12.01.10
✎
08:12
|
(9) Понятно, ну, проектировать алгоритмы в расчете на висячие ссылки вряд ли имеет смысл. :)
|
|||
11
vcv
12.01.10
✎
09:08
|
(10) С другой стороны, зачем ты зачастую проверяешь на пустое значение? Наверное, что бы, если "не пустое", начать вытягивать реквизиты из реквизита-справочника. То есть все равно произойдет чтение записи. И выигрыша от использования ПустоеЗначение вместо Выбран не получится. А Выбран надежнее в том смысле, что проверяет физическое наличие записи. Хотя алгоритмы всякие бывают...
|
|||
12
hhhh
12.01.10
✎
09:10
|
(11) зато выигрыш получится, если пустое.
|
|||
13
Aleksey_3
12.01.10
✎
09:11
|
Зачем мне данные, если я просто проверяю заполнение всех реквизитов в документе?
|
|||
14
vcv
12.01.10
✎
09:17
|
(13) А ты проверь ради интереса замером производительности. Значения этих реквизитов в дальнейшем используются наверное? Вполне может оказаться, что замена ПустоеЗначение на Выбран просто перенесет накладные расходы по чтению записи из одного места в другое :-)
Табличной части это вряд-ли касается, в 77 вообще как-то очень плохо с кешированием. |
|||
15
Aleksey_3
12.01.10
✎
09:20
|
(14) Из модуля формы в модуль проведения? Сомневаюсь....
|
|||
16
Chai Nic
12.01.10
✎
10:07
|
(14) Очень часто "отфильтровывается" достаточно большой процент выборки, и как следствие, проверка с получением данных является избыточной и неоптимальной.
|
|||
17
Stillcat
12.01.10
✎
13:57
|
(5) Ну так пусть знают! Мне не жалко.
(4) А в чем собственно критика? фыва.ТекущийЭлемент() не есть объект,созданный функцией СоздатьОбъект() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |