Имя: Пароль:
1C
1С v8
Объект неопределен в запросе
,
0 Kurbash
 
21.04.15
12:19
Вес привет, такая ситуация- в некоторых документах есть реквизит с типом справочник, значение которого <Объект не найден> (55:af5040f2e993c0ba11e40d7fd6146855)-косяки при переносе. Пытаюсь отловить запросом например ГДЕ Реквизит есть NULL не канает, также не канает ГДЕ РЕКВИЗИТ=&РЕк, Запрос.УстановитьПараметр("Рек",Неопределено). Как еще можно отловить? Пустая Ссылка тоже не канает
1 Ненавижу 1С
 
гуру
21.04.15
12:21
Где Реквизит.Ссылка ЕСТЬ NULL И НЕ (Реквизит В (НЕОПРЕДЕЛЕНО, ЗНАЧЕНИЕ(Справочник.ТвойСправочник.ПустаяСсылка)))

это 1С, детка
2 Kurbash
 
21.04.15
13:01
спасибо
3 sapphire
 
21.04.15
13:05
(0)
<Объект не найден> (55:af5040f2e993c0ba11e40d7fd6146855)

Ссылка есть и тип указан.
Но, в целевой таблице этого типа значение с таким идентификатором отсутствует.

Хвала обменам и кривым рукам!
4 EugeniaK
 
21.04.15
13:18
(0) ГДЕ Реквизит.ссылка есть NULL
5 Ненавижу 1С
 
гуру
21.04.15
13:19
(4) и туда попадут не только битые, но и не заполненные
6 ЧеловекДуши
 
21.04.15
13:29
(0) Все через Цикл, даешь старинный 1С-овский подход в рекурсии..

Функция ОбъектБДСуществует(ТестоваяСсылка) Экспорт

    МД = Метаданные.НайтиПоТипу(ТипЗнч(ТестоваяСсылка));
    ИмяОбъекта = МД.Имя;
    ПолноеИмяОбъекта = МД.ПолноеИмя();

    Запрос = новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ИСТИНА как НЕЧТО
    |ИЗ
    |   " + ПолноеИмяОбъекта + " КАК " + ИмяОбъекта + "
    |ГДЕ
    |   " + ИмяОбъекта + ".Ссылка = &Cсылка";
    Запрос.УстановитьПараметр("Cсылка", ТестоваяСсылка);
    РезультатЗапроса = Запрос.Выполнить();
    
    Возврат Не РезультатЗапроса.Пустой();

КонецФункции
7 ЧеловекДуши
 
21.04.15
13:30
(5) Разве? Битый как раз и считается заполненным, нет? :)
8 sapphire
 
21.04.15
13:45
(7) нет
9 sapphire
 
21.04.15
13:46
+(8)
И метод Пустая() вернет ЛОЖЬ, и ЗначенияЗаполнено вернет ИСТИНА.
10 sapphire
 
21.04.15
13:50
(0) Если реквизит составного типа, то запрос, конечно сложнее.

В общем случае,

ГДЕ
     РЕКВИЗИТ IS NOT NULL
AND РЕКВИЗИТ <> ЗНАЧЕНИЕ(Справочник.ТвойСправочник.ПустаяСсылка)
AND (NOT РЕКВИЗИТ Ссылка Справочник.ТвойСправочник)
11 ИС-2
 
naïve
21.04.15
14:01
(0) по пустому коду (или другому вложенному полю)