Ошибка "Записи регистра сведений стали неуникальными"
Всем хорошего воскресенья!
Помогите советом, выполняю нетиповое обновление с 2.0.64.39 на 3.0.42.36.
Конфигурация подготовил, протестировал на тестовой базе. Сейчас обновляю рабочую и застрял на обновлении конфигурации базы данных.
Ругается на ошибку: "Записи регистра сведений стали неуникальными: УдалитьКонтактнаяИнформация" и не дает принять изменения.
Проверил регистр, действительно была одна неуникальная запись по физ. лицу с одинаковыми значениями измерений (Объект, Вид). Удалил ее. Ругается снова.
Для проверки использовал самописную обработку, код такой:
Уже не пойму в чем теперь проблема, ТИИ делал, не помогает.
Помогите советом, выполняю нетиповое обновление с 2.0.64.39 на 3.0.42.36.
Конфигурация подготовил, протестировал на тестовой базе. Сейчас обновляю рабочую и застрял на обновлении конфигурации базы данных.
Ругается на ошибку: "Записи регистра сведений стали неуникальными: УдалитьКонтактнаяИнформация" и не дает принять изменения.
Проверил регистр, действительно была одна неуникальная запись по физ. лицу с одинаковыми значениями измерений (Объект, Вид). Удалил ее. Ругается снова.
Для проверки использовал самописную обработку, код такой:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КонтактнаяИнформация.Объект,
| КонтактнаяИнформация.Вид
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация";
ТЗ = Запрос.Выполнить().Выгрузить();
ВсегоЗаписей = ТЗ.Количество();
Сч = 0;
Индикатор = ЭлементыФормы.ИндикаторУникальность;
Индикатор.МинимальноеЗначение = 1;
Индикатор.МаксимальноеЗначение = ВсегоЗаписей;
Индикатор.ОтображатьПроценты = Истина;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сч = Сч + 1;
Индикатор.Значение = Сч;
Отбор = Новый Структура;
Отбор.Вставить("Объект", Выборка.Объект);
Отбор.Вставить("Вид", Выборка.Вид);
Строки = ТЗ.НайтиСтроки(Отбор);
Если Строки.Количество() <> 1 Тогда
Сообщить("Найдена неуникальная запись: "+Выборка.Объект+" (тип: "+ТипЗнч(Выборка.Объект)+"); "+Выборка.Вид);
КонецЕсли;
КонецЦикла;
ПоказатьУже не пойму в чем теперь проблема, ТИИ делал, не помогает.
По теме из базы знаний
- Подсистема "Инструменты разработчика" v7.13.2
- Ошибка "Записи регистра сведений стали неуникальными"
- Исправление ошибки "Записи регистра сведений стали не уникальными"
- Ошибка при обновлении: Записи регистра сведений стали неуникальными: Двоичные данные файлов
- Обновление нетиповой конфигурации с приведением к типовой и выносом всех доработок в расширение. Часть/Способ №1
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) XOCTEP, если в этом регистре нет ничего нужного - просто грохни его перед обновлением. Если есть, то не стоит его накатывать. По всей видимости изменился тип данных одного из измерений. Вообще, с учетом того, что регистр теперь называется "УдалитьКонтактнаяИнформация", я бы не стал его жалеть и просто сделал бы так:
Ну или так:
РегистрыСведений.УдалитьКонтактнаяИнформация.СоздатьНаборЗаписей().Записать();
Ну или так:
Код |
---|
TRUNCATE TABLE _InfoRegXXXXX
GO Показать полностью |
(4) starik-2005, откуда им взяться в табличных частях, если конфигурация ИБ еще не обновлена?
Если очистить весь регистр сведений, то удалится вся контактная информация и в ТЧ уже не перенесется.
Проверял типы измерений, полностью идентичны, т.к. это регистр из 2.0, а учитывая, что в 3.0 он не используется, то и смысла разработчикам менять типы измерений нет никакого.
Если очистить весь регистр сведений, то удалится вся контактная информация и в ТЧ уже не перенесется.
Проверял типы измерений, полностью идентичны, т.к. это регистр из 2.0, а учитывая, что в 3.0 он не используется, то и смысла разработчикам менять типы измерений нет никакого.
Делал похожее обновление с 2.0.64.39 на 3.0.42.36. Была та же самая ситуация , но уже с двумя регистрами:
КонтактнаяИнформация , затем при следующей попытке обновления - уже СтрахлвыеВзносыСкидкиКДоходам (Скидки к доходам при исчислении страховых взносов).
Можно решить следующим образом:
-Выгрузить оба регистра из начальной версии базы (обработка Обмен данными XML82), предварительно переименовать регистр КонтактнаяИнформация в УдалитьКонтактнаяИнформация или заменить имя регистра в файле выгрузки.
-Очистить оба регистра обработкой Корректировка регистров сведений.
-Обновить инф. базу, предварительно поставив заглушку в конфигурации (Возврат Ложь) - Функция НеобходимоОбновлениеИнформационнойБазы() - чтобы база не обновилась.
-Перезапустить базу под толстым клиентом, загрузить оба регистра (обработка Обмен данными XML82).
-Перезапустить базу в стандартном режиме, удалив предварительно заглушку - обновление будет продолжено, отработает процедура ПереносКИПриОбновленииС20() - Общий модуль ОбновлениеСПредыдущейРедакции.
Проверить результат можно по табличной части Контактная информация в справочнике Организации.
КонтактнаяИнформация , затем при следующей попытке обновления - уже СтрахлвыеВзносыСкидкиКДоходам (Скидки к доходам при исчислении страховых взносов).
Можно решить следующим образом:
-Выгрузить оба регистра из начальной версии базы (обработка Обмен данными XML82), предварительно переименовать регистр КонтактнаяИнформация в УдалитьКонтактнаяИнформация или заменить имя регистра в файле выгрузки.
-Очистить оба регистра обработкой Корректировка регистров сведений.
-Обновить инф. базу, предварительно поставив заглушку в конфигурации (Возврат Ложь) - Функция НеобходимоОбновлениеИнформационнойБазы() - чтобы база не обновилась.
-Перезапустить базу под толстым клиентом, загрузить оба регистра (обработка Обмен данными XML82).
-Перезапустить базу в стандартном режиме, удалив предварительно заглушку - обновление будет продолжено, отработает процедура ПереносКИПриОбновленииС20() - Общий модуль ОбновлениеСПредыдущейРедакции.
Проверить результат можно по табличной части Контактная информация в справочнике Организации.
Так и делал -поэтапно, через рекомендованную версию перехода с 2 на 3.
Проблема в том, что ошибка проявляется только при обновлении информационной базы и значит не увидеть, какие записи дублируются. В обновленной базе в регистрах вообще никаких записей не появилось.
Демо-версия кстати идеально обновляется, а а база с реальными данными плюс доработки совсем иначе.
Сейчас сделал иначе - добавил в модуль обычного приложения код:
Процедура ПриНачалеРаботыСистемы()
// СтандартныеПодсистемы
СтандартныеПодсистемыКлиент.ПриНачалеРаботыСистемы();
// Конец СтандартныеПодсистемы
ОткрытьФормуМодально("Обработка.ВыгрузкаЗагрузкаДанныхXML.Форма.Форма");
ОткрытьФормуМодально("Обработка.Запросник2_0.Форма.Форма");
КонецПроцедуры
В конфигурацию поместил обработку ВыгрузкаЗагрузкаДанныхXML, в самой обработке в модуле объекта вставил код-для исключения ошибки при запуске :
Процедура Инициализация() Экспорт
/// Временная заглушка
Возврат;
///
Обработка нужна только для загрузки данных.
Теперь при запуске в обычном режиме можем предварительно подгрузить данные, далее прерываем программу и запускаем в режиме управляемого приложения.
Проблема в том, что ошибка проявляется только при обновлении информационной базы и значит не увидеть, какие записи дублируются. В обновленной базе в регистрах вообще никаких записей не появилось.
Демо-версия кстати идеально обновляется, а а база с реальными данными плюс доработки совсем иначе.
Сейчас сделал иначе - добавил в модуль обычного приложения код:
Процедура ПриНачалеРаботыСистемы()
// СтандартныеПодсистемы
СтандартныеПодсистемыКлиент.ПриНачалеРаботыСистемы();
// Конец СтандартныеПодсистемы
ОткрытьФормуМодально("Обработка.ВыгрузкаЗагрузкаДанныхXML.Форма.Форма");
ОткрытьФормуМодально("Обработка.Запросник2_0.Форма.Форма");
КонецПроцедуры
В конфигурацию поместил обработку ВыгрузкаЗагрузкаДанныхXML, в самой обработке в модуле объекта вставил код-для исключения ошибки при запуске :
Процедура Инициализация() Экспорт
/// Временная заглушка
Возврат;
///
Обработка нужна только для загрузки данных.
Теперь при запуске в обычном режиме можем предварительно подгрузить данные, далее прерываем программу и запускаем в режиме управляемого приложения.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот