Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Битые ссылки в таблице Изменения регистра накопления

Битые ссылки в таблице Изменения регистра накопления
Я
   kdenis
 
09.09.21 - 12:02
Доброго дня!

УТ 10.3, есть обмены по правилам с другими конфигурациями.

При загрузке dt из файловой базы в PostgreSQL получил ошибку: "Попытка вставки неуникального значения в уникальный индекс:".
Причину ошибки нашел.
В таблице "РегистрНакопления.РасчетыСКонтрагентами.Изменения" есть одинаковые записи. Но записи эти с битыми ссылками.

https://ibb.co/4jqgTGK

Посоветуйте, как удалить эти записи так, чтобы не испортить обмен. Обмен актуальный.

Читал про "УдалитьРегистрациюИзменений(<Узлы>, <Данные>)". Но нечего передавать в параметр "Данные".
   DrShad
 
1 - 09.09.21 - 12:17
объект метаданных передавай
   Галахад
 
2 - 09.09.21 - 12:17
Если нужных для регистра РасчетыСКонтрагентами нет, то можно так: Метаданные.РегистрыНакопления.РасчетыСКонтрагентами
   Михаил Козлов
 
3 - 09.09.21 - 12:19
(1)+ Или все изменения грохнуть. В УТ 10.3 вроде была смотрелка изменений в узле с возможностью удалить выборочно.
   youalex
 
4 - 09.09.21 - 13:04
Значением данного параметра может быть объект метаданных, объект, представляющий данные, хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер записи константы, набор записей регистра и т. п.,

Набор с отборами по ключевым полям таблицы изменений  
по идее если сделать УдалитьРегистрациюИзменений(), а потом ЗарегистрироватьИзменения() тем же набором - останется одна запись
   kdenis
 
5 - 09.09.21 - 13:18
Пока проверяю "В УТ 10.3 вроде была смотрелка изменений в узле с возможностью удалить выборочно."
Очень долго открывает список изменений.

Если не получится, буду экспериментировать с "УдалитьРегистрациюИзменений(<Узлы>, <Данные>)".
Пока до конца не понимаю как она работает:
- Если, как в (1) и (2), передать "Метаданные.РегистрыНакопления.РасчетыСКонтрагентами", видимо удаляются все зарегистрированные изменения. Как это повлияет на работу обмена?
- (4) Записей в регистре нет, есть только в таблице изменений регистра. Ссылки битые, набор записей не передать. Если я правильно понял о чем Вы.
   Многолетний Апельсин
 
6 - 09.09.21 - 13:27
(5) Такой вариант не работает?

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

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    
    НЗ = РегистрыНакопления.РасчетыСКлиентами.СоздатьНаборЗаписей();
    НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
    
    ПланыОбмена.УдалитьРегистрациюИзменений(Узел,НЗ);               
КонецЦикла;
   youalex
 
7 - 09.09.21 - 13:27
(5) передаешь пустой набор, главное - отборы.
Ссылки на значения отборов у тебя же есть в таблице регистрации, и что что они битые, не пустые же)
   youalex
 
8 - 09.09.21 - 13:31
(7) То что они битые - это кстати нормально для регистрации, может означать, что Регистратор в Источнике удален, и наборы по нему нужно передать в Приемник (а так как записей нет - уйдут пустые наборы, но с отбором, и очистятся в Приемнике). А если ты сейчас здесь удалишь, есть риск что в Приемнике они останутся болтаться уже в таблице данных, с битыми ссылками, да
   kdenis
 
9 - 09.09.21 - 13:35
(6) Сразу попробовал - пусто.
(7), (8) Идея понятна. Если с ручной чисткой не осилю, попробую так.

Пока всем спасибо.
   Serg_1960
 
10 - 09.09.21 - 14:07
(0) Так называемые "битые" ссылки, сами по себе, не мешают ни индексированию, ни обмену, ни работе с записями регистра и регистрации изменений. Если это не РИБ обмен, то этих записей не должно быть.
   Ёпрст
 
11 - 09.09.21 - 22:55
(6) в УдалитьРегистрациюИзменений нужно передать прочитанный набор
   Ёпрст
 
12 - 09.09.21 - 22:58
+ 11
   
    НЗ = РегистрыНакопления.РасчетыСКлиентами.СоздатьНаборЗаписей();
    НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
    НЗ.Прочитать();
    ПланыОбмена.УдалитьРегистрациюИзменений(Узел,НЗ);  

   kdenis
 
13 - 13.09.21 - 09:52
Спасибо всем. Победил.

(6) Невнимательно прочитал сначала.

В итоге так и сделал. Запросом получил дубли, потом УдалитьРегистрациюИзменений() и ЗарегистрироватьИзменения().
Передавал наборы с отбором по регистратору.
   kdenis
 
14 - 13.09.21 - 09:56
(3) Смотрелка есть, но пользоваться ей для анализа регистров неудобно: раскрывается список в котором 300 000 строк "Набор записей". Чтобы найти нужную запись, надо раскрывать каждую строку.
   TormozIT
 
15 - 13.09.21 - 10:49
Мощная смотрелка и изменялка регистрации на узлах есть в ИР. А в старых конфах на обычных формах вообще грех - не использовать ИР.
http://devtool1c.ucoz.ru/index/redaktor_izmenenij_na_uzle/0-30

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.