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

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

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

Если не трудно, то поподробнее.

Добавлено: 14 июл 2006, 15:50
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: