Берегите родителей или что бывает, когда "Родитель" ушел в себя

Опубликовал Юрий Тимофеев (Tatitutu) в раздел Программирование - Практика программирования

Пропадают элементы , группы справочника, зависает приложение, а видимых ошибок нет.
Это не руководство к действию, а скорее наглядный пример "где копать"

Может конечно и [:|||||||||:] Wink

но поиском не нашел. Если есть удалю (мешаться не буду)

Знаю, что все знают - но напомню:

И так в иерархическом справочники есть элементы и группы справочника

где группа (или верхний уровень) выступает Родителем (родительская папка) для элементов содержащихся в этой папке

На примере : у нас три группы (Группа 1, Группа 2, Группа 3)

в каждой группе по несколько элементов (Элемент 1 Группы 1, Элемент 2 группы 1)

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

для Группы 1 родителем саму себя , т.е. Группа 1

(так делать НЕЛЬЗЯ и НЕ НУЖНО) , но если кто-то сделал знайте где искать

Запустим обработку Пример , выберем Группу 1 и нажмем Выполнить

смотрим Группа 1 "пропала" в дереве

закроем группу Группа 1 - вообще ничего нет ?!?!

"остались" только две группы Группа 2 и Группа 3

куда делась Группа 1 и все элементы которые были в ней ? Удалили ? Нет

изменим режим просмотра "Иерархический список"

а так есть! и группа и элементы

(Примечание автора: а если программно запретить пользователю изменять

иерархию ? то можно "спрятать" половину номенклатуры.

но , большое но

если выбрать сейчас эту группу 1 из любого объекта конфигурации

программа зависнет наглухо

обработки работающие с этим справочником будет вести себя непривычно странно

в отладчике - тоже будут "чудеса" приводящие к зависанию приложения

Тестирирование и исправление ИБ... - непомогает :(

поможет наверное только проверка справочника

на условие

Если Элемент.ЭтоГруппа()=1 Тогда

       Элемент.Родитель= Элемент.ТекущийЭлемент();

КонецЕсли;

 

На платформе 8.2 

эту ситуацию предусмотрели

при попытки присвоить родителем самого себя

(программно или интерактивно)

получите предупреждение.

 

Во вложение MD ник с примером

в нем 1 справочник и 1 обработка (можно не скачивать и так все понятно из рисунков)

происходит "зацикливание" и все ... полный аут.

Но вы то теперь, знаете где собака порылась (с)

Скачать файлы

Наименование Файл Версия Размер
1Cv7.MD
.MD 127,50Kb
14.02.12
15
.MD 127,50Kb 15 Скачать

См. также

Комментарии
1. Serj (Serj1C) 461 25.05.11 13:39 Сейчас в теме
Зацикливание бывает явное (сам на себя) или неявное (через один или несколько элементов).
Тоже втыкался с этим http://infostart.ru/public/57277/
И в восьмерке раньше не было такого сообщения.
2. Lara.Builova 25.05.11 13:59 Сейчас в теме
(0) и (1) Уникальный у вас опыт, я не встречалась с такими траблами. Спасибо, буду иметь ввиду.
3. Сергей Рудаков (fishca) 1044 25.05.11 14:03 Сейчас в теме
Век живи, век учись, дураком помрешь :) Спасибо!
4. Lara.Builova 25.05.11 14:07 Сейчас в теме
(3) И это при моем опыте в 11 лет! Я таких извратов повидала от пользователей и студентов - админов - огого!
5. Сергей Рудаков (fishca) 1044 25.05.11 14:12 Сейчас в теме
(4) это еще раз подтверждает пословицу:
Век живи, век учись, дураком помрешь

я правда с таким баловался...
еще очень неплохой прикол был в восьмерке на ранних релизах, когда создавалось более 256 реквизитов в документе или справочнике и при этом не создавалась в ручную форма объекта. При попытке открытия элемента объекта восьмера вешалась намертво при генерации такой формы.
6. Александр Рытов (Арчибальд) 2652 26.05.11 09:29 Сейчас в теме
Будьте бдительны! Автор легко может вас запутать. И в результате плохому научить. :D
7. Lara.Builova 26.05.11 09:55 Сейчас в теме
(6) "Какие фаши доказательства?" (с)
8. Юрий Тимофеев (Tatitutu) 3571 26.05.11 10:05 Сейчас в теме
(6) Арчи - это же статья.Для обучения - путаю я в другом разделе.
А плохому "учу" - вернее как противостоять темной стороне Силы вот здесь
как один человек сегодня мне написал (прокомментировал свои действия)
не люблю, когда выкладывают инструкцию по созданию бомбы в домашних условиях.
Дебилов на свете много.
Кто-нибудь да создаст
9. Александр Рытов (Арчибальд) 2652 26.05.11 10:36 Сейчас в теме
(8) Да я же не критикую - смайлик поставил, плюсик поставил. Просто вспомнилось, как учитель написал на доске слово из трех букв и говорит: Дети, это очень плохое слово! никогда не пишите его на заборах!
10. Юрий Тимофеев (Tatitutu) 3571 26.05.11 10:42 Сейчас в теме
(9) Так и я же не осуждаю, а комментирую )))

Слово из трех букв
это о чем постоянно думают женщины
это то что берегут мужчины
это то что пишут дети на заборах

Ответ : Х МИР
11. Сергей (Che) Коцюра (CheBurator) 3371 26.05.11 14:29 Сейчас в теме
Описанный сабж обсуждался и известен. Где именно обсуждался и кем именно - навскидку не скажу.
лучше бы автор выложил отдельную обработку тестилку на даннывй сабж.
12. yuraskas Рупышев (yuraskas) 172 26.05.11 14:43 Сейчас в теме
Только хотел добавить. Неплохобы в обработке еще былобы сделать кнопочку "Проверить справочник". А так +.
13. Юрий Тимофеев (Tatitutu) 3571 27.05.11 12:31 Сейчас в теме
(11),(12) что не сделаешь - для уважаемых людей. Это же статья,
но идея хорошая, вот обработка (универсальная)
Проверка на заЦИКЛивание элементов (групп) справочников конфигурации