|
удаление записей с битыми ссылками из независимых регистров сведений | ☑ | ||
---|---|---|---|---|
0
docerman
15.09.16
✎
10:08
|
Добрый день. Подскажите пожалуйста как лучше справиться со следующей проблемой. Необходимо удалить все записи с битыми ссылками из независимых регистров сведений, если битые ссылки в ведущих измерениях. Конфигурация УПП. Проблема образовалась из-за того что при удалении объектов был установлен флаг ОбменДанными.Загрузка = Истина.
|
|||
1
Nuobu
15.09.16
✎
10:11
|
ТИИ
|
|||
2
FIXXXL
15.09.16
✎
10:11
|
ТИИ с восстановлением битых проведи
восстановленные грохни нормально |
|||
3
docerman
15.09.16
✎
10:17
|
При ТИИ либо создается новый объект, либо пустая ссылка, Как потом грохнуть созданные новые объекты (по какому признаку). Кроме того хотелось бы ограничиться исправлением регистров сведений, а ТИИ затронет все объекты.
|
|||
4
docerman
15.09.16
✎
10:18
|
ЗЫ. Объектов из базы удалено 200 000
|
|||
5
Nuobu
15.09.16
✎
10:18
|
(3) Боишься, что поисправляет ошибки в других объектах?
|
|||
6
docerman
15.09.16
✎
10:20
|
(5) Точно. В других объектах ничего не ломалось. Не ломалось - не чини.
|
|||
7
aleks_default
15.09.16
✎
10:20
|
Левое соединение с объектом и фильтр по Объект.Ссылка is Null
|
|||
8
docerman
15.09.16
✎
10:24
|
(7) Сколько в УПП независимых регистров, и сколько у них измерений, кроме того после отбора записей в запросе нужно еще удалить эти записи, как?
|
|||
9
Лефмихалыч
15.09.16
✎
10:24
|
Один из вариантов:
ЗАпрос = Новый Запрос("ВЫБРАТЬ * ИЗ РегистрСведений.ТвойРегистр ГДЕ не ИзмерениеГдеЕстьБитыеСсылки.Ссылка есть null"); Набор = РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей(); Набор.Загрузить(Запрос.Выполнить().Выгрузить()); Набор.Записать(Истина); другой вариант - убрать НЕ и поубивать по одной все записи с битыми ссылками |
|||
10
Лефмихалыч
15.09.16
✎
10:25
|
(9) только, если ИзмерениеГдеЕстьБитыеСсылки имеет составной тип, это может всё упасть на недостатке памяти, например.
У это машины, что называется, нет мозгов - пользуйтесь своими |
|||
11
aleks_default
15.09.16
✎
10:27
|
(8)А что мешает удалить? Объекта нет, но ссылка-то в значении измерения осталась.
|
|||
12
docerman
15.09.16
✎
10:28
|
(11) А ведь точно!
|
|||
13
docerman
15.09.16
✎
10:29
|
(9) Упадет. Например по регистру ВерсииОбъектов (очень большой)
|
|||
14
docerman
15.09.16
✎
10:31
|
(9) Хотя если по одной не упадет
|
|||
15
Serg_1960
15.09.16
✎
10:34
|
(11) +1 Для алгоритмов 1С запись с "битой" ссылкой (именно с "битой", а не "пустой" ссылкой) ничем не отличатся от остальных "нормальных" записей - с ней можно работать в полном объёме возможностей 1С.
|
|||
16
docerman
15.09.16
✎
10:37
|
В целом ясно. Спасибо. Как бы теперь все это автоматизировать. Выбрать все независимые регистры сведений, определить ведущие измерения и сделать по ним запрос с условием.
|
|||
17
Serg_1960
15.09.16
✎
10:40
|
Тупо в цикле по метаданным обойти все регистры сведений с проверкой
|
|||
18
Лефмихалыч
15.09.16
✎
10:42
|
(16) >Как бы теперь все это автоматизировать
это уже автоматизировано - ТИИ |
|||
19
Serg_1960
15.09.16
✎
10:46
|
Мы не ищем легких путей - "Нормальные герои всегда идут в обход"(цы)
Если без шуток, если у автора это "массовое" явление, то созданные при ТИИ ссылки потом тоже придётся искать алгоритмом, а далее сканировать куда эти документы могли писать, в какие регистры сведений и... короче путь ничем не лучше. |
|||
20
Лефмихалыч
15.09.16
✎
10:47
|
(19) ТИИ можно настроить, чтобы не создавало, а удаляло. Это как раз то, что нужно.
|
|||
21
docerman
15.09.16
✎
10:49
|
(18) (20) Какие ставить настройки? Очищать ссылки, Удалять объект, Не изменять?
|
|||
22
Serg_1960
15.09.16
✎
10:51
|
(20) Sorry, но ТИИ так не настроишь. Повторю: "битые" ссылки - это не ошибка в записях регистров. Это ошибка в документах, если так можно выразиться. ТИИ или создаст ссылки, или их очистит. И это всё что она может.
|
|||
23
hhhh
15.09.16
✎
10:53
|
(21) Удалять объект должно удалить.
|
|||
24
aleks_default
15.09.16
✎
10:55
|
(22)А как удалит, если эти ссылки в ведущих измерениях?
|
|||
25
Serg_1960
15.09.16
✎
10:57
|
(24) Э? Это не я говорил, что "удалит" :)
|
|||
26
DrZombi
гуру
15.09.16
✎
11:00
|
(3) Битая ссылка или нет, для отбора не важно.
|
|||
27
docerman
15.09.16
✎
11:01
|
Только что проверил на тестовой базе. При настройке ТИИ Удалять объект- запись из регистра удалилась. Только страшно запускать с такой настройкой - как бы что еще кроме записей в регистрах не удалилось.
|
|||
28
docerman
15.09.16
✎
11:07
|
т.е есть битая ссылка в документе и прощай документ?
|
|||
29
Serg_1960
15.09.16
✎
11:08
|
(27) Ооо... Sorry, был не прав :( Приношу свои извинения.
PS: раньше, когда однажды столкнулся с такой проблемой, в ТИИ не удалялись записи регистра с пустыми регистраторами. Правда сказать давно это было. |
|||
30
Serg_1960
15.09.16
✎
11:10
|
(27) После ТИИ остаётся протокол - его можно посмотреть. Если удалит "лишнее" - можно восстановить из копии.
|
|||
31
Лефмихалыч
15.09.16
✎
11:12
|
(27) ты вот тут (16) хочешь руками сделать точно то же самое, но тебе от этого почему-то не страшно
|
|||
32
Serg_1960
15.09.16
✎
11:15
|
(31) Автор, как я понял, боится за другие данные, не в независимых регистрах сведений.
|
|||
33
docerman
15.09.16
✎
11:16
|
(28) Проверил - документ остался, просто вывелось информационное сообщение "Объект, на который ссылается значение, отсутствует."
(31) ) т.е. настройка Удалять объект влияет только на удаление записей из независимых регистров сведений, или на что-то ещё. |
|||
34
Serg_1960
15.09.16
✎
11:25
|
(офф)
docerman, а ты можешь проверить кое-что по моей просьбе? Пару раз запустить ТИИ? Я бы хотел разобраться, почему я был не прав в (22) и почему у меня неверное Первый раз ТИИ с настройкой: - "При наличии несуществующих ссылок" - "Очищать ссылки" - "При частичной потери данных объектов" - "Не изменять" Второй раз ТИИ с настройкой: - "При наличии несуществующих ссылок" - "Не изменять" - "При частичной потери данных объектов" - "Удалять объект" Будут ли удалены записи? |
|||
35
Serg_1960
15.09.16
✎
11:32
|
Услуга за услугу :)
Это насчёт алгоритмов. v8: Как перебрать все данные всех регистров сведений. Посмотри посты 15 и 32. Это близко к твоей теме. |
|||
36
docerman
15.09.16
✎
11:32
|
1.
- "При наличии несуществующих ссылок" - "Очищать ссылки" - "При частичной потери данных объектов" - "Не изменять" - Запись осталась ссылка стала пустой 2. - "При наличии несуществующих ссылок" - "Не изменять" - "При частичной потери данных объектов" - "Удалять объект" -Запись удалилась |
|||
37
docerman
15.09.16
✎
11:44
|
Всем спасибо. Попробую сделать ТИИ на копии базы. Проблема в том что в монопольный режим можно уйти только на 8 часов. Потом ведь можно сделать перерыв на рабочий день и потом продолжить прерванное ТИИ?
|
|||
38
Serg_1960
15.09.16
✎
12:01
|
И вам спасибо :)
|
|||
39
CMblCL
15.09.16
✎
12:12
|
(37) Внизу, прервать через, потом выбирешь продолжить тестирование.
|
|||
40
TormozIT
гуру
15.09.16
✎
12:29
|
Задачу (0) с помощью подсистемы "Инструменты разработчика" можно решить так.
1. Найти все битые ссылки нужных типов инструментом "Поиск битых ссылок". Он отобразит все ссылающиеся на них объекты (в частности регистры) сгруппировано по таблицам. 2. Поочередно выбирать каждый ссылающийся регистр, выделять все ссылающиеся строки и выполнять команду "Передать в подбор и обработку объектов" 3. В инструменте "Подбор и обработка объектов" для переданных туда ссылающихся строк (ключей регистров) выполнить обработку "Удалить" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |