Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
dnk_dz Эксперт
Вступление в Клуб: 19.09.2007
|
Пт Апр 18, 2008 07:55   |
|
Полезность: Нет оценки
|
belyansky пишет: | кстати примечания через "вставка -> примечание" удобнее вставлять, а через "вид - > примечания" можно включить отображение всех примечаний
dnk_dz пишет: |
Может быть. Просто я делал загрузку данных из Excel именно через именованные ячейки. |
а можно узнать как просматривать имя ячейки после присвоения??? |
Имя ячейки отображается в верхнем левом углу окна (под панелью инструментов) в поле с выпадающим списком. В этом же поле можно и присвоить имя ячейки. А через выпадающий список можно перемещаться к указанной ячейке. |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Пт Окт 30, 2009 16:19   |
|
Полезность: Нет оценки
|
Доброго времени суток, Уважаемые коллеги!
подскажите можно ли программно, каким либо образом осущетвить выгрузку отчета в Excel, без вызова РЭФ операции осуществляющей выгрузку?
т.е. грубо говоря програмно вызвать операцию выгрузки из другой операции _________________ всегда есть как минимум 2 выхода |
|
 |
w00per Профи
Вступление в Клуб: 17.10.2007
|
Пт Окт 30, 2009 16:29   |
|
Полезность: Нет оценки
|
Alexsey пишет: | Доброго времени суток, Уважаемые коллеги!
подскажите можно ли программно, каким либо образом осущетвить выгрузку отчета в Excel, без вызова РЭФ операции осуществляющей выгрузку?
т.е. грубо говоря програмно вызвать операцию выгрузки из другой операции | Думаю нужно эмулировать нажатия на кнопку формирования отчета и "OK". Либо только "ОК", но по событию нажатия на ок должно вызываться вормирование Excelя _________________ I Lie About Everything. |
|
 |
prog Эксперт
Вступление в Клуб: 03.03.2008
|
Пт Окт 30, 2009 16:33   |
|
Полезность: Нет оценки
|
а как эмулировать это нажатие? |
|
 |
w00per Профи
Вступление в Клуб: 17.10.2007
|
Пт Окт 30, 2009 16:55   |
|
Полезность: Нет оценки
|
prog пишет: | а как эмулировать это нажатие? |
Передать соответствующий текст в переменную текст которой исполняется в клиент-скрипте.
Например Код: | call Form1.ScriptPostEvent(BTN_OK,"CLICK") |
_________________ I Lie About Everything. |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Сб Окт 31, 2009 02:10   |
|
Полезность: Нет оценки
|
w00per пишет: | prog пишет: | а как эмулировать это нажатие? |
Передать соответствующий текст в переменную текст которой исполняется в клиент-скрипте.
Например Код: | call Form1.ScriptPostEvent(BTN_OK,"CLICK") |
|
ну это конечно все замечательно, вот только форма не понимается, следовательно клиентская часть скрипта не работает... проблема в этом... или я что то путаю? _________________ всегда есть как минимум 2 выхода |
|
 |
dnk_dz Эксперт
Вступление в Клуб: 19.09.2007
|
Пн Ноя 02, 2009 06:21   |
|
Полезность: 1
|
У нас сделано так. Есть операция, которая вызывает формирование отчета в Excel. В теле делаем вызов:
Код: | stdio.put_line_buf('<%CALL KOU_PF_RSTSEND SEND2EXCEL '||rec%id||'%>'); |
Операция, которая формирует Excel-файл ничем не отличается от обычной операции вывода отчета в Excel. В валидаторе:
Код: | if P_INFO = 'OK' then
if excel.f_click then
...
|
все как обычно, только в свойствах операции стоит признак "Не отображать экранную форму операции". |
|
 |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Пн Ноя 02, 2009 06:33   |
|
Полезность: 1
|
dnk_dz пишет: |
все как обычно, только в свойствах операции стоит признак "Не отображать экранную форму операции". |
Да, с этим крыжом ЭФ не показывается, но валидаторы отрабатывают по сценарию
1. Показалась форма.
2. Нажата кнопка ОК. |
|
 |
w00per Профи
Вступление в Клуб: 17.10.2007
|
Пн Ноя 02, 2009 09:23   |
|
Полезность: Нет оценки
|
Alexsey пишет: | Код: | call Form1.ScriptPostEvent(BTN_OK,"CLICK") | ну это конечно все замечательно, вот только форма не понимается, следовательно клиентская часть скрипта не работает... проблема в этом... или я что то путаю? | Если бы не отрабатывала клиентская часть, то как бы происходила эмулюция нажатия на кнопку?![/quote]
З.Ы. Вариант уважаемого dnk_dz более изящьный, но может оказаться менее гибким для выполнения доп. действий. _________________ I Lie About Everything. |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Пн Ноя 02, 2009 10:12   |
|
Полезность: Нет оценки
|
dnk_dz пишет: | Операция, которая формирует Excel-файл ничем не отличается от обычной операции вывода отчета в Excel. В валидаторе:
Код: | if P_INFO = 'OK' then
if excel.f_click then
...
|
все как обычно, только в свойствах операции стоит признак "Не отображать экранную форму операции". |
я сдел все точно также.. просто операция работает по массиву... переменная Dest заполняется, НО сам excel по окончении работы операции не запускается.. если запустить операцию ручками и нажать на форме на кнопку ОК, то, о чудо, все работает как часы.. у меня сложилось устойчивое мнение, что не запускается клиент скрипт... и как его запустить программно, для меня, честно говоря, пока загадка _________________ всегда есть как минимум 2 выхода |
|
 |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Пн Ноя 02, 2009 10:21   |
|
Полезность: Нет оценки
|
Тогда сложнее, не видя...
Перед запуском ручками ты у этой операции снимаешь крыж "Не отображать ЭФ"?
Попробуй запустить ее руками, не снимая этот крыжик.
Покажи, как вызываешь операцию.
Текст самой операции. |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Вт Ноя 03, 2009 15:01   |
|
Полезность: Нет оценки
|
текст функции
Код: | procedure auto_valid(p_message varchar2(100),
p_info varchar2(1000),
p_date date,
p_nr integer,
p_acc string(20),
v_dest string(32000),
v_file string(32000)
) is
begin
if P_MESSAGE = 'DEFAULT' then
EXCEL.Init_XLS;
tmp_date := to_char(p_date, 'DD.MMMM.YYYY');
tmp_nr := p_nr;
tmp_acc := p_acc;
v_file := [REPS]::[SLIB].GetPath('PATH_PRINT_EXCEL', 'print_r.xlt');
if list_docs is not null then
p_message := 'VALIDATE';
p_info:='OK';
else
pragma error ('Документы в рейс не найдены!!!');
end if;
end if;
if P_MESSAGE = 'VALIDATE' then
if P_INFO = 'OK' then
if excel.f_click then
excel.f_click := false;
--debug_pipe('>>> Подготовка отчета для вывода в Excel...'
-- ||LF$||'>>> Пожалуйста, подождите...', 0);
excel.open_file(v_file);
get_doc_list(tmp_date, tmp_nr, tmp_acc);
excel.release;
excel.visible;
end if;
EXCEL.Exec_Script(v_dest);
-- debug_pipe(v_dest);
end if; -- p_info
end if; -- p_messge
End; |
_________________ всегда есть как минимум 2 выхода |
|
 |
w00per Профи
Вступление в Клуб: 17.10.2007
|
Вт Ноя 03, 2009 16:25   |
|
Полезность: Нет оценки
|
Проверки, я надеюсь, установлены (Сервер, Клиент)?
Валидация кнопки ОК включена?(А вдруг, все мы люди...)
Попробуй код из условия Код: | if P_MESSAGE = 'DEFAULT' then |
перенести в Код: | if P_MESSAGE = 'VALIDATE' then
if P_INFO = 'OK' then |
_________________ I Lie About Everything. |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Вт Ноя 03, 2009 21:48   |
|
Полезность: Нет оценки
|
w00per пишет: | Проверки, я надеюсь, установлены (Сервер, Клиент)?
Валидация кнопки ОК включена?(А вдруг, все мы люди...)
Попробуй код из условия Код: | if P_MESSAGE = 'DEFAULT' then |
перенести в Код: | if P_MESSAGE = 'VALIDATE' then
if P_INFO = 'OK' then |
|
Согласен, все мы люди.. валидация там где надо поставлена... проверки все выставлены...я уже по разному пробовал.. но вот не работает клиент скрипт, если операцию печати в Excel вызывать программно _________________ всегда есть как минимум 2 выхода |
|
 |
w00per Профи
Вступление в Клуб: 17.10.2007
|
Чт Ноя 05, 2009 09:47   |
|
Полезность: 1
|
Быстренько накидал пару операций одна из которой вызывает вторую, вторая что-то там выполняет и жмет кнопку "ОК".
1-я Test
Код: | Блок "ТЕЛО"
begin
stdio.put_line_buf('<% PLPCALL [KOB_KASSES].[TEST2](%VAR%.V_VB => ''call Form1.ScriptPostEvent(Ok,"CLICK")'')%>');
end;
|
2-я Test2
Код: | Блок "ТЕЛО"
begin
debug_pipe('8'||V_VB, 10);
debug_pipe('V_VB = '||V_VB, 10);
debug_pipe('9'||V_VB, 10);
end;
Блок "ПРОВЕРКА"
begin
if P_MESSAGE = 'DEFAULT' then
debug_pipe('1', 10);
debug_pipe('V_VB = '||V_VB, 10);
debug_pipe('2', 10);
end if;
if P_MESSAGE = 'VALIDATE' then
debug_pipe('3', 10);
if P_INFO = '%PLPCALL%' then
debug_pipe('4', 10);
debug_pipe('V_VB = '||V_VB, 10);
debug_pipe('5', 10);
end if;
if P_INFO = 'OK' then
debug_pipe('6', 10);
debug_pipe('V_VB = '||V_VB, 10);
debug_pipe('7', 10);
end if;
end if;
end;
Блок "КЛИЕНТ-СКРИПТ"
Public Function Main(LastControl)
MsgBox V_VB.Text
Execute V_VB.Text
V_VB.Text = ""
Main = True ' Результирующее значение валидатора (True или False)
End Function
|
Запускаю Test жму "ОК" и вижу лог+периодические сообщения
Цитата: | 09:34:14
1
V_VB =
2
09:34:16
3
4
V_VB = call Form1.ScriptPostEvent(Ok,"CLICK")
5
09:34:33
3
6
V_VB =
7
09:34:38
8
V_VB =
9
|
Как видим все отработало на ура.
З.Ы. переменная V_VB вынесена на форму и у нее выставлено свойство "CheckValidate". _________________ I Lie About Everything. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|