Имя: Пароль:
1C
1С v8
Как проверить на пустую ссылку документ, не зная его вид?
0 НикДляЗапросов
 
23.04.09
13:07
Док может быть разных типов, как проверить пуста ли ссылка?
1 ДенисЧ
 
23.04.09
13:08
ПустоеЗначение()
Выбран()
2 Нуф-Нуф
 
23.04.09
13:09
сокрЛП()=""
3 НикДляЗапросов
 
23.04.09
13:10
Ошибочка На v8
4 Подводный Таракан
 
23.04.09
13:10
кстати иногда (2) действеннее на порядок, чем ПустоеЗначение() =)
5 Господин ПЖ
 
23.04.09
13:11
НЕ ЗначениеЗаполнено()
6 Подводный Таракан
 
23.04.09
13:11
(3) неопределено
7 Sakura
 
23.04.09
13:13
Ссылка.Пустая() не катит?
8 duk337
 
23.04.09
13:19
Вместо документа нафинг = Емпти(док)

//=== Оптимизированный аналог "ПустоеЗначение()"
Функция Емпти(Значение,НеПроверятьЗаполнение=Истина) Экспорт
//"NULL" тоже входит
Если СокрЛП(""+Значение)="" Тогда Возврат Истина;КонецЕсли;
Если Значение=Неопределено Тогда Возврат Истина;КонецЕсли;
ф="<Объект не найден>";
Если Лев(""+Значение,СтрДлина(ф))=ф Тогда Возврат Истина;КонецЕсли;
//=========
Результат = Ложь;
ТипЗначения = ТипЗнч(Значение);
Если ТипЗначения=Тип("Число") Тогда
   Если Значение = 0 Тогда Результат = Истина;КонецЕсли;
ИначеЕсли ТипЗначения = Тип("Дата") Тогда
   Если Значение = Дата('00010101') Тогда Результат = Истина;КонецЕсли;
ИначеЕсли ТипЗначения = Тип("Булево") Тогда Результат = Ложь; // Булево будем считать не пустым
//Отдельное определение, так как конструкторов данного типа не существует    
ИначеЕсли ТипЗначения = Тип("РежимПроведенияДокумента") Тогда
ИначеЕсли НеПроверятьЗаполнение Тогда
   Если Значение = РежимПроведенияДокумента.Неоперативный или Значение = РежимПроведенияДокумента.Оперативный тогда
           Результат = Ложь;
   КонецЕсли;
   // Для остальных будем считать значение пустым, если оно равно
   // дефолтному значению своего типа
ИначеЕсли НеПроверятьЗаполнение Тогда
Возврат Ложь;
Иначе
   Попытка
       Если Значение = Новый(ТипЗначения) Тогда
           Результат = Истина;
       КонецЕсли;
   Исключение
       Результат = Ложь;
   КонецПопытки;
КонецЕсли;
Возврат Результат;
КонецФункции // ЗначениеНеЗаполнено()
9 НикДляЗапросов
 
23.04.09
13:22
Отличные варианты, может еще кто знает, как проверить документ на пустую ссылку внутри текста запроса? Можно конечно позже поотсекать, но хотелось бы сразу
10 Господин ПЖ
 
23.04.09
13:26
там вид надо знать
11 Господин ПЖ
 
23.04.09
13:27
Значение(Документ.Блабла.ПустаяСсылка), если реквизит документа не составной. Если составной - хватит Неопределено
12 Fragster
 
гуру
23.04.09
13:27
Есть NULL если специально ПустаяССылка не запихивали
13 Господин ПЖ
 
23.04.09
13:29
а ЕСТЬ NULL будет работать на пустой ссылке?

NULL БД <> полю с пустой ссылкой на документ.
14 Defender aka LINN
 
23.04.09
13:30
А если там не пустая ссылка, а Неопределено?
15 73
 
23.04.09
13:36
ГДЕ
   ТТТТТ.Док.Номер Есть Null
16 НикДляЗапросов
 
23.04.09
14:11
Не подходит есть нуль
17 73
 
23.04.09
14:51
У меня подходит.
ЗЫ. Не Док Есть Null, а Номер его.
18 Terv
 
23.04.09
14:54
имеется ввиду проверить любое поле ссылки, у постой оно будет равное NULL
19 Terv
 
23.04.09
14:54
(18) -> (16)
20 Mort
 
23.04.09
14:54
21 Господин ПЖ
 
23.04.09
14:56
(15) ну .Номер ежу понятно что NULL будет
22 СноваЗдорова
 
23.04.09
14:59
(0) Либо будет указан тип, либо значение будет неопределено. Так и проверяй.
23 Serg_1960
 
23.04.09
15:02
(0) А автору проверка нужна в запросе или как?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.