Не подскажете, кто знает...
Проблема такая-есть родительский объект, у него есть 10 дочерних разного типа
Нужно в форме действия в цикле выбрать все дочерние объекты определенных типов.
Сейчас это выглядит так - есть переменная объект с типом 'список' (автоматическая загрузка объекта) и получается (допустим 8 объектов из 10 удовлетворяют условию отбора)
1. Начало
-нажимаю на поле объект - открывается список выбора
-выбираю первый объект
-устанавливаю атрибут (этот объект больше не появится в списке)
-Update
-Goto(Начало)
т.е. в превых 7 циклах все время приходится открывать список выбранных объектов и что-то выбирать и только когда остается последний объект он выбирается автоматически.
А как сделать так чтобы в поле объект сразу попадал первый попавшийся объект (удовлетворяющий условию) и таким образом перебрать все объекты не используя окно выбора?
Юрий может вы подскажете, по идее нужен какй-то SQL запрос через f_ExecSQLSelect... единственное что-он возвращает только строку а нужно ID объекта
Как перебрать в форме действия все дочерние объекты?
- Александр
- Активный участник
- Сообщения: 1652
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Как перебрать в форме действия все дочерние объекты?
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
- Старик Крупский
- Активный участник
- Сообщения: 803
- Зарегистрирован: 27 июл 2006, 22:17
- Откуда: Москва
А это, кстати, очень просто. Лоция высылает по этому поводу пример. Перескажу своими словами: используем f_ExecSQLSelect и вытаскиваем потомка с максимальным (или минимальным) айдишником, но у которого нет данного атрибута или он не отвечает каким-либо условиям. Потом делаем объекту setbyid, устанавливаем атрибут и снова делаем запрос. если запрос вернул пустую строку (не помню null или ''), то выходим из цикла. Даже форма не нужна
"Лучше меньше, да лучше" (C)
- Anderyt
- Активный участник
- Сообщения: 777
- Зарегистрирован: 15 июл 2004, 13:15
- Используемое ПО: Lotsia PDM PLUS
- Откуда: Тюмень
- Контактная информация:
да, без сиквел-запроса перебор дочерних объектов (да и вообще, нескольких объектов) в действии будет очень неудобным.
надеюсь, еще к месту:
в Var_IDs записывается СТРОКА с ИД, потом их нужно перебирать в цикле (хотя вариант с мах (или min) гораздо изящнее) и использовать setbyid. приведенный запрос вытаскивает те объекты, которые входят в объект a_Object и у которых арибут с ИД 774303840200000 равен значению переменной var_author. а... тут еще по идее нужно добавить в условие отбора указание типа связи, чтобы попадали объекты, входящие по связи Дерево проектов. кажется... у нас модель данных не предполагает других связанных объектов, поэтому запрос работает нормально и без этого условия. я посмотрю после выходных, на всякий случай и дам знать
надеюсь, еще к месту:
Код: Выделить всё
Var_IDs = Set ( f_ExecSQLSelect_2('
select link_id
from lsdbo.tree_link_view
where
parent_id ='+ a_Object+ '
and link_id in
(select av.object_id
from lsdbo.value_string_view vs
, lsdbo.attrib_value_view av
where av.value_id = vs.id
and
av.attrib_id = 774303840200000
and
vs.value =~''+var_author+'~')','/','-') +'-' )
лучше день потерять, потом за пять минут долететь!