|
Как удалить записи пер. Рег. Сведений у которого Измерение: <Объект не найден> ? | ☑ | ||
---|---|---|---|---|
0
vladimir-boy
25.03.13
✎
17:18
|
Есть такой запрос:
ВЫБРАТЬ * ИЗ РегистрСведений.РасценкиТехнологическихОпераций КАК РасценкиТехнологическихОпераций ГДЕ РасценкиТехнологическихОпераций.ТехнологическаяОперация.Ссылка ЕСТЬ NULL В результатеЗапроса: Выходят некоторые записи у которых измерение "ТехнологическаяОперация"(Справочник) было грохнуто - <Объект не найден> (225:99de0025901805cd11e01e78470e8ce4), причём не понятно почему записи данного Регистра Сведений висят в базе, ведь измерение "ТехнологическаяОперация" идёт с флагом "Ведущее". Как удалить эти записи??? Спасибо за ответы. |
|||
1
Maxus43
25.03.13
✎
17:19
|
так и удаляй, отбор на "<Объект не найден> (225:99de0025901805cd11e01e78470e8ce4" ставь как обычно
|
|||
2
samozvanec
25.03.13
✎
17:20
|
(0) ТИИ-очищать-удалить пустые
|
|||
3
vladimir-boy
25.03.13
✎
17:20
|
(1)В том то и дело, что не до пру как поставить отбор "на нечто" ???
|
|||
4
mikecool
25.03.13
✎
17:21
|
выделить строки - нажать дел ))
|
|||
5
Лефмихалыч
25.03.13
✎
17:21
|
(0) выбрат эти записи запросом и то,что выберется использовать для отбора
|
|||
6
vladimir-boy
25.03.13
✎
17:21
|
(2) ТИИ долго, хотя как вариант Да
|
|||
7
Maxus43
25.03.13
✎
17:22
|
(3) запросом, Где Измерение.Ссылка Есть null например
|
|||
8
H A D G E H O G s
25.03.13
✎
17:23
|
Неполучица.
|
|||
9
samozvanec
25.03.13
✎
17:23
|
(7) причем тут нулл?
|
|||
10
Maxus43
25.03.13
✎
17:25
|
(9) битые ссылки дают null при неявном соединении, как например через точку. так ищут битые ссылки в запросах
|
|||
11
H A D G E H O G s
25.03.13
✎
17:25
|
(0)
а) Сдедать копию б)Отловить запрос (0) в профайлере. в) Заменить Select на delete г) Profit |
|||
12
acsent
25.03.13
✎
17:25
|
(11) нафиг такой геморой?
|
|||
13
samozvanec
25.03.13
✎
17:26
|
(10) точно)
|
|||
14
Maxus43
25.03.13
✎
17:26
|
пилять, вы чо усложняете? запросом обычным ищутся битые ссылки легко, и так же легко на них ставится отбор потом и удаляются записи из регистров
|
|||
15
H A D G E H O G s
25.03.13
✎
17:26
|
(12) Потому что другие варианты 1С отвергнет. Раньше так было.
|
|||
16
H A D G E H O G s
25.03.13
✎
17:26
|
(14) Неудаляются.
|
|||
17
Maxus43
25.03.13
✎
17:27
|
(16) я недавно удалял. на 8.2.15, всё норм
|
|||
18
Maxus43
25.03.13
✎
17:27
|
на непериодическом независимом регистре. С другими проблем тоже не вижу
|
|||
19
acsent
25.03.13
✎
17:27
|
запись = РегистрыСведений....СоздатьМенеджерЗаписи();
ЗаполнитиьЗначенияСвойств(Запись,Выборка) Запись.Удалить() |
|||
20
H A D G E H O G s
25.03.13
✎
17:32
|
Ну значит стар стал, битых ссылок боюсь, девок не порчу, нетленки не пишу.
|
|||
21
Лефмихалыч
25.03.13
✎
17:33
|
(15) у меня где-то даже обработка есть, которой в любых регистрах можно крошить записи с битыми ссылками
|
|||
22
Maxus43
25.03.13
✎
17:36
|
(20) я тоже не молод, но даже на 8.0 было именно так, всегда так было) не помню я чтоб 1с отвергала такой нежный подход
|
|||
23
vladimir-boy
25.03.13
✎
17:40
|
(19) пытался да и другими способами, но результат пока нулевой, но я ещё не сдался
|
|||
24
Maxus43
25.03.13
✎
17:43
|
(23) всё ж сказали подробно вроде, или что?
|
|||
25
vladimir-boy
25.03.13
✎
17:43
|
+(19) НЕ СРАБАТЫВАЕТ, к сожаленью:
МойЗапрос = Новый Запрос(); МойЗапрос.Текст="ВЫБРАТЬ | РасценкиТехнологическихОпераций.ТехнологическаяОперация |ИЗ | РегистрСведений.РасценкиТехнологическихОпераций КАК РасценкиТехнологическихОпераций |ГДЕ | РасценкиТехнологическихОпераций.ТехнологическаяОперация.Ссылка ЕСТЬ NULL "; МойЗапросРезультат = МойЗапрос.Выполнить(); МойЗапросРезультатВыборка = МойЗапросРезультат.Выбрать(); ТабличноеПоле1= МойЗапросРезультат.Выгрузить(); ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); Запись= РегистрыСведений.РасценкиТехнологическихОпераций.СоздатьМенеджерЗаписи(); ЗаполнитьЗначенияСвойств(Запись, МойЗапросРезультатВыборка); Запись.Удалить(); Записи остаются. Упс. |
|||
26
acsent
25.03.13
✎
17:47
|
а где обход выборки то?
|
|||
27
vladimir-boy
25.03.13
✎
17:49
|
(26) С таким кодом вообще ошибка вываливается:
{Форма.ФормаОтчета.Форма(1326)}: Поле объекта недоступно для записи (ТехнологическаяОперация) МойРегистрРасценкиТехОпераций.Отбор.ТехнологическаяОперация = МойЗапросРезультатВыборка.ТехнологическаяОперацияСсылка; Код: МойЗапрос = Новый Запрос(); МойЗапрос.Текст="ВЫБРАТЬ | РасценкиТехнологическихОпераций.ТехнологическаяОперация.Ссылка |ИЗ | РегистрСведений.РасценкиТехнологическихОпераций КАК РасценкиТехнологическихОпераций |ГДЕ | РасценкиТехнологическихОпераций.ТехнологическаяОперация.Ссылка ЕСТЬ NULL "; МойЗапросРезультат = МойЗапрос.Выполнить(); МойЗапросРезультатВыборка = МойЗапросРезультат.Выбрать(); ТабличноеПоле1= МойЗапросРезультат.Выгрузить(); ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); МойЗапросРезультатВыборка = МойЗапросРезультат.Выбрать(); Пока МойЗапросРезультатВыборка.Следующий() Цикл МойРегистрРасценкиТехОпераций = РегистрыСведений.РасценкиТехнологическихОпераций.СоздатьНаборЗаписей(); МойРегистрРасценкиТехОпераций.Отбор.ТехнологическаяОперация = МойЗапросРезультатВыборка.ТехнологическаяОперацияСсылка; МойРегистрРасценкиТехОпераций.Записать(); КонецЦикла; |
|||
28
acsent
25.03.13
✎
17:50
|
(27) тебе прям до последнего разжовывать чтоли?
|
|||
29
vladimir-boy
25.03.13
✎
17:52
|
(28) Да буду стараться сам, спасибо огромное итак, сообщу обязательно если у меня получится
|
|||
30
GANR
25.03.13
✎
17:54
|
У самого возникает инстинктивное желание SQL припахивать всюду где не лень (11), но надо по православному (19).
Я склоняюсь к чему-то ещё более православному варианту - восстановить несуществующие объекты, на которые имеются ссылки в РС. Для этого можно воспользоваться типовой обработкой ВыгрузкаЗагрузкаДанныхXML.epf http://its.1c.ru/db/metod81#content:4126:1. Отобрал в архивной копии базы "битые" объекты, выгрузил в xml, загрузил в целевую базу - всё... и кодить не надо. По сути ВыгрузкаЗагрузкаДанныхXML.epf реализует такой алгоритм: GUID_ПотерянногоЭлемента = Новый УникальныйИдентификатор("6ce92cb6-6d92-11e0-afc8-003048f27c5f"); Ссылка_ПотерянногоЭлемента = Справочники.ТвойСправочник.ПолучитьСсылку(GUID_ПотерянногоЭлемента); ОбъектПоСсылке = Справочники.ТвойСправочник.СоздатьЭлемент(); ОбъектПоСсылке.УстанвитьСсылкуНового(Ссылка_ПотерянногоЭлемента); |
|||
31
vladimir-boy
25.03.13
✎
17:58
|
(31)Спасибо! Вот это очень интересное решение путём восстановления объекта измерения, опробую такой вариант обязательно.
|
|||
32
alexei366
25.03.13
✎
18:15
|
Да хз, измерение как понимаю ссылка на спр какойто, ну так и сделать запрос по регистру с левым соединением на таблице справочника, и в условии ЕСТЬNULL на колонку таблицы справочника к примеру на туже самую ссылку. И вернет тебе запрос все измерения коих нет в справочнике уже, ну а дальше удаляй
|
|||
33
vladimir-boy
25.03.13
✎
18:21
|
(32) Найти не вопрос, а удалить балалайка: только кажется что можно на раз-два
|
|||
34
GANR
25.03.13
✎
18:25
|
(31) А чтобы узнать, какие элементы в копии соответствуют "битым" ссылкам (GUIDы-то в "битой" базе есть) http://ximage.ru/data/imgs/1364221484.jpg
|
|||
35
Reset
25.03.13
✎
18:30
|
(33) Удаляется элементарно, на раз-два. Другое дело, что ты пока не освоил работу с даже элементарными механизмами платформы - выбороками из запроса, записями рс, наборами.
|
|||
36
vladimir-boy
25.03.13
✎
18:38
|
(35) maybe , но поверь что вариант только прокатит(сдаётся мне), который предложил GANR
Предложи реальный код, пожалуйста |
|||
37
Reset
25.03.13
✎
18:44
|
(36) Что предлагать? Ответ на вопрос в сабже дан в посте (1).
Писать за тебя код не буду, уж извини. +1 к(28). GANR то же говорит дело, но это уже вопрос подхода в конкретном случае. |
|||
38
vladimir-boy
25.03.13
✎
18:45
|
(37) Пробовал Как в (1) но ругается ошибкой, что не понимает
|
|||
39
Reset
25.03.13
✎
18:46
|
Я бы делал (это уже выходит за рамки заданного вопроса) сначала поиск ссылок по базе, если есть ссылки в других местах, кроме РС, то "восстанавливал" бы объект. Иначе удадял из регистра.
|
|||
40
Reset
25.03.13
✎
18:47
|
(38) Это ты не понимаешь, повторюсь.
Ладно, ушел, чтоб "не троллить" |
|||
41
Reset
25.03.13
✎
18:48
|
в (19) расшифровка (1)
|
|||
42
vladimir-boy
25.03.13
✎
18:52
|
(41) Ок. Намёк понятен. Буду биться как рыба об лёд, но попытаюсь достичь результата!
|
|||
43
GANR
29.03.13
✎
18:51
|
Вот ещё статейка http://infostart.ru/public/99109/ ключевое http://infostart.ru/upload/iblock/1e7/GUID_UUID.png
|
|||
44
GANR
29.03.13
✎
18:52
|
Функция UUIDToGUID(UUID) Экспорт
Возврат Прав(UUID, 8) + "-" + Сред(UUID, 21, 4) + "-" + Сред(UUID, 17, 4) + "-" + Лев(UUID, 4) + "-" + Сред(UUID, 5, 12); КонецФункции Функция GUIDToUUID(GUID) Экспорт Возврат Сред(GUID, 20, 4) + Прав(GUID, 12) + Сред(GUID, 15, 4) + Сред(GUID, 10, 4) + Лев(GUID, 8); КонецФункции |
|||
45
fisher
29.03.13
✎
18:55
|
ИМХО, самый простой способ - оживить регистраторов по битым ссылкам и тут же их грохнуть вместе с записями.
|
|||
46
Reset
29.03.13
✎
19:08
|
(45) у него вроде на справочник(ТехнологическаяОперация) "висит" ссылка, а не на регистратор.
Хотя согласен, если этот регистр таки подчинен регистратору, тогда правильней, действительно, в документе проставить правильное значение(выбрать существующий элемент) и перепровести. Или восстановить элемент справочника по ссылке. А не удалять часть движений документа. Впрочем, это укладывается в (39) ;) |
|||
47
GANR
29.03.13
✎
19:23
|
На примере (0):
1. Строчка в ТИИ <Объект не найден> (225:99de0025901805cd11e01e78470e8ce4) 2. UUID: 99de0025901805cd11e01e78470e8ce4 3. GUID: 470e8ce4-1e78-11e0-99de-0025901805cd Вот по п.3 и надо вычислить живую Ссылку в копии (34) и скормить (30). |
|||
48
Reset
29.03.13
✎
19:28
|
(47) Если по примеру (0), у него уже есть готовая ссылка как результат запроса и преобразования представления уида туда-сюда не нужны.
|
|||
49
Reset
29.03.13
✎
19:29
|
то есть в (30) можно сразу к четвертой строке приступать
ОбъектПоСсылке.УстанвитьСсылкуНового(Ссылка_ПотерянногоЭлемента_ПолученнаяИзЗапроса); |
|||
50
fisher
29.03.13
✎
19:30
|
(46) Без разницы. Измерение-то ведущее. Если создать элемент справочника по битой ссылке и тут же его грохнуть - всё будет в ажуре.
|
|||
51
Reset
29.03.13
✎
19:31
|
(50) Собственно, не возражаю, если других ссылок, кроме как в РС нету. А если нету то почему просто не грохнуть :) без разницы в общем
|
|||
52
GANR
29.03.13
✎
19:31
|
(48) О! запрос. Тогда БитаяСсылка.УникальныйИдентификатор() Ищем в копии базы по (34), ВыгрузкаЗагрузкаДанныхXML.epf
|
|||
53
Reset
29.03.13
✎
19:32
|
а если есть регистратор то возражаю. Но тогад и ссылка будет в документе
|
|||
54
Reset
29.03.13
✎
19:33
|
Я думаю мы тут зря решаем вопрос, авто то ушел 4 дня назад :)
|
|||
55
Reset
29.03.13
✎
19:33
|
автор*
|
|||
56
GANR
29.03.13
✎
19:51
|
(54) а это н а м пригодится полюбому
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |