Отзовитесь... специалисты по WorkFlow

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

Собственно, заполнение осуществляется при помощи последовательного вызова функций f_RetriveForm и f_FormDataToArray в действии над переменными.
Например, по событию "После открытия окна задачи".
При передаче параметров в запрос нельзя использовать записи типа Объект.ID, надо создать числовую переменную и в нее этот самый Объект.ID записать.
Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Disillusioned ладно, спасибо конечно за ответ, хотелось бы конечно развернутый - но видно не судьба :wink: пошел к gali вместе будем об стенку биться :wink: :wink: :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

Disillusioned писал(а):выбираем пункт меню "Внедрить SQL SELECT"
Нет, только не это. Не надо "Внедрить SQL SELECT". Это не продвинуто и редактировать неудобно. давайте сразу учить хорошему :-) Надо перед f_retrieve... добавить функцию f_EmbeddedSQLSelect. Тогда и селекты разные могут быть по разным условиям.
"Лучше меньше, да лучше" (C)
Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

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

или будем дальше продолжать издеваться над админами Лоции :wink: :wink: :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

gali
Активный участник
Сообщения: 285
Зарегистрирован: 27 мар 2007, 07:43

Сообщение gali »

Как хорошо, у меня со дня на день появится похожая задача, а стена уже пробита :D
Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

да нет :wink: пока еще :wink: как видишь все разошлись куда то :wink: :wink: :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

В ближайшее время особенно помочь не смогу, начинается внедрение (так сказать выходим в люди).
Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Сообщение Юрий »

Александр писал(а):как по шагам создать и заполнить и увидеть на форме простенький двухмерный массив первые две колонки которого заполнены результатами запроса а в третьей лежат кнопки для операций по строкам???
Подробней - запрос динамический или статический? Есть ли параметры запроса?
Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Юрий спасибо что откликнулся - запрос допустим статический без аргументов
т.е. Select rName, rExt From чего то там Where Где то так
возвращает две колонки
мне нужно увидеть их на экране + добавить колонку с кнопками
только и всего вот такую простую вешь я и не могу сделать...
выручай :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Сообщение Юрий »

Создание встроенной формы:

1. В шаблоне работы создаем переменную типа строка массив.
Играет ли роль тип незнаю но массивом она должна быть обязательно.

2. Открываем форму задачи и добавляем туда эту переменную.
Далее по вкусу - открываем свойства этого поля в форме видим вкладку редактирование:
а) Способ отображения массива "В отдельном окне" - это значит что наше поле при нажатии на него будет открывать отдельную форму. Или можно воспользоваться функцией f_Open_FreeForm ( this , ' <FreeFormName> ' ) что-бы открыть ее.
б) Способ выравнивания внедренного массива - Не выравнивать - как растянешь поле так оно и будет изображенно на форме. Остальные пункты выравнивания думаю можно не рассматривать.

3. Открываем вкладку "Форма массива" Здесь нам нужно или нарисовать нужную нам форму, а потом используя три функции заполнить ее данными или внедрить select. Функции (f_EmbeddedSQLSelect ( this , ' <SQLSelect_Statement> ' , ' <ArgsList> ' , ' <FormVarName> ' ) - встраивает select в форму массива, затем f_RetrieveForm ( this , ' <VarArgsList> ' , ' <FormVarName> ' ) и если нам нужно работать с данными f_FormDataToArray ( this , ' <FormVarName> ' ))

4. В данном случае нас интересует встраиваемая форма так-как запрос статический. Выбираем пункт "Внедрить SQL select"
В открывшемся окне заносим наш select. Про аргументы заменяем в нашем селекте аргументы на :name и нажав кнопку аргументы заносим их. Для кнопки мы делаем текстовое поле 'Ok' as but

5.После того, как мы нажмем кнопку "Ок" Лоция заполнит форму автоматически и создаст массивы колонки в которых будут наши данные.

6. Затем делаем кнопку как на обыкновенной форме - задаем порядок обхода и меняем внешний вид. Затем привязываем к этой переменной действие которое надо выполнить.

7 Но не забываем вынолнить две функции после открытия окна задачи: f_RetrieveForm ( this , '' , ' forma ' ) - что-бы увидеть заполнение и f_FormDataToArray ( this , ' <FormVarName> ' ) что-бы можно было работать над значениями.

