удаление записей с битыми ссылками из независимых регистров сведений #780772


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

В этой группе 1С