Цитата:
Сообщение от
Qaz Qwerty
Vallys,
1. в таблице UtilIdElements есть записи с 0 ID и разными Name, так что от пары ID-Name наверное не получится отказаться.
2. Parent действительно кажется не нужен, потому что все типы элементов, которые имеют родителя не имеют свойства SecurityKey. Спасибо что подсказали, если добавить условие ParentID = 0, то выборка действительно сокращается.
3,4 Насчет слоя... Не понятно, я же выбираю запись с любого слоя где элемент присутствует, мне слой не важен - лишь бы выбрать все элементы. Наверное что-то не догоняю, легко допускаю.
5. может быть.
Спасибо!
Извините, что не сразу ответил...
1. Посмотрел в UtilIdElements, увидел записи с Id == 0 (например, у элементов MenuItem) и задумался... Ведь действительно элементы MenuItem якобы не имеют Id. Вообщем с Id не так все просто. Критерий Id == 0 лучше не использовать в выражении where. Например, запрос
X++:
select UtilIdElements where UtilIdElements.Id == 0
и его вариации (без использования критерия по name) никогда записей не возвращают. Если фильтровать еще и по name, то все в порядке. Подозреваю что фильтрация по Id в данном случае происходит уже на другом уровне, нежели по Name. В вашем случае добавление к Name еще и Id ничего не поменяло. Думаю, что в общем случае лучше избегать фильтрацию по Id.
3,4. Я имел в виду, что при
X++:
treenode = xUtilIDElements::getNode(utils1);
вы получаете элемент AOT на неизвестном слое. Если это, например, sys, а на слое dis этот элемент имеет другой ключ безопасности, то в результате вы получите "неправильный" ключ с более низкого слоя sys.