CftClub.ru
Клуб специалистов ЦФТ-Банк

Учусь. Печать в Word
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Ответить с цитатой
Полезность: Нет оценки
--Можно ли создать операцию расширение, которая добавляет значения --в дополнительные поля?

Расширение создать можно только если оно полностью перекроет основную операциюSmile Т.е. копируешь всё из дистриба в расширение , а вызов дистриба в расширении убираешь...Минус этого -если дистриб поменяется при смене версии- то твоя доработка будет работать по старому, плюс- для пользователя вызов остаётся как будто старой операции, имхо лучше делать локал в таких случаях ...

--Как передается указатель на этот шаблон? и т.п.
По разному , обычно или прописан в проверке/к-с операции, или в справочнике shablon_doc если шаблон выбирает пользователь. Найди команду открытия файла шаблона и посмотри что туда передаётся.
Toe
Участник


Вступление в Клуб: 14.02.2013
СообщениеПт Фев 15, 2013 07:46    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
--Можно ли создать операцию расширение, которая добавляет значения --в дополнительные поля?

Расширение создать можно только если оно полностью перекроет основную операциюSmile Т.е. копируешь всё из дистриба в расширение , а вызов дистриба в расширении убираешь...Минус этого -если дистриб поменяется при смене версии- то твоя доработка будет работать по старому, плюс- для пользователя вызов остаётся как будто старой операции, имхо лучше делать локал в таких случаях ...

Что вы имеете в виду?
Понимаете, я получил задачу по ЦФТ: добавить в шаблон доверенности определенные поля для печати.
Я нашел, что сама печать - дистрибутивная операция, и ничего я добавить в нее не могу, ибо куда было бы проще, просто добавить обработку нужных полей. но..
И как быть? Отчего мне отталкиваться? Вполне возможно, что все, что вы написали и предыдущий участник форума вполне оказывается все просто, но для меня это темный лес. С чего начать для решения этой задачи? Какие-то примеры!
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПт Фев 15, 2013 08:07    Ответить с цитатой
Полезность: Нет оценки
Как вариант - копируете её и там делаете что хотите в коде. По хорошему, конечно, лучше через хук. Копирование оправдывает себя, если много разных и извращённых шаблонов ваш бизнес захочет в дальнейшем, тогда туда можно засувать все эти шаблоны.
Toe
Участник


Вступление в Клуб: 14.02.2013
СообщениеПт Фев 15, 2013 09:32    Ответить с цитатой
Полезность: Нет оценки
Проблема в том, что вызов этой операции "Печать в WORD" тоже находится в дистрибутиве. Тогда что вообще полностью скопировать сам процесс? Smile
А через Хук то, что подкинул 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 на редактировать.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru