проверка описания объектов на уникальность (повторение)

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Ответить
Аватара пользователя
Максим Мельников
Новый участник
Сообщения: 9
Зарегистрирован: 20 июн 2006, 08:14
Контактная информация:

проверка описания объектов на уникальность (повторение)

Сообщение Максим Мельников »

Подскажите, есть ли в Лоции возможность проверки на уникальность(повторение) описания объекта проекта? Вообщем, чтобы нельзя было добавлять в проект объект, если уже есть объект с таким описанием.

Если не трудно, то поподробнее.
Loco
Активный участник
Сообщения: 75
Зарегистрирован: 22 фев 2005, 12:33
Используемое ПО: Lotsia PDM PLUS LT

Сообщение Loco »

Проверить уникальность описания можно, если в действии сформировать правильный SQL-запрос.
Если проверять все описания без анализа вхождений - запрос совсем простой будет.

В действии над объектом ручным вводом вставить примерно такую строку:
Kol_vo = Set ( f_ExecSQLSelect_2 ('SELECT count(.....<начало запроса>... where LSDBO.object_reference_view.description like '+'~'%'+new_desc+'%~''+'and ...<продолжение запроса>...' , 't' , 's' ) )
где: Kol_vo - количество найденных похожих элементов, строка!
f_ExecSQLSelect_2( ) функция из группы "Party", отображается в редакторе выражений для присвоения значений переменным в действиях Flow, оттуда можно скопировать, синтаксис тоже там, либо по <F1>, на вкладке "Find"
new_desc - проверяемое описание, строка .
Пояснение: like '%_фрагмент_%' проверяет вхождение фрагмента, если вместо фрагмента переменная - она вне кавычек, все кавычки в функции одинарные, вложенные кавычки с тильдами - "~"
't' , 's' - разделители, любые.

Так как переменные в действиях над объектами только единичные, не массивы, в запросе удобно использовать агрегатные функции count(), max()... для того, чтобы результат был единичным, а значит и недлинным.

Ограничение на длину строки в действии - около 2000 символов, на результат (значение строковой переменной) - аналогично.

Полученный результат анализировать: GoTo(if(....Kol_vo....,'m1','m2')) , m1, m2- метки соответствующих шагов действия...

Запрос предварительно обязательно проверить, так как при отладке действия сделать это затруднительно.

Вот примерно так. У нас аналогичное действие работает.
Пробуйте, подставляйте свои данные. И тестируйте.
А я в отпуск ухожу. :wink:
Loco
Ответить