Воскресенье, 28.04.2024, 00:44
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Основной » Проблемные ситуации » 3.66 Поиск дублей и замена ссылок (Обработка ошибок типа "Зацикливания уровней")
3.66 Поиск дублей и замена ссылок
avmlvmДата: Понедельник, 30.05.2016, 09:30 | Сообщение # 1
Лейтенант
Группа: Проверенные
Сообщений: 45
Репутация: 5
Статус: Оффлайн
При выполнении обработки "Поиск дублей и замена ссылок" иногда возникают ошибки типа "не уникальность записей регистра" (после чего обработка просто удаляет эти неуникальные записи), либо "зацикливание уровней" (после чего полученный элемент справочника становится недоступен для редактирования)


На мой взгляд, более корректно, если подобные операции шли бы в транзакции и при подобных ошибках после выдачи диагностики шел бы откат транзакции (зачем вносить явно ошибочные действия в наши данные?)

Согласны?
Прикрепления: 1516658.jpg (73.5 Kb)
 
tormozitДата: Вторник, 31.05.2016, 02:15 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6179
Репутация: 156
Статус: Оффлайн
Думаю, все же нужно сначала описать конкретные примеры.
Неуникальные записи подчиненных регистров сведений удаляются запланировано.
Про зацикливание уровней ошибка, если я верно помню, не ловится исключением. Опиши конкретную ситуацию для оценки вероятности ее повторения.
 
avmlvmДата: Вторник, 31.05.2016, 09:50 | Сообщение # 3
Лейтенант
Группа: Проверенные
Сообщений: 45
Репутация: 5
Статус: Оффлайн
Цитата tormozit ()
Опиши конкретную ситуацию для оценки вероятности ее повторения.
Так я вроде описал :-)
"Типовой" ЗУП 2.5 в котором (ну так получилось исторически) полный бардак в Справочнике ПодразделенияОрганизаций (хотя не только в нём), т.е. есть куча "двойников" в элементах справочников подразделения (причем часть сотрудников числится в одном "близнеце", а часть в другом). Причем есть ещё и "вложенность", ну типа в филеале есть подразделение "Руководство", которому подчинёно подразделение "Руководство".
Итак, имеем элементы справочника Руководство_001, у которого в качестве родителя есть элемент справочника Руководство_002
Запускаем твою обработку (кстати, классная обработка и большое тебе за это спасибо) чтобы заменить ненужное Руководство на "единое и правильное". К сожалению получаем, что у элемента Руководство он сам у себя является родителем.
И конфа начинает сходить с ума, например при записи элемента справочника  Подразделение_НьюВасюки, влетает в бесконечный цикл в функции

// Возвращает выборку со значениями реквизитов переданной ссылки
//
Функция ПолучитьЗначенияРеквизитов(Ссылка, ИменаРеквизитов) Экспорт

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| " + ИменаРеквизитов + "
|ИЗ
| " + Ссылка.Метаданные().ПолноеИмя() + " КАК Таблица
|ГДЕ
| Таблица.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);

Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Результат = Новый Структура(ИменаРеквизитов);
ЗаполнитьЗначенияСвойств(Результат, Выборка);

Возврат Результат;

КонецФункции

Где в качестве ссылки идёт наш кривой элемент (хотя мы и пишем совсем иную сущность), а ИмяРеквизитов - "Родитель".

Короче, моё предложение - если есть явная ошибка при замене (и программа это "знает"), то делать откат транзакции и не пугать бедных программистов 1С :-)


Сообщение отредактировал avmlvm - Вторник, 31.05.2016, 09:52
 
tormozitДата: Воскресенье, 05.06.2016, 22:53 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 6179
Репутация: 156
Статус: Оффлайн
Спасибо за подробное описание. Из него понятно, что речь идет только о зацикливании уровней (родителей). В 3.67 реализовано предотвращение этой проблемы.
 
avmlvmДата: Среда, 08.06.2016, 13:44 | Сообщение # 5
Лейтенант
Группа: Проверенные
Сообщений: 45
Репутация: 5
Статус: Оффлайн
Цитата tormozit ()
В 3.67 реализовано предотвращение этой проблемы.
Проблема решена не полностью :-)

Итак... Имею справочник "Подразделения организаций"
Подразделение "Руководство 1" подчинено элементу "Основное подразделение" (выбираю его "правильным элементом")
Подразделение "Руководство 2" подчинено подразделению "Руководство 1" - связь "Потомок -> Родитель" (выбираю его неправильным элементом).
Пробую провести замену и получаю ошибку:

{Обработка.ирПоискДублейИЗаменаСсылок.МодульОбъекта(355)}: Поле объекта не обнаружено (Значение)
Родитель = КлючИЗначение.Значение.Значение;

Прикрепления: 1136906.jpg (92.5 Kb) · 3805288.jpg (125.3 Kb)


Сообщение отредактировал avmlvm - Среда, 08.06.2016, 13:46
 
avmlvmДата: Среда, 08.06.2016, 14:17 | Сообщение # 6
Лейтенант
Группа: Проверенные
Сообщений: 45
Репутация: 5
Статус: Оффлайн
убрал подчинение (элементы справочника теперь оба подчинены только "Основному подразделению", отношений "родитель" между собой у них нет") - ошибка та же

Прикрепления: 0055257.jpg (118.6 Kb)
 
tormozitДата: Среда, 08.06.2016, 23:25 | Сообщение # 7
Генералиссимус
Группа: Администраторы
Сообщений: 6179
Репутация: 156
Статус: Оффлайн
Ошибка понятна. Она проявляется только для иерархических таблиц при выключенном флажке "Изменять поля по связям параметров выбора". Исправим в следующей версии.
 
tormozitДата: Понедельник, 13.06.2016, 23:00 | Сообщение # 8
Генералиссимус
Группа: Администраторы
Сообщений: 6179
Репутация: 156
Статус: Оффлайн
Исправлено в 3.68
 
Форум » Основной » Проблемные ситуации » 3.66 Поиск дублей и замена ссылок (Обработка ошибок типа "Зацикливания уровней")
  • Страница 1 из 1
  • 1
Поиск: