Ошибка при обновлении с релиза 3.0.43.214 на 3.0.43.241
БП 3.0.43.214 типовая на поддержке, платформа 8.3.6.2390, пробовали обновляться на платформе 8.3.7.1873.
Обновляю на 3.0.43.241. В конфигураторе все проходит отлично, но при первом запуске базы вылетает ошибка на 32% "Элемент с установленным признаком "ЭтотУзел" уже существует". Оказывается в плане обмена "Обмен сообщениями" две записи вместо одной. Программа не дает пометить запись на удаление, выводится та же ошибка. Не пойму, как появилась вторая запись и что теперь делать?
Обновляю на 3.0.43.241. В конфигураторе все проходит отлично, но при первом запуске базы вылетает ошибка на 32% "Элемент с установленным признаком "ЭтотУзел" уже существует". Оказывается в плане обмена "Обмен сообщениями" две записи вместо одной. Программа не дает пометить запись на удаление, выводится та же ошибка. Не пойму, как появилась вторая запись и что теперь делать?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Обработка называется - сама написала. ) Что там скидывать-то. Выборка по записям, первой записи присвоить ЭтотУзел = Ложь, прервать. И все. У меня на второй записи стоял признак предопределенности, поэтому я удалила первую. У вас может быть по другому. Поэтому лучше исходить из конкретной ситуации. Моя обработка не универсальна, она написана под конкретную ситуацию.
&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
ВыполнитьОбработкуНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьОбработкуНаСервере()
ВыборкаУзлов = ПланыОбмена.ОбменСообщениями.Выбрать();
Пока ВыборкаУзлов.Следующий() Цикл
Если ВыборкаУзлов.Ссылка<>ПланыОбмена.ОбменСообщениями.ЭтотУзел() Тогда
УзелОбъект = ВыборкаУзлов.ПолучитьОбъект();
УзелОбъект.ЭтотУзел = Ложь;
УзелОбъект.Записать();
Прервать;
КонецЕсли;
КонецЦикла;
Показать
БП версии 3.0.43.263. Выходит аналогичная ошибка. Вариант действий.
1) Сделал ТиИ с созданием ссылок.
2) После чего в предприятии в плане обмена "Обмен сообщениями" появился еще один план обмена. Но уже соответствующий этому узлу. Т.е. с зелененькой точкой.
3) Написал обработку почти аналогичную как выше.
Все лишние обработка удаляет, присваивает код и наименование нужному.
4) Обновляемся на нужную версию и все готово.
P.S.Собственно нашел эту тему когда искал ответ на вопрос: "А почему такое произошло?". Ответа так и нет. Если кто-то сможет объяснить буду очень признателен.
1) Сделал ТиИ с созданием ссылок.
2) После чего в предприятии в плане обмена "Обмен сообщениями" появился еще один план обмена. Но уже соответствующий этому узлу. Т.е. с зелененькой точкой.
3) Написал обработку почти аналогичную как выше.
&НаКлиенте
Процедура Удалить(Команда)
Удалить_Сервер();
КонецПроцедуры
&НаСервере
Процедура Удалить_Сервер()
ВыборкаУзлов = ПланыОбмена.ОбменСообщениями.Выбрать();
Пока ВыборкаУзлов.Следующий() Цикл
УзелОбъект = ВыборкаУзлов.ПолучитьОбъект();
Если ВыборкаУзлов.Ссылка <> ПланыОбмена.ОбменСообщениями.ЭтотУзел() Тогда
УзелОбъект.Удалить();
Иначе
УзелОбъект.УстановитьНовыйКод();
УзелОбъект.Наименование = "Предопределенный обмен";
Попытка
УзелОбъект.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьВсе лишние обработка удаляет, присваивает код и наименование нужному.
4) Обновляемся на нужную версию и все готово.
P.S.Собственно нашел эту тему когда искал ответ на вопрос: "А почему такое произошло?". Ответа так и нет. Если кто-то сможет объяснить буду очень признателен.
у меня наоборот слетел признак ЭтотУзел и при обновлении вываливалась ошибка "Ошибка при вызове метода УдалитьРегистрациюИзменений(Выборка.Узел)".
Создал новую обработку с кнопкой на форме, открыл обработку в момент когда вываливается ошибка, через Еще->Открыть внешнюю обработку, выполнил обработку и перезапустил обновление - ошибка ушла и обновление закончилось успешно.
Код обработки прилагаю:
Создал новую обработку с кнопкой на форме, открыл обработку в момент когда вываливается ошибка, через Еще->Открыть внешнюю обработку, выполнил обработку и перезапустил обновление - ошибка ушла и обновление закончилось успешно.
Код обработки прилагаю:
&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
ВыполнитьОбработкуНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьОбработкуНаСервере()
ПредопределенныйУзел = ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена("ОбновлениеИнформационнойБазы"); // здесь указываем имя плана обмена как оно задано в конфигураторе
ПредопределенныйУзелОб = ПредопределенныйУзел.ПолучитьОбъект();
ПредопределенныйУзелОб.ЭтотУзел = Истина;
ПредопределенныйУзелОб.Записать();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот