Некоторые картинки не загружаются из РФ и РК, используйте VPN.

суббота, 6 апреля 2024 г.

1СОшибка Уже существует причина увольнения (сфр) с таким значением поля Код (ч1с71тк)

 Как обычно обновлял пачку баз 1С и тут выскочила такая ошибка

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

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Уже существует причина увольнения (сфр) с таким значением поля Код (ч1с71тк)
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]

Решил глянуть на этот элемент. К сожалению окно обновления модальное, получить доступ к органам управления нельзя. Но можно открыть обработку.
Поэтому кинул самый простой вариант - реквизит с нужным типом ( а можно и все, чтобы выбрать при ошибке на другой справочник

Открыл обработку в базе. И действительно есть дубли:

Но это было плохой идеей, так как там много дублей.

Тогда я решил проверить, а были ли дубли раньше? Развернул базу из бэкапа:


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


Основания увольнения также полон дублей. Но здесь не надо доверяться программе в выборе метода поиска дублей, стоит сделать так:

И удаляем все это


В итоге все успешно обновилось. А вот откуда ошибка я знаю, данная база создавалась методом переноса части данных из старой при помощи универсальной выгрузки загрузки из XML.

2 комментария:

  1. Добрый день, подскажите: вот этот пункт - "воспользуемся стандартной обработкой удаления дублей" вы делали в какой момент?
    Откатились на предыдущий релиз, удалили дубли, потом обновлялись?

    ОтветитьУдалить
    Ответы
    1. Прямо перед указанной Вами цитатой идет предложение "Тогда я решил проверить, а были ли дубли раньше? Развернул базу из бэкапа:".

      А по сути - да, восстановил из бэкапа, выполнил необходимые процедуры и провел обновление

      Удалить