Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

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

удаление записей с битыми ссылками из независимых регистров сведений
Я
   docerman
 
15.09.16 - 10:08
Добрый день. Подскажите пожалуйста как лучше справиться со следующей проблемой. Необходимо удалить все записи с битыми ссылками из независимых регистров сведений, если битые ссылки в ведущих измерениях. Конфигурация УПП. Проблема образовалась из-за того что при удалении объектов был установлен флаг ОбменДанными.Загрузка = Истина.
 
 
   Nuobu
 
1 - 15.09.16 - 10:11
ТИИ
   FIXXXL
 
2 - 15.09.16 - 10:11
ТИИ с восстановлением битых проведи
восстановленные грохни нормально
   docerman
 
3 - 15.09.16 - 10:17
При ТИИ либо создается новый объект, либо пустая ссылка, Как потом грохнуть созданные новые объекты (по какому признаку). Кроме того хотелось бы ограничиться исправлением регистров сведений, а ТИИ затронет все объекты.
   docerman
 
4 - 15.09.16 - 10:18
ЗЫ. Объектов из базы удалено 200 000
   Nuobu
 
5 - 15.09.16 - 10:18
(3) Боишься, что поисправляет ошибки в других объектах?
   docerman
 
6 - 15.09.16 - 10:20
(5) Точно. В других объектах ничего не ломалось. Не ломалось - не чини.
   aleks_default
 
7 - 15.09.16 - 10:20
Левое соединение с объектом и фильтр по Объект.Ссылка is Null
   docerman
 
8 - 15.09.16 - 10:24
(7) Сколько в УПП независимых регистров, и сколько у них измерений, кроме того после отбора записей в запросе нужно еще удалить эти записи, как?
   Лефмихалыч
 
9 - 15.09.16 - 10:24
Один из вариантов:

ЗАпрос = Новый Запрос("ВЫБРАТЬ * ИЗ РегистрСведений.ТвойРегистр ГДЕ не ИзмерениеГдеЕстьБитыеСсылки.Ссылка есть null");

Набор = РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей();
Набор.Загрузить(Запрос.Выполнить().Выгрузить());
Набор.Записать(Истина);


другой вариант - убрать НЕ и поубивать по одной все записи с битыми ссылками
   Лефмихалыч
 
10 - 15.09.16 - 10:25
(9) только, если ИзмерениеГдеЕстьБитыеСсылки имеет составной тип, это может всё упасть на недостатке памяти, например.

У это машины, что называется, нет мозгов - пользуйтесь своими
 
 Рекламное место пустует
   aleks_default
 
11 - 15.09.16 - 10:27
(8)А что мешает удалить? Объекта нет, но ссылка-то в значении измерения осталась.
   docerman
 
12 - 15.09.16 - 10:28
(11) А ведь точно!
   docerman
 
13 - 15.09.16 - 10:29
(9) Упадет. Например по регистру ВерсииОбъектов (очень большой)
   docerman
 
14 - 15.09.16 - 10:31
(9) Хотя если по одной не упадет
   Serg_1960
 
15 - 15.09.16 - 10:34
(11) +1 Для алгоритмов 1С запись с "битой" ссылкой (именно с "битой", а не "пустой" ссылкой) ничем не отличатся от остальных "нормальных" записей - с ней можно работать в полном объёме возможностей 1С.
   docerman
 
16 - 15.09.16 - 10:37
В целом ясно. Спасибо. Как бы теперь все это автоматизировать. Выбрать все независимые регистры сведений, определить ведущие измерения и сделать по ним запрос с условием.
   Serg_1960
 
17 - 15.09.16 - 10:40
Тупо в цикле по метаданным обойти все регистры сведений с проверкой
   Лефмихалыч
 
18 - 15.09.16 - 10:42
(16) >Как бы теперь все это автоматизировать
это уже автоматизировано - ТИИ
   Serg_1960
 
19 - 15.09.16 - 10:46
Мы не ищем легких путей - "Нормальные герои всегда идут в обход"(цы)

Если без шуток, если у автора это "массовое" явление, то созданные при ТИИ ссылки потом тоже придётся искать алгоритмом, а далее сканировать куда эти документы могли писать, в какие регистры сведений и... короче путь ничем не лучше.
   Лефмихалыч
 
20 - 15.09.16 - 10:47
(19) ТИИ можно настроить, чтобы не создавало, а удаляло. Это как раз то, что нужно.
   docerman
 
21 - 15.09.16 - 10:49
(18) (20) Какие ставить настройки? Очищать ссылки, Удалять объект, Не изменять?
   Serg_1960
 
