Страница 1 из 1
Как отправить внутреннее сообщение?
Добавлено: 21 авг 2009, 11:56
Александр
Не подскажите начинающему админу (все время забываю как работать с системой и поэтому всегда начинаю снова

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

куда подставить текст адрес тему и т.д. и т.п
Re: Как отправить внутреннее сообщение?
Добавлено: 25 авг 2009, 11:40
Старик Крупский
Это внутреннее свободное сообщение Лоции. Этот пункт можно вынести в конекстное меню объекта (по правой кнопке мыши). Ничего, кроме объекта (или документа) туда передать нельзя. Хочешь передавать - запускай работы
Re: Как отправить внутреннее сообщение?
Добавлено: 25 авг 2009, 11:59
Александр
понял

добавлю позже в пожелания к развитию...
ps
вполне логично что данную процедуру можно/нужно автоматизировать, что - было бы удобно по крайней мере нам, все еще никак не освоившим Workflow
...ну как первый шаг типа 'Hello World'
Re: Как отправить внутреннее сообщение?
Добавлено: 25 авг 2009, 14:58
Старик Крупский
Хочешь свою (и своих сотрудников) лень

перевесить на разработчиков? Тебе скажут, что возможность есть - используй шаблоны работ.
А может, и не скажут...
Re: Как отправить внутреннее сообщение?
Добавлено: 25 авг 2009, 15:21
Anderyt
это в принципе интересная тема. у нас тоже периодически возникают такие желания.
хочется в действии СКРЫТНО от пользователя отправить сообщение с определенным текстом другому пользователю. что-то вроде уведомления (хотя уведомления об изменении чего-то там - атрибутов или документов - это вообще отдельная тема, это частенько можно слышать в рекламных проспектах других систем).
да, можно сделать уведомление в виде шаблона и запускать его из действия. но при этом появляется форма запуска новой работы (в которой нужно нажать ОК, а значит - можно и НЕ нажать ОК), и в этом случае от формы уведомлений многое зависит. если это простое уведомление, не требующее реакции пользователя - то это одно, это еще понятно. но запущенная работа будет практически тут же доведена автопереходами до окончания работы и завершится. а потом будет удалена (мы удаляем завершенные работы каждое утро), то есть юзер может пропустить уведомление и оно будет удалено.
если вешать на пользователя задачу (пока не примешь уведомление - не отмажешься) - то этой проблемы конечно нет. но в любом случае, для простого уведомления городить шаблон и обрабатывать кучу карт (а карты - это дорогое удовольствие, кусочки карт размазаны по куче таблиц) не совсем эффективно.
а вот если бы было свободное сообщение, которое запускается скрытно от юзера, не создает вокруг себя ворох данных для жизнедеятельности карты и не удалится вместе с удалением карты - открылись бы уже другие горизонты...
Re: Как отправить внутреннее сообщение?
Добавлено: 26 авг 2009, 06:29
Александр
ДА! ты меня понимаешь

, об этом и пытался сказать

Re: Как отправить внутреннее сообщение?
Добавлено: 26 авг 2009, 11:52
Юрий
Если нельзя сделать штатными средствами, сделаем по своему!
Вот код для MSSQL который производит создание и отправку сообщениея в Лоции
может пригодится....
Код: Выделить всё
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
Re: Как отправить внутреннее сообщение?
Добавлено: 26 авг 2009, 11:53
Юрий
Заключительный фрагмент:
Код: Выделить всё
---- Добавляем 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
Re: Как отправить внутреннее сообщение?
Добавлено: 26 авг 2009, 12:52
Александр
немного сложно выглядит, а так круто конечно, но немного не то, но все равно спасибо, может и пригодится
Re: Как отправить внутреннее сообщение?
Добавлено: 03 сен 2009, 08:14
gali
Anderyt писал(а):да, можно сделать уведомление в виде шаблона и запускать его из действия. но при этом появляется форма запуска новой работы (в которой нужно нажать ОК, а значит - можно и НЕ нажать ОК), и в этом случае от формы уведомлений многое зависит.
я недавно в качестве эксперимента делала что-то такое. ОК можно имитировать, тогда от юзера ничего зависеть не будет. Я вообще подумываю о том, чтобы весь функционал, в том числе имитирующий бизнес-процесс, организовать на картах объектов, а workflow использовать только для оповещения, типа: вам поступил документ на согласование (документ прилагать). В таком варианте понадобится запускать работы как бы скрытно. Да, соглашусь, карты - это более громоздко, нежели свободное сообщение, но реально.