Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Toe Участник
Вступление в Клуб: 14.02.2013
|
Чт Фев 14, 2013 06:41  Учусь. «Печать в Word» |
|
Полезность: Нет оценки
|
Я только-только учусь.
В шаблон документа добавились дополнительные поля и нужно это реализовать. И глянув на дистрибутивную операцию, могу сказать, что там такие поля не определены, поэтому вывести их в документ я не смогу.
Помогите, пожалуйста, что делать?
Отдельно писать операцию для вывода на печать, но нежелательно.
Или операцию-расширение, но с этим у меня проблемы, ибо я даже не представляю, как это делать. Можно ли создать операцию расширение, которая добавляет значения в дополнительные поля? Как передается указатель на этот шаблон? и т.п.
Если какие-то ссылки есть, буду признателен. |
|
 |
Kozyr Участник со стажем
Вступление в Клуб: 29.02.2008
|
Чт Фев 14, 2013 08:42  Re: Учусь. «Печать в Word» |
|
Полезность: Нет оценки
|
Обычно на продукте, на котором вызываете операцию "Печать в Word", есть hook - например HOOK_BANK.DEPN_GET - в нем можно определить свои коды для печати. |
|
 |
Toe Участник
Вступление в Клуб: 14.02.2013
|
Чт Фев 14, 2013 09:04   |
|
Полезность: Нет оценки
|
Извините, ну, это мне ни о чем не сказало.
Какие-нить примеры можете выложить? Как определить свои коды для печати?
Например, печать доверенности на управление продуктом в Word. |
|
 |
Kozyr Участник со стажем
Вступление в Клуб: 29.02.2008
|
Чт Фев 14, 2013 09:43   |
|
Полезность: Нет оценки
|
Toe пишет: | Извините, ну, это мне ни о чем не сказало.
Какие-нить примеры можете выложить? Как определить свои коды для печати?
Например, печать доверенности на управление продуктом в Word. |
Ну как-то так:
Операция "TRUST_GET" в типе "HOOK_BANK"
Код: |
Begin
if P_CODE_INFO = 'ТУТ НАЗВАНИЕ КОДИКА' then
/*
чтото считаем
.....
....
..
чтото считаем
MAY_VAL := возвращаемое значение
*/
return MAY_VAL;
end if;
End;
|
|
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Пт Фев 15, 2013 02:25   |
|
Полезность: Нет оценки
|
--Можно ли создать операцию расширение, которая добавляет значения --в дополнительные поля?
Расширение создать можно только если оно полностью перекроет основную операцию Т.е. копируешь всё из дистриба в расширение , а вызов дистриба в расширении убираешь...Минус этого -если дистриб поменяется при смене версии- то твоя доработка будет работать по старому, плюс- для пользователя вызов остаётся как будто старой операции, имхо лучше делать локал в таких случаях ...
--Как передается указатель на этот шаблон? и т.п.
По разному , обычно или прописан в проверке/к-с операции, или в справочнике shablon_doc если шаблон выбирает пользователь. Найди команду открытия файла шаблона и посмотри что туда передаётся. |
|
 |
Toe Участник
Вступление в Клуб: 14.02.2013
|
Пт Фев 15, 2013 07:46   |
|
Полезность: Нет оценки
|
Alkov пишет: | --Можно ли создать операцию расширение, которая добавляет значения --в дополнительные поля?
Расширение создать можно только если оно полностью перекроет основную операцию Т.е. копируешь всё из дистриба в расширение , а вызов дистриба в расширении убираешь...Минус этого -если дистриб поменяется при смене версии- то твоя доработка будет работать по старому, плюс- для пользователя вызов остаётся как будто старой операции, имхо лучше делать локал в таких случаях ...
|
Что вы имеете в виду?
Понимаете, я получил задачу по ЦФТ: добавить в шаблон доверенности определенные поля для печати.
Я нашел, что сама печать - дистрибутивная операция, и ничего я добавить в нее не могу, ибо куда было бы проще, просто добавить обработку нужных полей. но..
И как быть? Отчего мне отталкиваться? Вполне возможно, что все, что вы написали и предыдущий участник форума вполне оказывается все просто, но для меня это темный лес. С чего начать для решения этой задачи? Какие-то примеры! |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Пт Фев 15, 2013 08:07   |
|
Полезность: Нет оценки
|
Как вариант - копируете её и там делаете что хотите в коде. По хорошему, конечно, лучше через хук. Копирование оправдывает себя, если много разных и извращённых шаблонов ваш бизнес захочет в дальнейшем, тогда туда можно засувать все эти шаблоны. |
|
 |
Toe Участник
Вступление в Клуб: 14.02.2013
|
Пт Фев 15, 2013 09:32   |
|
Полезность: Нет оценки
|
Проблема в том, что вызов этой операции "Печать в WORD" тоже находится в дистрибутиве. Тогда что вообще полностью скопировать сам процесс?
А через Хук то, что подкинул Kozyr достаточно для освоения материала? |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Пт Фев 15, 2013 09:37   |
|
Полезность: Нет оценки
|
Ну или свою с 0 сделайте, там ничего сложного. В хуке определяете коды и методы их вычисления, а в шаблоне WORD просто добавляете закладки с таким кодом. |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Пт Фев 15, 2013 10:12   |
|
Полезность: Нет оценки
|
Дайте название тбп+ короткое имя операции. |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пт Фев 15, 2013 18:15   |
|
Полезность: Нет оценки
|
расширение на печать в Ворд у вас не получится - потому что в расширении сначала отрабатывает родительская операция и только потом ваше расширение. Но родительская уже выведет вам в ворд. но каким образом сослаться в расширении на уже открытый ворд в родителе я не нашел.
В итоге сделали полностью свою операцию печати. а просто копировать операцию печати - смысла не вижу. Напишите уж лучше полность свою - просто часть кодеков можете заполнять по аналогичному алгоритму, а часть по своему. Во всяком случае в своей операции вы можете уже по своему алгоритму подставлять шаблоны и т.д. - т.е. полная свобода, не привязываясь к механизму ведения справочника шаблонов ИБСО (он не для всех вариантов печати удобен) |
|
 |
Toe Участник
Вступление в Клуб: 14.02.2013
|
Пн Фев 18, 2013 01:06   |
|
Полезность: Нет оценки
|
Alkov пишет: | Дайте название тбп+ короткое имя операции. |
Документы - Доверенность на распоряжение продуктом - PRINT_WRD |
|
 |
Toe Участник
Вступление в Клуб: 14.02.2013
|
Пн Фев 18, 2013 01:08   |
|
Полезность: Нет оценки
|
Gobur пишет: | расширение на печать в Ворд у вас не получится - потому что в расширении сначала отрабатывает родительская операция и только потом ваше расширение. Но родительская уже выведет вам в ворд. но каким образом сослаться в расширении на уже открытый ворд в родителе я не нашел.
В итоге сделали полностью свою операцию печати. а просто копировать операцию печати - смысла не вижу. Напишите уж лучше полность свою - просто часть кодеков можете заполнять по аналогичному алгоритму, а часть по своему. Во всяком случае в своей операции вы можете уже по своему алгоритму подставлять шаблоны и т.д. - т.е. полная свобода, не привязываясь к механизму ведения справочника шаблонов ИБСО (он не для всех вариантов печати удобен) |
Ну, если никаких новых и под силу для здесь идей не появится, то буду создавать свою операцию печати для доверенности... Просто хочется как "по умолчанию" при регистрации доверенности поставить в форме галочку "Печать" и она печатается, а так придется просто выбирать операцию. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Пн Фев 18, 2013 08:35   |
|
Полезность: Нет оценки
|
Если нужно перехватить вызов стандартной печаталки и подставить свою (PRINT_WRD_1) , например, из "Добавить" - сделать раширение, в теле :
[code]
begin
if V_PRINT_WRD then
V_PRINT_WRD :=FALSE;
V_PRINT_LOC := TRUE;
end if;
&BASE$SETVARS;
&BASE$EXECUTE;
if nvl(V_PRINT_LOC, false) then
var PrnOper ref [VID_OPER_DOG];
begin
locate PrnOper in ::[VID_OPER_DOG] all where PrnOper.[code] = 'PRN_TRUST_FOR_PROD';
exception when others then
PrnOper := null;
end;
stdio.put_line_buf('<% PLPCALL %THIS%.[PRINT_WRD_1](P_PRN_OPER => '''||PrnOper||''')%>');
end if;
end;
[/code] |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Фев 18, 2013 15:50   |
|
Полезность: Нет оценки
|
vtar пишет: | Если нужно перехватить вызов стандартной печаталки и подставить свою (PRINT_WRD_1) , например, из "Добавить" - сделать раширение, в теле :
[code]
begin
if V_PRINT_WRD then
V_PRINT_WRD :=FALSE;
V_PRINT_LOC := TRUE;
end if;
&BASE$SETVARS;
&BASE$EXECUTE;
if nvl(V_PRINT_LOC, false) then
var PrnOper ref [VID_OPER_DOG];
begin
locate PrnOper in ::[VID_OPER_DOG] all where PrnOper.[code] = 'PRN_TRUST_FOR_PROD';
exception when others then
PrnOper := null;
end;
stdio.put_line_buf('<% PLPCALL %THIS%.[PRINT_WRD_1](P_PRN_OPER => '''||PrnOper||''')%>');
end if;
end;
[/code] |
Ну т.е. вы предлагаете сделать расширение на каждую операцию в которой есть галка Печать в Ворд? В принципе да - можно и так попробовать. Но если пользователь захочет не во время добавления распечатать, а после? С доверенностями проще. А вот например со вкладами придется делать уже 2 локальных объекта 1 на добавить, 1 на редактировать. |
|
 |
|