Проблема с Планом обмена. Не могу удалить битый эелемент

1. tishatdv 06.04.21 21:28 Сейчас в теме
Добрый день.
Столкнулся с проблемой при обмене - в одно из сообщений попал "фантомный" элемент
Как его убрать из сообщение. При попытке отменить регистрацию выдает ошибку
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. Sashares 35 07.04.21 00:45 Сейчас в теме
(1)Почему вы решили, что это фантомный элемент?
Например, был в базе документ, его пометили на удаление и выполнили непосредственное удаление.
Данные о том что документ был удален тоже мигрируют.
Может это именно такая ситуация?
2. UtSpar 134 06.04.21 22:09 Сейчас в теме
Критично если полностью отменить регистрацию?


Если да то зарегесирированные документы хранятся в плане обмена и через различные обработки их можно почистить. Например инструменты разработчика.
3. UtSpar 134 06.04.21 22:12 Сейчас в теме
Можно мини обработкой попробовать.

Там строчка одна https://forum.infostart.ru/forum9/topic49206/
4. tishatdv 06.04.21 22:25 Сейчас в теме
(3)ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, ПроблеммныйЭлемент.Ссылка) - падает в ошибку при передаче параметра 2, аналогично скрину
ПроблеммныйЭлемент имеет гуид 0000 -0000 (все ноли) и пустую дату.
Тогда где это хранится и откуда чистить?
5. UtSpar 134 06.04.21 22:48 Сейчас в теме
(4) Хммм, хранится в таблице Документ. Имя.изменения

Гляньте статью может натолкнет вас на мысль. http://howknow1c.ru/programmirovanie-1c/tablicy-plana-obmena-1s.html
6. UtSpar 134 06.04.21 22:50 Сейчас в теме
(4)хммм. Гляньте статью http://howknow1c.ru/programmirovanie-1c/tablicy-plana-obmena-1s.html

Может натолкнет на мысль.
21. RustamZz 07.04.21 08:30 Сейчас в теме
(4) Гуид все нули это Документы.РеализацияТоваровУслуг.ПустаяСсылка(). Если ничего не помогает может в SQL эту запись удалить?
22. MaxS 2868 07.04.21 08:33 Сейчас в теме
(21) да, если средствами 1С никак, можно в SQL найти запись. И может быть не удалять, а подправить по примеру соседней рабочей и потом в базе штатно удалить.
7. tishatdv 06.04.21 23:57 Сейчас в теме
Через инструмент разработчика проблемный элемент не виден (см скрин) - на один элемент меньше. =52330
Прикрепленные файлы:
8. Global__IT 278 07.04.21 00:01 Сейчас в теме
Выберите циклом все изменения, кроме последнего в таблицу значений, при выборе поставьте попытку исключения. Потом очистите всю регистрацию изменений через ПланыОбмена.УдалитьРегистрациюИзмененмй(УзелОбмена), а потом в цикле по таблице значений зарегистрируйте изменения
10. tishatdv 07.04.21 00:55 Сейчас в теме
Да, похоже что ПроблемныйЭлемент был непосредственно удален из базы. Но где теперь от него очистить все? Пробую через Инструменты Разработчика - таже ошибка
Прикрепленные файлы:
11. Sashares 35 07.04.21 00:57 Сейчас в теме
(10)А почему он проблемный то?
Это стандартная ситуация.
Если удаление объекта должно мигрировать в другую базу, значит это правильно, что регистрируется удаление, и не надо ничего удалять.
12. tishatdv 07.04.21 01:03 Сейчас в теме
РИБ его выгружает в сообщение. А при попытке загрузить сообщение с этим элементом в "приемник" - приемник уходит в ошибку "...при записи... - немогу обратотать обязательные реквизиты типа даты и т.д.", в результате риб безуспешно прекращает загрузку (это и стало причиной поиска элемента. - элемент мне наверняка не нужен - менять стандартный "ПриЗаписи" нецелесообразно. - Значит надо удалить "бородавку"... как
13. Sashares 35 07.04.21 01:21 Сейчас в теме
(12)Допустим, вы удалите его из регистрации, вы же понимаете, что при следующем непосредственном удалении документа ситуация повторится?
То есть проблему этим вы не исправите, только ее частное проявление.

Удалить просто - вызвать метод ПланыОбмена.УдалитьРегистрациюИзмененмй(УзелОбмена, Данные)
Где данные - тип УдалениеОбъекта с ссылкой на удаленный документ.
14. tishatdv 07.04.21 01:39 Сейчас в теме
(13)
ПланыОбмена.УдалитьРегистрациюИзмененмй(УзелОбмена, Данные)

Полностью согласен. В этой БД за 9лет работы первый прецендент. Примерно знаю при каких обстоятельствах могло произойти.
А вот с удалением пока беда ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, ПроблеммныйЭлемент.Ссылка) - не проходит - както по другому... не пойму
15. MaxS 2868 07.04.21 05:36 Сейчас в теме
Уникальный идентификатор битой ссылки хранится там: Создать объект по уид и потом штатно всё удалить.
16. UtSpar 134 07.04.21 06:27 Сейчас в теме
(15) ТС писал что гуид у него 0000-0000 (все нули)
17. Andrekaa 07.04.21 06:36 Сейчас в теме
в сообщении его просто уберите (найдите по гуиду 000-.....)
18. tishatdv 07.04.21 06:47 Сейчас в теме
    УзелОбмена   = ПланыОбмена.Полный.НайтиПоКоду("009"); //ищем узел плана обмена по коду, из данного узла будем считывать изменения
    МоеСообщение = 687;
    Если УзелОбмена <> ПланыОбмена.Полный.ПустаяСсылка() Тогда //если узел обмена найден тогда считываем изменения
        МассивВыгружаемыхЭлементов = Новый Массив;
        
        ЗапросПланОбмена = Новый Запрос; //запросом выберем изменения РеализацияТоваровУслуг
        ЗапросПланОбмена.Текст =
        "ВЫБРАТЬ
        |    РеализацияТоваровУслугИзменения.Узел,
        |    РеализацияТоваровУслугИзменения.НомерСообщения,
        |    РеализацияТоваровУслугИзменения.Ссылка КАК ЭлементВыгрузки
        |ИЗ
        |    Документ.РеализацияТоваровУслуг.Изменения КАК РеализацияТоваровУслугИзменения
        |ГДЕ
        |    РеализацияТоваровУслугИзменения.Узел           = &МоеСообщение
        |    РеализацияТоваровУслугИзменения.НомерСообщения = &УзелОбмена";
        ЗапросПланОбмена.УстановитьПараметр("УзелОбмена", УзелОбмена);
        РезультатПланОбмена = ЗапросПланОбмена.Выполнить();
        
        Если НЕ РезультатПланОбмена.Пустой() Тогда
            ВыборкаПланОбмена = РезультатПланОбмена.Выбрать(); //создаём выборку изменений, будут выбраны измененные элементы справочника Номенклатура из узла обмена указанного выше
            Пока ВыборкаПланОбмена.Следующий() Цикл //цикл по выборке
                Если ВыборкаПланОбмена.НомерСообщения=МоеСообщение тогда
                    МассивВыгружаемыхЭлементов.Добавить(ВыборкаПланОбмена.ЭлементВыгрузки); //заполняем массив элементов для выгрузки         
                конецесли;
            КонецЦикла;    
        КонецЕсли;    
    КонецЕсли;
    
    
    Для каждого элементМассива  из МассивВыгружаемыхЭлементов Цикл
            сообщить(" "+ элементМассива + " его GUID "+ элементМассива.уникальныйИдентификатор());
            ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена.Ссылка, элементМассива.Ссылка);
    КонецЦикла;
Показать


- падает в ошибку при передаче параметра 2, т.к. гуида нет (00000)
19. MaxS 2868 07.04.21 06:49 Сейчас в теме
(16) Тогда в копии базы тестирование и исправление с созданием отсутствующих.
И как-то целую запись потом передать в рабочую базу.
Если база большая, это на несколько дней может растянуться.
20. tishatdv 07.04.21 08:04 Сейчас в теме
(19)
с созданием отсутствующих.

В случае РИБ создавать отсутствующие не желательно.
База 800гб ТИИ не подойдет.
Я понимаю что я что-то не то удаляю - я пытаюсь элементМассива.Ссылка удалить признак выгрузки, а как удалить строку в которой упоминается этот элемент? (см скрин из 10)
23. tishatdv 07.04.21 10:40 Сейчас в теме
А где хранится эта строка - как найти эту таблицу.
Документы
=> _Document<n> - таблица документов для каждого объекта метаданных "документ".
=> _Document<n>_VT<k> - табличная часть документа - для каждой табличной части каждого документа.
=> _DocumentChangeRec<n> - таблица регистрации изменений объекта метаданных типа "документ". Создается для каждого объекта метаданных типа "документ", если он участвует хотя бы в одном плане обмена.
Предполагаю в моем случае в _Document<Реализация> нету, а в _DocumentChangeRec<Реализация> надо искать эту строку.
Или где?
24. RustamZz 07.04.21 11:15 Сейчас в теме
(23) ПолучитьСтруктуруХраненияБазыДанных
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот