Ошибка при обмене РИБ. УТ 11.4

1. serezhka87 68 15.02.20 15:47 Сейчас в теме +10 $m
Имеется РИБ. При обмене в одной из периферийных баз появилась ошибка при загрузке данных из центральной базы:
Ошибка чтения файла сообщения обмена: {Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(200)}: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка при попытке вставки записи с неуникальным значением ссылки.
таблица AccumRg17202.
Посмотрел что это регистра накоплений ТоварыНаСкладах. Попробовал воспользоваться инструкцией https://infostart.ru/public/167386/ и сделал запрос на поиск дублей в этом регистр, запрос дублей не показывает.
Тестировал базу, Кэш удалял. Подскажите пожалуйста, что с этой бедой можно сделать?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user856012 13 15.02.20 15:58 Сейчас в теме
(1)
Попробовал воспользоваться инструкцией https://infostart.ru/public/167386/ и сделал запрос на поиск дублей в этом регистр, запрос дублей не показывает.
Сейчас дублей в регистре нет, но при попытке обмена дубль возникает, поэтому и ошибка.

Откуда берется дубль? Надо в отладчике ставить точку останова на строку 200 и смотреть - что именно в этой строке вызывает ошибку, какая запись файла обмена обрабатывается?

По результатам думать дальше.
4. wau8824ru 23 16.02.20 11:26 Сейчас в теме
(1)
Ошибка при попытке вставки записи с неуникальным значением ссылки.

Можно еще прикрутить в модуле РН подобное
Процедура ПередЗаписью(Отказ, Замещение)
	
	Если ТипЗнч(ЭтотОбъект.Отбор.Регистратор.Значение) = Тип("ДокументСсылка.ПлатежноеПоручениеВходящее") Тогда
		Для Каждого СтрЗаписи Из ЭтотОбъект Цикл
			Если СтрНайти(Строка(СтрЗаписи.Сделка), "<Объект не найден>") <> 0 Тогда
				СтрЗаписи.Сделка = Документы.ЗаказПокупателя.ПустаяСсылка();// Или Неопределено;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры
Показать

Неуникальной ссылка стала после удаления??? насколько я понимаю. ТиИ с очищением поможет, а данный код в этом РН перед записью во время обмена не будет создавать такие записи.
5. wau8824ru 23 16.02.20 11:34 Сейчас в теме
(1)
сделал запрос на поиск дублей в этом регистр, запрос дублей не показывает

А поиск через список записей РН
"<Объект не найден>"

находит что-нибудь???
6. AlexandrSmith 69 16.02.20 15:20 Сейчас в теме
(1) Все советы интересные. Но я думаю, решение такое:
0) Создать тестовую базу на SQL Server
1) Включить инструменты разработчика, выписать все поля и названия на SQL.
2) Зайти в SQL Server отключить индексы у таблицы AccumRg17202.
3) Провести обмен.
4) Включить индексы будет ошибка по конкретной записи. ИЛИ, создать запрос по ключевым полям (записанным раннее 1)*) и выявить задвоение.
5) В инструментах разработчика разобраться по каким значениям ключевых полей вышла ошибка.
6) Ссылки будут на указателями на справочники, документы и т.д. В инструментах разработчика из можно расшифровать и получить полное представление о строках вызвавших проблему.

Проблему точно можно решить этим способом, вопрос в том насколько вы грамотны в вопросах SQL Server. Я точно именно так решал этот вопрос.
Но правильное решение было бы в том, что бы установить конкретную запись отладкой поискав по коду. Для этого нужно включить отладку в режиме фонового задания.
7. AlexandrSmith 69 16.02.20 15:24 Сейчас в теме
(1)Отключение индексов
https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/disable-indexes-and-constraints?view=sql-server-ver15
Отключение индексов и ограничений
В этом разделе описывается отключение индекса или ограничений в SQL Server 2019 (15.x) с помощью SQL Server Management Studio или Transact-SQL. Отключение индексов предотвращает доступ пользователя к индексам в случае использования кластеризованных индексов к данным базовой таблицы.
Отключение индексов советую делать при отсутствии в базе пользователей и с отключенными фоновыми заданиями.
Индексы можно отключить без запросов SQL Server, буквально в режиме менеджера SQL Server. Я бы посоветовал сгенерировать сначала файлы создания индексов потом их просто удалить, а далее уже после установления задвоений из обратно попробовать поставить и выявить ошибку. Способ точно рабочий и для меня, как для человека постоянно работающего с SQL Server задача ваша на 20 минут, у вас возможно уйдет часа три с изучением материала и установкой SQL Server.
8. AlexandrSmith 69 16.02.20 15:32 Сейчас в теме
(1) 1C не приветствует такие способы, но они являются невероятно действенными и простыми, главное руку набить. Ничего сложного в этом способе нет, он проще чем пытаться запустить debag фонового задания и отслеживать все запросы при обмене. Поэтому советую изучить, тем более вам необходимо будет получать сертификат Эксперта когда-нибудь.
3. sapervodichka 6812 15.02.20 18:31 Сейчас в теме
Пробовали изначально стандартными методами, я имею ввиду сделать в конфигураторе Источника и в конфигураторе Приемника тестирование исправление (Установите все флажки и опцию "При наличиии ссылок на несуществующие объекты" Очищать ссылки = Да) Затем повторно выгрузить данные из Источника и попробовать загрузить в Приемник. Если же у вас идет с обменом еще и обновление конфиуграции, то можно снять блокировку Премника, загрузить в него конфигурацию обновления, затем поставить на замочек как подчиненный узел, после чего попробовать еще раз загрузить сообщение (https://infostart.ru/public/706733/)
9. hamsar 15 17.02.20 15:16 Сейчас в теме
Добавьте расширение, которое игнорирует при чтении запись в этот регистр, затем обменяйтесь с цб, затем выгрузите записи регистра через консоль регистрации с отбором по нужном складу
10. KVIKS 402 17.02.20 17:21 Сейчас в теме
Можно попробовать сбросить регистрацию данных этого регистра в переферии, обменяться в обе стороны, потом перепровести документы в переферии и обменяться снова. Помогает - главное не ворочать большие периоды, к примеру данные за месяц я бы так провернул, потому что легко восстановить если что, данные за больший период уже бы не стал.
Оставьте свое сообщение

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