Использование Выражения в Выражении над Выражением?
- Александр
- Активный участник
- Сообщения: 1652
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Использование Выражения в Выражении над Выражением?
Подскажите кто знает.
Исходная позиция - выбор одного объекта в разных шагах действия Party по атрибуту 'Atr1' и переменным 'a' 'b' из действия в выражении поиска
1. Выражение
Найти всех у кого атрибут Atr1 равен a -'Выражение = а' (Все понятно)
2. Выражение в выражении
Найти всех у кого атрибут Atr1 равен '55' -'Выражение = if(b=1,'55','AA')' (Тоже все ясно)
3. Выражение в выражении над выражением
Найти всех у кого 15 бит Atr1 равен 0 - 'Выражение =~???~ if(abs( Int (Atr1 /16384) - Int (Atr1 / (16384*2) )*2 )=0,0,1) Как это можно сделать средствами Лоции?? Что писать вместо Atr1?
Т.е. Как использовать в выражении поиска выражение использующее само значение атрибута по которому строится поиск? Я понимаю что именно это значение мы и используем (в фоне) Но есть ли какое то имя у этого значения - чтобы вставить его в функцию
Другими словами строится запрос по атрибуту, и выбирается все - если значение этого атрибута (системная переменная с текущим значеним атрибута) прошедшее через функцию равно допустим '0' Как добраться до этой системной переменной
Средсвами SQL по моему (не знаю) можно это сделать - а средствами Лоции??
Исходная позиция - выбор одного объекта в разных шагах действия Party по атрибуту 'Atr1' и переменным 'a' 'b' из действия в выражении поиска
1. Выражение
Найти всех у кого атрибут Atr1 равен a -'Выражение = а' (Все понятно)
2. Выражение в выражении
Найти всех у кого атрибут Atr1 равен '55' -'Выражение = if(b=1,'55','AA')' (Тоже все ясно)
3. Выражение в выражении над выражением
Найти всех у кого 15 бит Atr1 равен 0 - 'Выражение =~???~ if(abs( Int (Atr1 /16384) - Int (Atr1 / (16384*2) )*2 )=0,0,1) Как это можно сделать средствами Лоции?? Что писать вместо Atr1?
Т.е. Как использовать в выражении поиска выражение использующее само значение атрибута по которому строится поиск? Я понимаю что именно это значение мы и используем (в фоне) Но есть ли какое то имя у этого значения - чтобы вставить его в функцию
Другими словами строится запрос по атрибуту, и выбирается все - если значение этого атрибута (системная переменная с текущим значеним атрибута) прошедшее через функцию равно допустим '0' Как добраться до этой системной переменной
Средсвами SQL по моему (не знаю) можно это сделать - а средствами Лоции??
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
- Anderyt
- Активный участник
- Сообщения: 777
- Зарегистрирован: 15 июл 2004, 13:15
- Используемое ПО: Lotsia PDM PLUS
- Откуда: Тюмень
- Контактная информация:
хм... не хватило терпения о конца проверить, но пришла в голову такая мысль. а что если проверять, не больше ли значение атрибута чем сумма всех старших разрядов? ну или там как они называются.. вообщем, если всего 16 разрядов, а мы хотим проверить значение 12-го, то нужно сравнить атрибут с 2^15+2^14+2^13. если атрибут больше - то 12-й = 1, если меньше - то 12-й = 0... или не все так просто?
я уже забыл все детали, для меня выражение abs( Int (Atr1 /16384) - Int (Atr1 / (16384*2) )*2 ) - одна большая тайна...
я уже забыл все детали, для меня выражение abs( Int (Atr1 /16384) - Int (Atr1 / (16384*2) )*2 ) - одна большая тайна...
лучше день потерять, потом за пять минут долететь!
- Александр
- Активный участник
- Сообщения: 1652
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Понимаешь, все дело в том, как в выражение вставить значение атрибута?
>а мы хотим проверить значение 12-го, то нужно сравнить атрибут с 2^15+2^14+2^13.
Как сравнить? Где в условиях отбора объекта, и как вставить значение атрибута подлежащего сравнению?
Условия отбора/Атрибуты/Задание условия поиска объектов по атрибутам
(найти все объекты с 15 нулевым битом атрибута 'Информационный')
1. Тип - 'Атрибут'
2. Атрибут - 'Информационный'
3. Опер - '='
4. Значение (выражение) - 'if(abs( Int (Информационный /16384) - Int (Информационный / (16384*2) )*2 )=0,0,1)
Как в формулу засунуть атрибут Информационный по которому в то же время осуществляется отбор
P/S Формула простая
>а мы хотим проверить значение 12-го, то нужно сравнить атрибут с 2^15+2^14+2^13.
Как сравнить? Где в условиях отбора объекта, и как вставить значение атрибута подлежащего сравнению?
Условия отбора/Атрибуты/Задание условия поиска объектов по атрибутам
(найти все объекты с 15 нулевым битом атрибута 'Информационный')
1. Тип - 'Атрибут'
2. Атрибут - 'Информационный'
3. Опер - '='
4. Значение (выражение) - 'if(abs( Int (Информационный /16384) - Int (Информационный / (16384*2) )*2 )=0,0,1)
Как в формулу засунуть атрибут Информационный по которому в то же время осуществляется отбор
P/S Формула простая
Код: Выделить всё
Без знака( Целое(Байт/№ бита) - Целое(Байт/(№ бита*2))*2 )
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
- Anderyt
- Активный участник
- Сообщения: 777
- Зарегистрирован: 15 июл 2004, 13:15
- Используемое ПО: Lotsia PDM PLUS
- Откуда: Тюмень
- Контактная информация:
дак вот в том то и дело, что не вставлять значение атрибута в выражение, а СРАВНИВАТЬ это значение с чем то...
то есть
Атрибут / Информационный / > / число
или
Атрибут / Информационный / < / число
или и то и другое...
весь вопрос в том, что это за число, сравнив с которым значение, мы бы смогли понять, чему равен определенный бит этого значения?
или это нереально, найти такие числа?... мне уже начинает казаться, что нереально
то есть
Атрибут / Информационный / > / число
или
Атрибут / Информационный / < / число
или и то и другое...
весь вопрос в том, что это за число, сравнив с которым значение, мы бы смогли понять, чему равен определенный бит этого значения?
или это нереально, найти такие числа?... мне уже начинает казаться, что нереально
лучше день потерять, потом за пять минут долететь!
- Anderyt
- Активный участник
- Сообщения: 777
- Зарегистрирован: 15 июл 2004, 13:15
- Используемое ПО: Lotsia PDM PLUS
- Откуда: Тюмень
- Контактная информация:
а... вообщем, я снова за свое - если не могу найти решение проблемы, которая связана с имеющейся концепцией организации данных, то пытаюсь изменить концепцию так, чтобы проблемы не было (как и в случае с ветвлением в отчетах и связанными объектами)
если набор логических данных 10011001 представить не в виде числа 153, а в виде строки 8=1;7=0;6=0;5=1;4=1;3=0;2=0;1=1, то можно будет:
в действиях изменять значение определенного бита (если 4-й = 1 и мы хотим сделать его = 0, то ищем строчку 4=1, отрезаем все ДО этой подстроки, добавляем 4=0 и добавляем то, что было в исходной строке после найденной подстроки)
в действиях определять, чему равен определенный бит (если в строке есть подстрока 4=1, то 4-й бит = 1, если нету - то он = 0)
в формах объектов находить значение определенного бита (как в действии, поиском подстроки)
и наконец!
в действии искать объекты с опред-м значением опред. бита, с пом-ю запроса
Атрибут/Информационный/*/%4=1
вот...
если набор логических данных 10011001 представить не в виде числа 153, а в виде строки 8=1;7=0;6=0;5=1;4=1;3=0;2=0;1=1, то можно будет:
в действиях изменять значение определенного бита (если 4-й = 1 и мы хотим сделать его = 0, то ищем строчку 4=1, отрезаем все ДО этой подстроки, добавляем 4=0 и добавляем то, что было в исходной строке после найденной подстроки)
в действиях определять, чему равен определенный бит (если в строке есть подстрока 4=1, то 4-й бит = 1, если нету - то он = 0)
в формах объектов находить значение определенного бита (как в действии, поиском подстроки)
и наконец!
в действии искать объекты с опред-м значением опред. бита, с пом-ю запроса
Атрибут/Информационный/*/%4=1
вот...
лучше день потерять, потом за пять минут долететь!
- Александр
- Активный участник
- Сообщения: 1652
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Спасибо конечно
но вопрос не в том как обойти проблему (мы ее и так обошли немного подругому) - а в том можно ли использовать некую системную переменную содержащую значение текущего атрибута в выражении??
Ведь эта переменная где то есть точно, но просто закрыта от пользователей
Ладно, уже спросил у Техподдержки - ответят - напишу.
но вопрос не в том как обойти проблему (мы ее и так обошли немного подругому) - а в том можно ли использовать некую системную переменную содержащую значение текущего атрибута в выражении??
Ведь эта переменная где то есть точно, но просто закрыта от пользователей
Ладно, уже спросил у Техподдержки - ответят - напишу.
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
- Александр
- Активный участник
- Сообщения: 1652
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Информационный байт/байты(числовые атрибуты) мы используем со многими объектами для хранения флагов и использования их в действиях и отображения в формах но в данном контексте еще и для выбора/поиска объектов
смотрим картинку
http://www.lplm.ru/phpBB2/viewtopic.php?t=156 где нарисована форма с флагами
Смысл следующий есть байт (например) 10001000 каждый бит которого визуально именован (Машиностроение, ГИС и т.д)
Т.к. нет инструмента для предварительного анализа атрибута в поиске/выборе мы вводим 'искуственную' строку которая в соответсвии с информационным байтом принимает вид:
10001000 -'Машиностроение;ГИС'
10000000 -'Машиностроение'
00100001 -'AutoDesk;Литье'
00000000 -''
соответственно делаем поиск по искуственной(вспомогательной) строке
В общем теже... вид сбоку Не хотели использовать лишнее-но пока пришлось
смотрим картинку
http://www.lplm.ru/phpBB2/viewtopic.php?t=156 где нарисована форма с флагами
Смысл следующий есть байт (например) 10001000 каждый бит которого визуально именован (Машиностроение, ГИС и т.д)
Т.к. нет инструмента для предварительного анализа атрибута в поиске/выборе мы вводим 'искуственную' строку которая в соответсвии с информационным байтом принимает вид:
10001000 -'Машиностроение;ГИС'
10000000 -'Машиностроение'
00100001 -'AutoDesk;Литье'
00000000 -''
соответственно делаем поиск по искуственной(вспомогательной) строке
В общем теже... вид сбоку Не хотели использовать лишнее-но пока пришлось
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный