Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
markoff Участник - экстремал
Вступление в Клуб: 09.06.2009
|
Ср Июл 04, 2012 09:19  Где используется реквизит |
|
Полезность: Нет оценки
|
Можно узнать в каких операциях используется определенный реквизит? |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Ср Июл 04, 2012 09:28   |
|
Полезность: Нет оценки
|
Наверное только поиск по имени реквизита по текстам операций... |
|
 |
markoff Участник - экстремал
Вступление в Клуб: 09.06.2009
|
Ср Июл 04, 2012 09:29   |
|
Полезность: Нет оценки
|
Не вариант так как имя реквизита очень распространенное |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Июл 04, 2012 09:54   |
|
Полезность: Нет оценки
|
типа,
select m.class_id, m.short_name , s.text
from sources s, methods m
where m.id = s.name
and(upper(s.text) like '%.VALUE%'
or upper(s.text) like '%.[VALUE]%')
? |
|
 |
prog Эксперт
Вступление в Клуб: 03.03.2008
|
Ср Июл 04, 2012 10:08   |
|
Полезность: Нет оценки
|
чем этот селект лучше предложения Alkov? |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Июл 04, 2012 10:11   |
|
Полезность: Нет оценки
|
более лучшей кастомизацией
p.s. какой то трольчатый запрос -" мне нужно узнать в каких операциях используется реквизит, но имя реквизита очень распространенное => и операций найдется очень много" .
Что то нужно уточнить .... по чему фильровать. |
|
 |
markoff Участник - экстремал
Вступление в Клуб: 09.06.2009
|
Ср Июл 04, 2012 10:20   |
|
Полезность: Нет оценки
|
Это скорей всего был не вопрос, а так крик души.
Практически не реально найти реквизит [CODE] в текстах операций. |
|
 |
Ghost Профи
Вступление в Клуб: 24.11.2007
|
Ср Июл 04, 2012 10:40   |
|
Полезность: Нет оценки
|
markoff пишет: | Это скорей всего был не вопрос, а так крик души.
Практически не реально найти реквизит [CODE] в текстах операций. |
Шутки ради. А вы переименуйте его на тестовой схеме, и все операции которые сломаются как раз и будут те в которых есть ссылка на этот реквизит.  |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Июл 04, 2012 10:42   |
|
Полезность: Нет оценки
|
markoff пишет: | Это скорей всего был не вопрос, а так крик души.
Практически не реально найти реквизит [CODE] в текстах операций. |
а зачем ? таки, цель поиска в чом заключается ? |
|
 |
A_A_A Профи
Вступление в Клуб: 16.07.2009
|
Ср Июл 04, 2012 11:09   |
|
Полезность: Нет оценки
|
Цель возможно в необходимости узнать, повлияют ли изменения какого-то кодика на работу системы или где он используется.
(Это мое предположение)
Я обычно через поиск ищу где используется ТИП реквизита, а потом уже в резельтате поиска реквизит. Либо поиском либо глазками |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Ср Июл 04, 2012 11:54   |
|
Полезность: Нет оценки
|
Есть в системе такая хрень как инспектор объектов
там можно посмотреть зависимости. У нас он вызывается через меню система.
А нет.. для реквизита это не подойдет((
Это для экземпляра системы((
Значит перекапывать пакеты и таблицу методов _________________ всегда есть как минимум 2 выхода |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Чт Июл 05, 2012 07:51   |
|
Полезность: 1
|
markoff пишет: | Это скорей всего был не вопрос, а так крик души.
Практически не реально найти реквизит [CO DE] в текстах операций. |
ну... можно существенно сократить количество анализируемого кода. Но там множество условий.
Во-первых, нужно посмотреть обращение к реквизиту в запросах, но так как существует такое понятие как раскрытие по точке, то нужно смотреть не на sources, а на user_source
Запрос pl/+, преобразованный в pl/sql, умещается скажем, на 5 строчках, значит:
Код: | select * from user_source s where upper(text) like '%C_C'||'ODE%'
and exists(select 1 from user_source u where u.name = s.name and u.type = s.type and u.line > s.line - 5 and u.line < s.line + 5 and upper(u.text) like 'Z#ИМЯ_КЛАССА') |
Во-вторых, нужно проанализировать обращение через интерфейсник.
Код: | select * from user_source s where upper(text) like 'Z$ИМЯ_КЛАССА#INTERFACE%CO'||'DE%' |
И в-третьих, объявление переменной данного типа, ::[ИМЯ_КЛАССА]%rowtype, [ИМЯ_КЛАССА] или ::[ИМЯ_КЛАССА]%rowtable и затем обращение к элементам записи, а также сохранение всей переменной посредством интерфейсника, но тут я уже ничего не могу придумать простого.
А, ну да. Есть еще синтаксис Oracle балковой вставки без указания колонок, но он через pl/sql-вставки делается. А еще можно подумать про формирование строк типа Код: | v$str := 'update Z#CLA'||'SS set C_C'||'ODE = null'; execute immediate v$str; |
Это уже не ловится. |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Чт Июл 19, 2012 09:17   |
|
Полезность: 2
|
Есть еще поиск по зависимостям:
Например, мне недавно нужно было понять каким образом и где заполняется реквизит ::[DOC_RICHES].[DOC]
Искать по текстам операций - заняте утомительное, поскольку ключевое слово 'DOC' является, наверное, лидером по частоте использования.
Но используя в запросе таблицу Dependencies можно сократить выборку до операций, которые обращаются только к таблице DOC_RICHES и конкретно к реквизиту DOC
Код: |
select
m.class_id,
m.short_name,
m.name,
d.*
from
dependencies d,
methods m
where
d.referenced_id = 'DOC_RICHES'
and d.referenced_qual = 'DOC'
and m.id = d.referencing_id
|
Далее, связываем с SOURCES и задаем шаблон поиска..
Код: |
select
m.class_id,
m.short_name,
m.name,
s.text
from
dependencies d,
methods m,
sources s
where
d.referenced_id = 'DOC_RICHES'
and d.referenced_qual = 'DOC'
and m.id = d.referencing_id
and s.name = m.id
and s.text like '%[DOC]%:=%'
|
В получившихся 10ти записях нужная операция находится невооруженным взглядом. |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Чт Июл 19, 2012 11:56   |
|
Полезность: Нет оценки
|
Доброго времен суток, уважаемые коллеги!
В нагрузку к поиску реквизита.
Требуется ваша квалифицированная помощь. Появилась задача узнать используется ли в коде операций и представлений упоминание экземпляра системы (код или ID). Это требуется, чтобы исключить возможность удаления экземпляров из справочников.
пробовал разными методами пока результат нулевой.
так же пробовал штатными средствами системы (функцией source_word библиотеки SYSLIB). Есть какие либо идеи? _________________ всегда есть как минимум 2 выхода |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Чт Июл 19, 2012 13:41   |
|
Полезность: 1
|
Alexsey пишет: | Доброго времен суток, уважаемые коллеги!
В нагрузку к поиску реквизита.
Требуется ваша квалифицированная помощь. Появилась задача узнать используется ли в коде операций и представлений упоминание экземпляра системы (код или ID). Это требуется, чтобы исключить возможность удаления экземпляров из справочников.
пробовал разными методами пока результат нулевой.
так же пробовал штатными средствами системы (функцией source_word библиотеки SYSLIB). Есть какие либо идеи? |
посмотри таблицу CURSORS. |
|
 |
|