Ошибка "Записи регистра сведений стали неуникальными"

1. XOCTEP 118 22.11.15 15:44 Сейчас в теме
Всем хорошего воскресенья!
Помогите советом, выполняю нетиповое обновление с 2.0.64.39 на 3.0.42.36.
Конфигурация подготовил, протестировал на тестовой базе. Сейчас обновляю рабочую и застрял на обновлении конфигурации базы данных.
Ругается на ошибку: "Записи регистра сведений стали неуникальными: УдалитьКонтактнаяИнформация" и не дает принять изменения.
Проверил регистр, действительно была одна неуникальная запись по физ. лицу с одинаковыми значениями измерений (Объект, Вид). Удалил ее. Ругается снова.
Для проверки использовал самописную обработку, код такой:
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	КонтактнаяИнформация.Объект,
	|	КонтактнаяИнформация.Вид
	|ИЗ
	|	РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация";
	ТЗ = Запрос.Выполнить().Выгрузить();
	ВсегоЗаписей = ТЗ.Количество();
	
	Сч = 0;
	Индикатор = ЭлементыФормы.ИндикаторУникальность;
	Индикатор.МинимальноеЗначение 	= 1;
	Индикатор.МаксимальноеЗначение 	= ВсегоЗаписей;
	Индикатор.ОтображатьПроценты 	= Истина;
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Сч = Сч + 1;
		Индикатор.Значение = Сч;
		
		Отбор = Новый Структура;
		Отбор.Вставить("Объект", Выборка.Объект);
		Отбор.Вставить("Вид", Выборка.Вид);
		Строки = ТЗ.НайтиСтроки(Отбор);
		
		Если Строки.Количество() <> 1 Тогда
			Сообщить("Найдена неуникальная запись: "+Выборка.Объект+" (тип: "+ТипЗнч(Выборка.Объект)+"); "+Выборка.Вид);
		КонецЕсли;
	КонецЦикла;
Показать


Уже не пойму в чем теперь проблема, ТИИ делал, не помогает.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3098 22.11.15 15:47 Сейчас в теме
(1) XOCTEP, если в этом регистре нет ничего нужного - просто грохни его перед обновлением. Если есть, то не стоит его накатывать. По всей видимости изменился тип данных одного из измерений. Вообще, с учетом того, что регистр теперь называется "УдалитьКонтактнаяИнформация", я бы не стал его жалеть и просто сделал бы так:
РегистрыСведений.УдалитьКонтактнаяИнформация.СоздатьНаборЗаписей().Записать();


Ну или так:
Код
TRUNCATE TABLE _InfoRegXXXXX
GO
Показать полностью
3. TMV 14 22.11.15 15:53 Сейчас в теме
(2) starik-2005, ага, а заодно похерить всю контактную инфу по контрагентам и пр.
4. starik-2005 3098 22.11.15 16:14 Сейчас в теме
(3) TMV, ну с учетом того, что она уже давно в табличных частях справочников - точняк, похерить к чертовой бабушке!!! )))
5. TMV 14 23.11.15 10:23 Сейчас в теме
(4) starik-2005, тут как раз таки ТС и хочет перейти на 3ю редакцию - при обновлении КИ из регистра перенесется в ТЧ. А вы предлагаете ее похерить - очень умно.
6. XOCTEP 118 23.11.15 10:32 Сейчас в теме
(4) starik-2005, откуда им взяться в табличных частях, если конфигурация ИБ еще не обновлена?
Если очистить весь регистр сведений, то удалится вся контактная информация и в ТЧ уже не перенесется.

Проверял типы измерений, полностью идентичны, т.к. это регистр из 2.0, а учитывая, что в 3.0 он не используется, то и смысла разработчикам менять типы измерений нет никакого.
7. DrSender 82 26.02.16 20:15 Сейчас в теме
Делал похожее обновление с 2.0.64.39 на 3.0.42.36. Была та же самая ситуация , но уже с двумя регистрами:
КонтактнаяИнформация , затем при следующей попытке обновления - уже СтрахлвыеВзносыСкидкиКДоходам (Скидки к доходам при исчислении страховых взносов).

Можно решить следующим образом:

-Выгрузить оба регистра из начальной версии базы (обработка Обмен данными XML82), предварительно переименовать регистр КонтактнаяИнформация в УдалитьКонтактнаяИнформация или заменить имя регистра в файле выгрузки.

-Очистить оба регистра обработкой Корректировка регистров сведений.

-Обновить инф. базу, предварительно поставив заглушку в конфигурации (Возврат Ложь) - Функция НеобходимоОбновлениеИнформационнойБазы() - чтобы база не обновилась.

-Перезапустить базу под толстым клиентом, загрузить оба регистра (обработка Обмен данными XML82).

-Перезапустить базу в стандартном режиме, удалив предварительно заглушку - обновление будет продолжено, отработает процедура ПереносКИПриОбновленииС20() - Общий модуль ОбновлениеСПредыдущейРедакции.

Проверить результат можно по табличной части Контактная информация в справочнике Организации.
8. ewqewqewq 02.03.16 15:42 Сейчас в теме
А что мешает поэтапно обновлять. Обновлятор в помощь.
9. DrSender 82 15.03.16 15:51 Сейчас в теме
Так и делал -поэтапно, через рекомендованную версию перехода с 2 на 3.
Проблема в том, что ошибка проявляется только при обновлении информационной базы и значит не увидеть, какие записи дублируются. В обновленной базе в регистрах вообще никаких записей не появилось.
Демо-версия кстати идеально обновляется, а а база с реальными данными плюс доработки совсем иначе.

Сейчас сделал иначе - добавил в модуль обычного приложения код:

Процедура ПриНачалеРаботыСистемы()

// СтандартныеПодсистемы
СтандартныеПодсистемыКлиент.ПриНачалеРаботыСистемы();
// Конец СтандартныеПодсистемы

ОткрытьФормуМодально("Обработка.ВыгрузкаЗагрузкаДанныхXML.Форма.Форма");
ОткрытьФормуМодально("Обработка.Запросник2_0.Форма.Форма");

КонецПроцедуры

В конфигурацию поместил обработку ВыгрузкаЗагрузкаДанныхXML, в самой обработке в модуле объекта вставил код-для исключения ошибки при запуске :

Процедура Инициализация() Экспорт

/// Временная заглушка
Возврат;
///
Обработка нужна только для загрузки данных.

Теперь при запуске в обычном режиме можем предварительно подгрузить данные, далее прерываем программу и запускаем в режиме управляемого приложения.
10. Baiji 16.10.18 12:52 Сейчас в теме
Перед обновлением, переименуйте в 2.0:
РС СтраховыеВзносыСкидкиКДоходам > УдалитьСтраховыеВзносыСкидкиКДоходам
Справочник ВидыКонтактнойИнформации > УдалитьВидыКонтактнойИнформации

И всё пройдет. Не верно сопоставляет объекты.
Оставьте свое сообщение

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