Имя: Пароль:
1C
 
8.2 Найти по уникальному идентификатору объект
0 YF
 
30.06.11
12:07
Есть идентификатор вида : 209:971a0018f34e121411e03c1de5b80387

Хочу найти что за объект в базе ему соответствует. Как?
1 Amiralnar
 
30.06.11
12:09
А где ты его берешь?
2 Axel2009
 
30.06.11
12:09
шерстить каждый объект отдельно
3 Fragster
 
гуру
30.06.11
12:10
209 - идентификатор типа, остальное - перемиксованный объект УникальныйИдентификатор
4 YF
 
30.06.11
12:10
(1) Да после обмена делаю ТИИ оно говорит:
Проверка логической целостности. Последовательность.Взаиморасчеты <Объект не найден> (209:971a0018f34e121411e03c1de5b80387)
   Неверная ссылка на регистратор.
5 Рэйв
 
30.06.11
12:10
НовыйGUID = Новый УникальныйИдентификатор(ТвойГуид);
СсылкаГУИД=Документы.ВидДок.ПолучитьСсылку(НовыйGUID);
6 Рэйв
 
30.06.11
12:11
(4)Если <Объект не найден> , то с чего ты взял, что ты его найдешь если база не нашла?
7 YF
 
30.06.11
12:11
(5) щас попробую
8 YF
 
30.06.11
12:12
(6) Ну я же на копии, у меня есть и оригинал, где обмен не запускал ...
9 Fragster
 
гуру
30.06.11
12:12
(5) читай ветку

(4) блииин. сделай запрос по регистру "Взаиморасчеты" примерно такой

Выбрать
 Взаиморасчеты.Регистратор
Из
 РегистрНакопления.Взаиморасчеты
Где
 Взаиморасчеты.Регистратор.Номер Есть NULL

получишь твою ссылку. потом по ней отбор набора записей и запись пустого набора
10 Fragster
 
гуру
30.06.11
12:13
ну а вообще - после обмена - это нормально, если криво правила настроены, или не криво, но это заложено в логику
11 Рэйв
 
30.06.11
12:14
(9)<Объект не найден>  <> NULL
12 Рэйв
 
30.06.11
12:14
+ Ссылка не пустая. Она битая
13 YF
 
30.06.11
12:15
(10) Самое прикольное, что это стандартный обмен БП 2.0 по организации. Там постоянно вылезают такие бяки
14 Defender aka LINN
 
30.06.11
12:16
Выбрать Регистратор Из Последовательность.Взаиморасчеты где Регистратор.Ссылка есть NULL

Но что ты в базе собрался искать, если проблема как раз в том, что в базе его нет?
15 Fragster
 
гуру
30.06.11
12:16
(11) я там не зря написал ".Номер"
16 Defender aka LINN
 
30.06.11
12:18
(11) А не является ли ".Номер" неявным левым соединением?
Варианты ответа:
1) да, является.
2) нет, является.
17 Fragster
 
гуру
30.06.11
12:19
(11) и кстати, да:
NULL <> NULL
18 SalavatUlaev
 
30.06.11
12:20
раз объект не найден, то нет его нигде. Если база SQL, восстанавливай бекап, ищи в SQL таблицах средствами SQL, по таблице и поймешь что за объект
19 luckyluke
 
30.06.11
12:21
(18) в копии он может и оказаться, почему же нигде?
20 Defender aka LINN
 
30.06.11
12:22
(18) Ащета запрос из (9) дает тебе готовую ссылку. У которой даже и тип имеется. Для зачем что-то по таблицам SQL искать?
21 YF
 
30.06.11
12:23
+(19) В том и дело, что он где-то есть: либо в базе до обмена, либо в узле откуда обмен принимали ...

Вот и хочу найти что это было и почему объект удалился, а из последовательности не изьялся ...
22 YF
 
30.06.11
12:24
(20) В запросе (9) обращаемся к регистру накопления, но ТИИ не нашла в нем ссылок на несуществующие объекты ...
23 SalavatUlaev
 
30.06.11
12:24
(20) Не увидел 4 сообщение. Думал вообще ничего не известно, кроме гуида
24 Fragster
 
гуру
30.06.11
12:25
(22) ну удали из последовательности
25 Defender aka LINN
 
30.06.11
12:41
(22) Ну, ять, в (14) Посмотри. БОЛЬШАЯ разница, ага...
26 YF
 
30.06.11
12:45
(25) Да разница-то небольшая, только что там в последовательности-то найдешь? Ну найдешь битые записи, а что за объект был все равно не известно ...
27 Fragster
 
гуру
30.06.11
12:53
ПЦ
28 Defender aka LINN
 
30.06.11
13:23
(26) рукалицо...
29 Amiralnar
 
30.06.11
13:30
(17) (NULL IS NULL) = TRUE
30 Axel2009
 
30.06.11
13:51
ТЗ = ПолучитьСтруктуруХраненияБазыДанных();
   Для Каждого Строка Из ТЗ Цикл
       Если Не ЗначениеЗаполнено(Строка.ИмяТаблицы) Тогда Продолжить; КонецЕсли;
       ПозТочки = Найти(Строка.ИмяТаблицыХранения, ".");
       Если ПозТочки > 0 Тогда
           Продолжить;
           ИмяТаблицы = Лев(Строка.ИмяТаблицыХранения, ПозТочки - 1);
       КонецЕсли;
       ИтоговоеЧисло = "";
       Для Сч = 1 По СтрДлина(Строка.ИмяТаблицыХранения) Цикл
           Символ = Сред(Строка.ИмяТаблицыХранения, Сч, 1);
           Если Найти("0123456789", Символ) > 0 Тогда
               ИтоговоеЧисло = ИтоговоеЧисло + Символ;
           КонецЕсли;
       КонецЦикла;
       Если ИтоговоеЧисло = "209" Тогда
           Сообщить(Строка.ИмяТаблицы);
       КонецЕсли;
   КонецЦикла;
31 Defender aka LINN
 
30.06.11
13:53
(30) А что *это* делает?
32 Axel2009
 
30.06.11
13:58
(30) поможет узнать имя объекта по типу 209..
33 Axel2009
 
30.06.11
14:01
(31) это запустить в базе где отсутствует
(30)+
потом в базе источнике запустить
   Поз = Найти(СтрокаОбъекта, ":");
   Тип = Лев(СтрокаОбъекта, Поз - 1);
   СтрокаУИД = Сред(СтрокаОбъекта, Поз + 1);
   СтрокаУИД = Сред(СтрокаУИД, 24, 8) + "-" + Сред(СтрокаУИД, 20, 4) + "-" + Сред(СтрокаУИД, 16, 4) + "-" + Сред(СтрокаУИД, 1, 4) + "-" + Сред(СтрокаУИД, 5, 12);
   Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаУИД));
справочники.номенклатура. заменить на имятипа что покажет в обработке
34 Defender aka LINN
 
30.06.11
14:01
(32) см (14)
35 Axel2009
 
30.06.11
14:03
(34) и что это покажет? что "объект не найден <209:971a0018f34e121411e03c1de5b80387>"?? а как понять что за объект конкретно?
36 Fragster
 
гуру
30.06.11
14:06
(35) ссылка будет на конкретный объект метаданных
37 Defender aka LINN
 
30.06.11
14:06
(35) рукалицо...

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать РАЗЛИЧНЫЕ Регистратор Из Последовательность.Взаиморасчеты где Регистратор.Ссылка есть NULL";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
   Сообщить(ТипЗнч(Выборка.Регистратор));
КонецЦикла;
38 Fragster
 
гуру
30.06.11
14:06
хоть и отсутствующий
39 Axel2009
 
30.06.11
14:13
(37) был не прав.
2 + 2 = 3.9999999999999999999999999999999...