8. И наконец привязываем действие к нашей кнопке массиву
и с помощью функции f_GetCurrentRow ( this ) определяем - в какой строке нажата кнопка и работаем с массивами колонками.

Вопросы?
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

Юрий писал(а): 4. В данном случае нас интересует встраиваемая форма так-как запрос статический. Выбираем пункт "Внедрить SQL select"
В открывшемся окне заносим наш select. Про аргументы заменяем в нашем селекте аргументы на :name и нажав кнопку аргументы заносим их. Для кнопки мы делаем текстовое поле 'Ok' as but
Но я бы все-таки рекомендовал использовать f_EmbeddeSQLSelect. Впоследствии этим окажется реально проще управлять.
Юрий писал(а): 5.После того, как мы нажмем кнопку "Ок" Лоция заполнит форму автоматически и создаст массивы колонки в которых будут наши данные.
Все так, но в случае моей рекомендации переменные надо будет создать самому. Но это свосем просто...
Юрий писал(а): 7 Но не забываем вынолнить две функции после открытия окна задачи: f_RetrieveForm ( this , '' , ' forma ' ) - что-бы увидеть заполнение и f_FormDataToArray ( this , ' <FormVarName> ' ) что-бы можно было работать над значениями.
Дополню: не обязательно после открытия окна задачи, можно и по кнопке и по другим событиям.
Юрий писал(а): 8. И наконец привязываем действие к нашей кнопке массиву
и с помощью функции f_GetCurrentRow ( this ) определяем - в какой строке нажата кнопка и работаем с массивами колонками.
Есть один нюанс: f_GetCurrentRow ( this ) вернет правильное значение только в двух случаях: если сортировка не выполнялась или выполнялась в запросе. Если сортировка выполнялась в форме, то надо использовать f_GetNFormItem (f_GetSFormItem, f_GetDFormItem или f_GetDTFormItem), которая вернет результат из конкретной строки формы (а не из строки массива, лежащей в базе).

Кстати, в последней документации пользователя workflow поищи по контексту фразу "Рассмотрим поэтапно работу с внедренными SQL-запросами". Начиная с нее идет описание с примером.
"Лучше меньше, да лучше" (C)
Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

поразительно - но я сдвинулся с места-увидел массив на экране :wink:
а еще вопросик -как это выглядит физически, в смысле
1. мы сделали переменные типа массив - они типа лежат в БД? это таблицы?
2. мы запросом заполнили массив - где он в это время находится? (в момент создания) в оперативной памяти или в БД - если в БД то этож id не напасешся :wink: а если в оперативной памяти - то работать с ним нельзя?
нужно загнать массив в базу f_FormDataToArray? а когда я закончу работу этот массив останется в БД (для повторного использования) или самоуничтожится?

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

Массивы хранятся в таблице wf_map_vars_mail_arr.
Данные удаляются при удалении карты работы или при очистке массива f_ExcludeArrEl.
Переменные сохраняются в БД по кнопке ОК или Применить (ИМХО).
Если работа используется только как средство работы с табличными данными, то, соответственно, данные по массивам в БД не сохраняются (ИМХО).
Ах и с ними невозможно
И без них никак нельзя
Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

т.е. массивы (в моем случае - одноразовой работы с табличными данными) при создании все таки захватывают новые id?
wf_map_vars_mail_arr
(которые после удаления массива/работы просто остаются висеть мертвым грузом) или нет?

В Лоции мне сказали что работа функций f_RetrieveForm и f_FormDataToArray по работе с массивами идет только в оперативной памяти - или все таки я им не правильно задал вопроc? или может какие то другие функции массивов работают с записью в БД без участия пользователя? а эти пишут только во временные таблицы без использования основных id базы?
запутался короче :wink:

ps
в общем по жизни - все время напрягает то обстоятельство - что эти несчастные id рано или поздно закончатся, т.к. дыры после удаления записей остаются в счетчиках
Последний раз редактировалось Александр 14 дек 2007, 16:11, всего редактировалось 1 раз.

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

Если посмотреть на структуру данных wf_map_vars_mail_arr, то никаких собственных идентификаторов она не содержит.
В Лоции мне сказали что работа функций f_RetrieveForm и f_FormDataToArray идет только в оперативной памяти

Соответственно, можно убрать ИМХО из моего предыдущего сообщения.
Ах и с ними невозможно
И без них никак нельзя
Ответить