Цитата tormozit (
)
Опиши конкретную ситуацию для оценки вероятности ее повторения.
Так я вроде описал :-)
"Типовой" ЗУП 2.5 в котором (ну так получилось исторически) полный бардак в Справочнике ПодразделенияОрганизаций (хотя не только в нём), т.е. есть куча "двойников" в элементах справочников подразделения (причем часть сотрудников числится в одном "близнеце", а часть в другом). Причем есть ещё и "вложенность", ну типа в филеале есть подразделение "Руководство", которому подчинёно подразделение "Руководство".
Итак, имеем элементы справочника Руководство_001, у которого в качестве родителя есть элемент справочника Руководство_002
Запускаем твою обработку (кстати, классная обработка и большое тебе за это спасибо) чтобы заменить ненужное Руководство на "единое и правильное". К сожалению получаем, что у элемента Руководство он сам у себя является родителем.
И конфа начинает сходить с ума, например при записи элемента справочника Подразделение_НьюВасюки, влетает в бесконечный цикл в функции
// Возвращает выборку со значениями реквизитов переданной ссылки
//
Функция ПолучитьЗначенияРеквизитов(Ссылка, ИменаРеквизитов) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| " + ИменаРеквизитов + "
|ИЗ
| " + Ссылка.Метаданные().ПолноеИмя() + " КАК Таблица
|ГДЕ
| Таблица.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Результат = Новый Структура(ИменаРеквизитов);
ЗаполнитьЗначенияСвойств(Результат, Выборка);
Возврат Результат;
КонецФункции
Где в качестве ссылки идёт наш кривой элемент (хотя мы и пишем совсем иную сущность), а ИмяРеквизитов - "Родитель".
Короче, моё предложение - если есть явная ошибка при замене (и программа это "знает"), то делать откат транзакции и не пугать бедных программистов 1С :-)