22 - 15.09.16 - 10:51
(20) Sorry, но ТИИ так не настроишь. Повторю: "битые" ссылки - это не ошибка в записях регистров. Это ошибка в документах, если так можно выразиться. ТИИ или создаст ссылки, или их очистит. И это всё что она может.
   hhhh
 
23 - 15.09.16 - 10:53
(21) Удалять объект должно удалить.
   aleks_default
 
24 - 15.09.16 - 10:55
(22)А как удалит, если эти ссылки в ведущих измерениях?
   Serg_1960
 
25 - 15.09.16 - 10:57
(24) Э? Это не я говорил, что "удалит" :)
   DrZombi
 
26 - 15.09.16 - 11:00
(3) Битая ссылка или нет, для отбора не важно.
   docerman
 
27 - 15.09.16 - 11:01
Только что проверил на тестовой базе. При настройке ТИИ Удалять объект- запись из регистра удалилась. Только страшно запускать с такой настройкой - как бы что еще кроме записей в регистрах не удалилось.
   docerman
 
28 - 15.09.16 - 11:07
т.е есть битая ссылка в документе и прощай документ?
   Serg_1960
 
29 - 15.09.16 - 11:08
(27) Ооо... Sorry, был не прав :( Приношу свои извинения.

PS: раньше, когда однажды столкнулся с такой проблемой, в ТИИ не удалялись записи регистра с пустыми регистраторами. Правда сказать давно это было.
   Serg_1960
 
30 - 15.09.16 - 11:10
(27) После ТИИ остаётся протокол - его можно посмотреть. Если удалит "лишнее" - можно восстановить из копии.
   Лефмихалыч
 
31 - 15.09.16 - 11:12
(27) ты вот тут (16) хочешь руками сделать точно то же самое, но тебе от этого почему-то не страшно
   Serg_1960
 
32 - 15.09.16 - 11:15
(31) Автор, как я понял, боится за другие данные, не в независимых регистрах сведений.
   docerman
 
33 - 15.09.16 - 11:16
(28) Проверил - документ остался, просто вывелось информационное сообщение "Объект, на который ссылается значение, отсутствует."
(31) ) т.е. настройка Удалять объект влияет только на удаление записей из независимых регистров сведений, или на что-то ещё.
 
 
   Serg_1960
 
34 - 15.09.16 - 11:25
(офф)

docerman, а ты можешь проверить кое-что по моей просьбе? Пару раз запустить ТИИ? Я бы хотел разобраться, почему я был не прав в (22) и почему у меня неверное


Первый раз ТИИ с настройкой:
- "При наличии несуществующих ссылок" - "Очищать ссылки"
- "При частичной потери данных объектов" - "Не изменять"

Второй раз ТИИ с настройкой:
- "При наличии несуществующих ссылок" - "Не изменять"
- "При частичной потери данных объектов" - "Удалять объект"

Будут ли удалены записи?
   Serg_1960
 
35 - 15.09.16 - 11:32
Услуга за услугу :)

Это насчёт алгоритмов.
v8: Как перебрать все данные всех регистров сведений.
Посмотри посты 15 и 32. Это близко к твоей теме.
   docerman
 
36 - 15.09.16 - 11:32
1.
- "При наличии несуществующих ссылок" - "Очищать ссылки" 
- "При частичной потери данных объектов" - "Не изменять" 
- Запись осталась ссылка стала пустой

2.
- "При наличии несуществующих ссылок" - "Не изменять" 
- "При частичной потери данных объектов" - "Удалять объект" 
-Запись удалилась
   docerman
 
37 - 15.09.16 - 11:44
Всем спасибо. Попробую сделать ТИИ на копии базы. Проблема в том что в монопольный режим можно уйти только на 8 часов. Потом ведь можно сделать перерыв на рабочий день и потом продолжить прерванное ТИИ?
   Serg_1960
 
38 - 15.09.16 - 12:01
И вам спасибо :)
   CMblCL
 
39 - 15.09.16 - 12:12
(37) Внизу, прервать через, потом выбирешь продолжить тестирование.
   TormozIT
 
40 - 15.09.16 - 12:29
Задачу (0) с помощью подсистемы "Инструменты разработчика" можно решить так.
1. Найти все битые ссылки нужных типов инструментом "Поиск битых ссылок". Он отобразит все ссылающиеся на них объекты (в частности регистры) сгруппировано по таблицам.
2. Поочередно выбирать каждый ссылающийся регистр, выделять все ссылающиеся строки и выполнять команду "Передать в подбор и обработку объектов"
3. В инструменте "Подбор и обработка объектов" для переданных туда ссылающихся строк (ключей регистров) выполнить обработку "Удалить"


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует