
В контекстном меню объекта есть пункт отправить сообщение...
Можно ли данную операцию выполнить по нажатию своей кнопки на атрибутивной форме? если можно то какие функции нужно применить?

Код: Выделить всё
declare @id decimal(18,0)
declare @text varchar(2000)
declare @rtext varchar(3000)
set @text='Пробное сообщение с помощью sql!!!'
begin tran
exec lsdbo.wf_up_mail 'I', @id output,
'Тема сообщения', @text,
null, null, null, -103, null, 300001027 /*Идентификатор отправителя*/, 'O'
commit
select @id
----------
---Создаем rtf текст сообщения
----------
set @rtext='{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset204 MS Sans Serif;}} {\colortbl ;\red0\green0\blue0;} \viewkind4\uc1\pard\cf1\highlight0\lang25\f0\fs20';
declare @rtf char(1)
declare @fl1 bit
set @fl1=1
set @rtf=substring(@text,1,1)
set @text=substring(@text,2,len(@text)-1)
while @fl1=1
begin
if len(@text)=0 begin set @fl1=0 end
select @rtext=@rtext+'\'''+[1]+[2] from
(select '1'=cast(case
when ascii(@rtf)/16 >9 then
case
when ascii(@rtf)/16=10 then 'A'
when ascii(@rtf)/16=11 then 'B'
when ascii(@rtf)/16=12 then 'C'
when ascii(@rtf)/16=13 then 'D'
when ascii(@rtf)/16=14 then 'E'
when ascii(@rtf)/16=15 then 'F'
when ascii(@rtf)/16=16 then 'G'
end
else cast(ascii(@rtf)/16 as char)
end as varchar(1)),
'2'=cast(case
when ascii(@rtf)-(ascii(@rtf)/16)*16>9 then
case
when ascii(@rtf)-(ascii(@rtf)/16)*16=10 then 'A'
when ascii(@rtf)-(ascii(@rtf)/16)*16=11 then 'B'
when ascii(@rtf)-(ascii(@rtf)/16)*16=12 then 'C'
when ascii(@rtf)-(ascii(@rtf)/16)*16=13 then 'D'
when ascii(@rtf)-(ascii(@rtf)/16)*16=14 then 'E'
when ascii(@rtf)-(ascii(@rtf)/16)*16=15 then 'F'
when ascii(@rtf)-(ascii(@rtf)/16)*16=16 then 'G'
end
else cast(ascii(@rtf)-(ascii(@rtf)/16)*16 as char)
end as varchar(1))) aa1
set @rtf=substring(@text,1,1)
if @fl1=1 begin
set @text=substring(@text,2,len(@text)-1)
end
end
set @rtext=@rtext+'\highlight0\par } '
select @rtext
Код: Выделить всё
---- Добавляем rtf текст в письмо
begin tran
exec lsdbo.wf_up_mail_rtf 'U', --'I',
@id, @rtext
commit
---- Добавляем получателей в письмо
--- Необходимо повторить по кол-ву получателей
begin tran
exec lsdbo.wf_up_mail_to 'I', null, 300001027 /*идетификатор получателя*/, null, null, @id, 'N', null, null, null, null
commit
------
------
----- Отправляем сообщение.
begin tran
exec lsdbo.wf_up_mail 'S', @id, '', '', 0, null, 0, 0, '1900-01-01 00:00:00.000', 0, 'O'
commit
я недавно в качестве эксперимента делала что-то такое. ОК можно имитировать, тогда от юзера ничего зависеть не будет. Я вообще подумываю о том, чтобы весь функционал, в том числе имитирующий бизнес-процесс, организовать на картах объектов, а workflow использовать только для оповещения, типа: вам поступил документ на согласование (документ прилагать). В таком варианте понадобится запускать работы как бы скрытно. Да, соглашусь, карты - это более громоздко, нежели свободное сообщение, но реально.Anderyt писал(а):да, можно сделать уведомление в виде шаблона и запускать его из действия. но при этом появляется форма запуска новой работы (в которой нужно нажать ОК, а значит - можно и НЕ нажать ОК), и в этом случае от формы уведомлений многое зависит.