Как обычно обновлял пачку баз 1С и тут выскочила такая ошибка
Далее сказ о том, как я ее решал
В подробностях вот такая портянка
Ошибка при вызове метода контекста (Записать){ОбщийМодуль.ЗарплатаКадрыСобытия.Модуль(544)}:ВызватьИсключение ТекстСообщения{ОбщийМодуль.ОбновлениеИнформационнойБазы.Модуль(78)}:Объект.Записать();{Справочник.ПричиныУвольненияПФР.МодульМенеджера(77)}:ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ОбъектСправочника);{(1)}:Справочники.ПричиныУвольненияПФР.НачальноеЗаполнение(){ОбщийМодуль.ОбщегоНазначения.Модуль(5962)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(9399)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(Обработчик.Процедура, ПараметрыОбработчика);{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(1546)}:ВыполнитьОбработчикОбновления(Обработчик, ПараметрыОбработчика, ДополнительныеПараметры);{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(2549)}:ИтерацияОбновления.ВыполненныеОбработчики = ВыполнитьИтерациюОбновления(ИтерацияОбновления, Параметры); // @skip-check query-in-loop - выполнение монопольных и оперативных обработчиков.{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(111)}:ВыполнитьДействияПриОбновленииИнформационнойБазы(ПараметрыОбновления, ДополнительныеПараметры);{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(2891)}:Результат = ВыполнитьОбновлениеИнформационнойБазы(ПараметрыОбновления);{(1)}:ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОбновлениеИнформационнойБазыВФоне(Параметры[0],Параметры[1]){ОбщийМодуль.ОбщегоНазначения.Модуль(5962)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";{ОбщийМодуль.ДлительныеОперации.Модуль(1692)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);{ОбщийМодуль.ДлительныеОперации.Модуль(1671)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ПараметрыВыполнения);[ОшибкаВоВремяВыполненияВстроенногоЯзыка]по причине:Ошибка при выполнении обработчика - 'ПередЗаписью'по причине:Уже существует причина увольнения (сфр) с таким значением поля Код (ч1с71тк)[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]
Решил глянуть на этот элемент. К сожалению окно обновления модальное, получить доступ к органам управления нельзя. Но можно открыть обработку.
Поэтому кинул самый простой вариант - реквизит с нужным типом ( а можно и все, чтобы выбрать при ошибке на другой справочник
Открыл обработку в базе. И действительно есть дубли:
Но это было плохой идеей, так как там много дублей.
Тогда я решил проверить, а были ли дубли раньше? Развернул базу из бэкапа:
Оказывается очень много дублей, поэтому воспользуемся стандартной обработкой удаления дублей
Основания увольнения также полон дублей. Но здесь не надо доверяться программе в выборе метода поиска дублей, стоит сделать так:
Добрый день, подскажите: вот этот пункт - "воспользуемся стандартной обработкой удаления дублей" вы делали в какой момент?
ОтветитьУдалитьОткатились на предыдущий релиз, удалили дубли, потом обновлялись?
Прямо перед указанной Вами цитатой идет предложение "Тогда я решил проверить, а были ли дубли раньше? Развернул базу из бэкапа:".
УдалитьА по сути - да, восстановил из бэкапа, выполнил необходимые процедуры и провел обновление