Страница 1 из 1

как работать с объектами в Workflow

Добавлено: 25 окт 2007, 11:37
Александр
написал сюда сначала-потому что не в курсе...
а скажите... я запускаю работу (один информационный диалог) и в нем мне нужно поработать с несколькими объектами id которых лежат в объекте по которому запущена работа
получается что к данным объектам и их атрибутам я могу добраться только своими запросами

или быть может есть человеческий подход как в Party - установить объект, прочитать его атрибут, установить его атрибут :roll:

я конечно понимаю, что все это не более чем те-же запросы, но работать то не в пример удобнее

или быть может есть какие-то функции под это дело?

Добавлено: 25 окт 2007, 11:50
Троянов
Александр, если речь идет о примерно такой ситуации:

Есть Объект-родитель, который в себе содержит N дочерних Объектов, действие выполняется с Объекта-родителя и нужно чтобы оно пробежалось по всем дочерним объектам.

То можно попробовать воспользоваться функцией LinkGetChild, в цикле уже делать все нужное.

Если они никак не связаны, то я не знаю :(

Добавлено: 25 окт 2007, 12:07
Александр
фактически прямые связи отсутствуют, главный объект просто содержит адреса других объектов - т.е. работаю только по прямой адресации (id)
Связи вообще - использую только для визуального представления отдельных проектов - на этом принципе и построена вся система

в принципе мне конечно без разницы своим запросом или запросом оформленным как функция - все дело в быстродействии с одной стороны и с удобства разработки/редактирования с другой
поскольку в данном диалоге мне нужно представить минимум 10 объектов с атрибутами (это порядка 30 переменных) и положить сверху около 5 массивов по 300 значений

вот сижу и думаю как же все это будет тормозить... :roll: на моменте инициализации

Добавлено: 25 окт 2007, 12:22
Троянов
SQL запросами можно все! :)

Добавлено: 25 окт 2007, 12:49
Александр
гениально... :wink: :wink: блин...

Добавлено: 25 окт 2007, 13:01
Троянов
Александр писал(а):гениально... :wink: :wink: блин...
все гениальное - просто!
:mrgreen:

Добавлено: 25 окт 2007, 13:34
Disillusioned
SQL-запросами изменять данные некрасиво.
Для добавления/изменения объектов/атрибутов в Workflow предусмотрена возможность вызова действий над объектами (в действие передаем ID и используем SetByID, если надо вернуть ID, заводим числовую переменную и используем obj_id=set(obj)).
Если надо получить число-код объекта-документа работы, в выражении указываем Объект.ID

Добавлено: 25 окт 2007, 13:40
Александр
т.е. подожди - речь идет только о инициализации кучи переменных Workflow значениями существующих объектов (изменения понятно - что через действия-нет вопросов? но чтение то зачем)
пременных просто очень много (я пока еще не все запросы написал) и мне кажется что с момента нажатия на кнопку и до момента инициализации диалога - вообще пройдет сек 5, вот и думаю где ускориться - до показа формы или после или все сразу не показывать а только по событию???

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

Добавлено: 25 окт 2007, 13:59
Disillusioned
Если разговор идет только о получении данных SQL-запросы вещь неплохая, но лично мне не нравится действия над переменными, набитые кодами атрибутов, иногда в них легко можно заблудиться.
При помощи действия над объектами, на мой взгляд, это реализовать проще. Что касается времени выборки данных, то в течении упомянутых тобою 5 секунд (а может не 5, а 2, здесь только опытным путем можно определить) пользователь будет лицезреть "Обработка действия" Загрузка данных..., что позволит ему настроится на плодотворную работу... :D
Под параметрами работы (которые сейчас передавать нельзя) я имел в ввиду некие флаги, позволяющие управлять логикой работы шаблона (например задать фильтр обрабатываемых объектов изделия: КД или ТД), сейчас я для этого использую документы работы (существует документ, значит КД, нет значит ТД).

Добавлено: 25 окт 2007, 14:11
Disillusioned
Если разговор идет только о получении данных SQL-запросы вещь неплохая, но лично мне не нравится действия над переменными, набитые кодами атрибутов, иногда в них легко можно заблудиться.
При помощи действия над объектами, на мой взгляд, это реализовать проще. Что касается времени выборки данных, то в течении упомянутых тобою 5 секунд (а может не 5, а 2, здесь только опытным путем можно определить) пользователь будет лицезреть "Обработка действия" Загрузка данных..., что позволит ему настроится на плодотворную работу... :D

Добавлено: 25 окт 2007, 21:06
Старик Крупский
Позвольте вклиниться. Насколько я понял, Александру может помочь вот что. Прицепляешь действие над объектом и ему на вход подаешь значение атрибута с ID требуемого объекта из атрибута. Собака именно здесь и порылась, т.к. этот ID не надо получать другим действием и сохранять в переменной. В документообороте на задаче добавляешь действие над объектами, в которое надо передать этот ID. Затем добавляешь строчку с переменной, в которую надо передать ID. А потом щелкаешь в левом поле и открываешь редактор выражений. Там внизу слева вкладка "Атрибуты". Выделяешь там в самом низу документ, справа отрисовывается дерево атрибутов. Щелкаешь два раза по нужному атрибуту и в верхнее поле возвращается что-то типа Объект.ID_траляля
ID_траляля - это название твоего атрибута. Т.о. дается указание передать на вход действия значение указанного атрибута.
Понимаешь о чем я? Не надо промежуточных сохранений.
А, вспомнил. Есть нюанс. Названия атрибутов не должны содержать недопустимые символы. Если у тебя есть атрибут с названием Масса (кг), то редактор выражений его выплюнет и не обработает. Поэтому лучше сразу переименовать какие-то атрибуты, например в Масса_кг. Точки и подчеркивания проходят. Да, и по-моему, если в текущей сессии добавлен новый атрибут, то нужно перевойти, чтобы он показался в дереве атрибутов.

Добавлено: 26 окт 2007, 08:06
Disillusioned
Есть еще один нюанс: конструкции типа Документ.Имя_атрибута работают только в том случае если объект в работе фигурирует как документ. К сожалению, документы и переменные обрабатываются не одинаково - если из действия мы возвращаем переменную типа число, то она сразу же становится доступна для использования в других действиях :D ; если возвращаем документ то его новое значение будет доступно только на следующей задаче :cry: .

Добавлено: 26 окт 2007, 09:31
Старик Крупский
Да, но можно вернуть ID документа в числовую переменную и делай с ней что хочешь...