Запуск JOBа от имени другого пользователя
На страницу Пред. 1, 2, 3, 4 След.
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Чт Ноя 24, 2016 13:42   |
|
Полезность: Нет оценки
|
wolfio пишет: | Цитата: | Сути дело это не меняет |
именно.
перефразирую вопрос - как повторно переинициализировать переменную пакета, при многократном его вызове? |
В пред предыдущем посте уже написал )
Очень просто
Инициализируй переменную не в проверке, а в теле |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Ноя 24, 2016 13:45   |
|
Полезность: Нет оценки
|
Матвеев Евгений пишет: | wolfio пишет: | Цитата: | Сути дело это не меняет |
именно.
перефразирую вопрос - как повторно переинициализировать переменную пакета, при многократном его вызове? |
В пред предыдущем посте уже написал )
Очень просто
Инициализируй переменную не в проверке, а в теле |
проблема в том, что , как я уже написал, это упрощенный пример дистрибутива.
Т.е. я, условно говоря, не могу изменить вызываемую операцию. только если перекрывать ее расширением. Но этот вариант мне уж очень не нравится. |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Чт Ноя 24, 2016 13:56   |
|
Полезность: Нет оценки
|
wolfio пишет: | Матвеев Евгений пишет: | wolfio пишет: | Цитата: | Сути дело это не меняет |
именно.
перефразирую вопрос - как повторно переинициализировать переменную пакета, при многократном его вызове? |
В пред предыдущем посте уже написал )
Очень просто
Инициализируй переменную не в проверке, а в теле |
проблема в том, что , как я уже написал, это упрощенный пример дистрибутива.
Т.е. я, условно говоря, не могу изменить вызываемую операцию. только если перекрывать ее расширением. Но этот вариант мне уж очень не нравится. |
Если дистрибутив, напиши короткое имя, ну и переменную например |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Ноя 24, 2016 14:02   |
|
Полезность: Нет оценки
|
Цитата: | Если дистрибутив, напиши короткое имя, ну и переменную например |
это не глобальная переменная, чтобы ее можно было изменить напрямую. Она локальная |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Чт Ноя 24, 2016 14:04   |
|
Полезность: Нет оценки
|
wolfio пишет: | Цитата: | Если дистрибутив, напиши короткое имя, ну и переменную например |
это не глобальная переменная, чтобы ее можно было изменить напрямую. Она локальная |
Так ты покажи её, я не могу мысли читать сегодня, как говорит vtar, хрустальный шар дома забыл ) |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Ноя 24, 2016 14:13   |
|
Полезность: Нет оценки
|
Матвеев Евгений пишет: |
Так ты покажи её, я не могу мысли читать сегодня, как говорит vtar, хрустальный шар дома забыл ) |
я не понимаю, что показать то? как она обьявлена в локальных?
так три раза уже ж написал:
Код: |
OurDepart ref [DEPART] := ::[SYSTEM].[VARIABLES].OurDepart; |
|
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Чт Ноя 24, 2016 14:13   |
|
Полезность: Нет оценки
|
wolfio пишет: | Матвеев Евгений пишет: |
Так ты покажи её, я не могу мысли читать сегодня, как говорит vtar, хрустальный шар дома забыл ) |
я не понимаю, что показать то? как она обьявлена в локальных?
так три раза уже ж написал:
Код: |
OurDepart ref [DEPART] := ::[SYSTEM].[VARIABLES].OurDepart; |
|
Ее я имел в виду операцию |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Ноя 24, 2016 14:58   |
|
Полезность: Нет оценки
|
[FACTURA_DOC].[NEW_INITION] |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Чт Ноя 24, 2016 15:10   |
|
Полезность: Нет оценки
|
wolfio пишет: | [FACTURA_DOC].[NEW_INITION] |
Постановка задачи в чём?
Код: | OurDepart ref [DEPART] := ::[SYSTEM].[VARIABLES].OurDepart; |
тут нет
Код: | ::[SYSTEM].[VARIABLES].OurDepart; |
тоже нет
Код: |
function Copy_Factura(fact ref [FACTURA_DOC]) return ref [FACTURA_DOC]
is
sc1 number;
is_found boolean;
NewObj ref [FACTURA_DOC];
Obj [FACTURA_DOC];
itemObj [SERVICE];
itemRef ref [SERVICE];
connObj [TMC_FACT_CONN];
p_adds varchar2(2000) := '';
alls_before number;
nds_before number;
begin
Obj:=fact;
Obj%init(false,true);
Obj.[INITION_CORR] := Obj%id;
if Obj.[KIND].[0] = &fSale then --на продажу
Obj.[NUM_FACT] := ::[FACTURA_DOC].[NUM_LIB].New_Num_Fact(true, null, fact.[DEPART], V_DATE, p_adds);-- Сформируем новый номер сч.-фактуры
Obj.[DOCUMENT_NUM] := ::[FACTURA_DOC].[NUM_LIB].Str2Num(True, Obj.[NUM_FACT], fact.[DEPART], V_DATE, p_adds);-- Сформируем новый номер сч.-фактуры
else
Obj.[DOCUMENT_NUM] := ::[FACTURA_DOC].[NUM_LIB].New_Num_Document(False, fact.[DEPART], V_DATE, p_adds);-- Сформируем новый номер сч.-фактуры
end if;
|
Вот такая беда есть, тут легче доп обработкой на fact ref [FACTURA_DOC] поменять
Код: |
v_pay.[INITION_CORR] := v_corr.[INITION_CORR];
--подразделение возьмем из первичного счет-фактуры
v_pay.[DEPART] := v_corr.[DEPART];
v_corr.[DATE_PAY]:= v_pay.[DATE_PAY];
|
и тут тоже |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Ноя 24, 2016 15:20   |
|
Полезность: Нет оценки
|
Матвеев Евгений пишет: |
Постановка задачи в чём?
|
Евгений, у меня складывается ощущение, что вы троль 80 уровня, и до 81 вы решили докачаться на мне)
я не знаю, что за код вы показали, и не знаючто хотели увидеть.
задача: переинициализировать локальную переменную в операции, при многократном вызове оной |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Чт Ноя 24, 2016 15:29   |
|
Полезность: Нет оценки
|
wolfio пишет: | Матвеев Евгений пишет: |
Постановка задачи в чём?
|
Евгений, у меня складывается ощущение, что вы троль 80 уровня, и до 81 вы решили докачаться на мне)
я не знаю, что за код вы показали, и не знаючто хотели увидеть.
задача: переинициализировать локальную переменную в операции, при многократном вызове оной |
)))
Настройка SF_USE_CENTRAL_WORK чему равна?
Код: |
if nvl (::[FP_TUNE].[LIB].get_bool_value('SF_USE_CENTRAL_WORK'), false) then
P_DEPART := coalesce(P_DOCUMENT.[DEPART], OurDepart);
else
P_DEPART := OurDepart;
[CSMD].Disable(V_VB, 'P_DEPART');
end if;
|
|
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Ноя 24, 2016 15:36   |
|
Полезность: Нет оценки
|
Матвеев Евгений пишет: |
Настройка SF_USE_CENTRAL_WORK чему равна?
|
вы продолжаете, да?))
а как вы думаете, чему она равна, если я бы мог спокойно заполнить значение P_DOCUMENT.[DEPART] и не тупить себе голову, если б она была в true?)
Код: |
if nvl (::[FP_TUNE].[LIB].get_bool_value('SF_USE_CENTRAL_WORK'), false) then
P_DEPART := coalesce(P_DOCUMENT.[DEPART], OurDepart);
else
P_DEPART := OurDepart;
[CSMD].Disable(V_VB, 'P_DEPART');
end if;
|
|
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Чт Ноя 24, 2016 15:39   |
|
Полезность: Нет оценки
|
wolfio пишет: | Матвеев Евгений пишет: |
Настройка SF_USE_CENTRAL_WORK чему равна?
|
вы продолжаете, да?))
а как вы думаете, чему она равна, если я бы мог спокойно заполнить значение P_DOCUMENT.[DEPART] и не тупить себе голову, если б она была в true?)
Код: |
if nvl (::[FP_TUNE].[LIB].get_bool_value('SF_USE_CENTRAL_WORK'), false) then
P_DEPART := coalesce(P_DOCUMENT.[DEPART], OurDepart);
else
P_DEPART := OurDepart;
[CSMD].Disable(V_VB, 'P_DEPART');
end if;
|
|
А что мешает поставить Да? и ...
Цитата: | спокойно заполнить значение P_DOCUMENT.[DEPART] |
Это первый способ, он законный
------------------------------------------------------------------------
Второй способ, тоже относительно законный, сделай локальную копию операции и в теле добавь строку
Код: |
OurDepart := ::[SYSTEM].[VARIABLES].OurDepart;
|
получится вот так
Код: |
&setpar(p_adds, 'CLASS', v_class);
&setpar(p_adds, 'VALUE', This%id);
OurDepart := ::[SYSTEM].[VARIABLES].OurDepart;
if P_CLIENT.[0]=1 then
&setpar(p_adds, 'CLIENT', P_CLIENT.[1].[1]%id);
end if;
&setpar(p_adds, 'DOCUMENT', P_DOCUMENT%id);
&setpar(p_adds, 'CONN', P_CONN%collection);
|
------------------------------------------------------------------------
Для того чтобы окончательно затроллить тебя, предложу еще один вариантик, но он немного выходит за рамки лицензионного соглашения с ЦФТ
Заходишь в любой SQL клиент, подключаешься к схеме
Код: |
select rowid,TEXT from sources b where b.NAME = (select id from methods a where a.short_name = 'NEW_INITION') and b.type = 'EXECUTE' order by b.line
|
Ищешь первую пустую строку, на моей версии строка 29 и добавляешь туда
Код: |
OurDepart := ::[SYSTEM].[VARIABLES].OurDepart;
|
получается вот так, потом не забудь операцию откомпилировать
Код: |
&setpar(p_adds, 'CLASS', v_class);
&setpar(p_adds, 'VALUE', This%id);
OurDepart := ::[SYSTEM].[VARIABLES].OurDepart;
if P_CLIENT.[0]=1 then
&setpar(p_adds, 'CLIENT', P_CLIENT.[1].[1]%id);
end if;
&setpar(p_adds, 'DOCUMENT', P_DOCUMENT%id);
&setpar(p_adds, 'CONN', P_CONN%collection);
|
В итоге операция начнет работать так, как ты и ожидал в самом начале
Последний раз редактировалось: Матвеев Евгений (Чт Ноя 24, 2016 16:19), всего редактировалось 1 раз |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Ноя 24, 2016 16:18   |
|
Полезность: Нет оценки
|
Матвеев Евгений пишет: |
А что мешает поставить Да? и ...
|
ну это немного нецелевое использование настройки. К тому же, согласно описанию, у пользователя появится возможность выбрать его вручную, а сейчас такой возможности нет.
а через расширение эту бредятину можно реализовать? |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Чт Ноя 24, 2016 16:26   |
|
Полезность: Нет оценки
|
wolfio пишет: | Матвеев Евгений пишет: |
А что мешает поставить Да? и ...
|
ну это немного нецелевое использование настройки. К тому же, согласно описанию, у пользователя появится возможность выбрать его вручную, а сейчас такой возможности нет.
а через расширение эту бредятину можно реализовать? |
Троллю дальше... сам повод даешь
ну это немного нецелевое использование настройки. К тому же, согласно описанию, у пользователя появится возможность выбрать его вручную, а сейчас такой возможности нет.
Судя по исходникам, ты можешь в расширении блокировать на форме любой контрол для изменения, для пользователей (Это честный метод)
Поэтому можешь настройку поставить в да и запрет на редактирование
Код: |
if nvl(P_AGENT_DOG, false) then
[CSMD].Enable(V_VB, 'P_AGENT_REQS');
P_AGENT_REQS.[BANK_COMISS] := nvl(P_AGENT_REQS.[BANK_COMISS], false);
if nvl(P_AGENT_REQS.[BANK_COMISS], false) then
[CSMD].Enable(V_VB, 'P_AGENT_REQS.SUB');
[CSMD].Enable(V_VB, 'P_AGENT_REQS.CODE');
else
[CSMD].Disable(V_VB, 'P_AGENT_REQS.SUB');
[CSMD].Disable(V_VB, 'P_AGENT_REQS.CODE');
end if;
else
[CSMD].Disable(V_VB, 'P_AGENT_REQS');
end if;
|
Очень большие сомнения, что в данной операции у тебя получится из вне (в том числе через расширение) изменить значение переменной, объявленной в локальных описаниях
Локальные, они для того и локальные, чтобы они были доступны только внутри
Попробуй конечно, но едва ли
Вообще все 3 варианта решения имеют право на существование... и применялись в свое время (в том числе с вариант с изменением исходников в случаях крайней необходимости) |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|