Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Отправка отчетов Crystal по почте

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> Crystal Reports
Предыдущая тема :: Следующая тема  
Автор Сообщение
Spartak



Зарегистрирован: 18.03.2010
Сообщения: 180

СообщениеДобавлено: Вт Авг 24, 2010 14:13    Заголовок сообщения: Отправка отчетов Crystal по почте Ответить с цитатой

Коллеги!

Есть задача - отправлять зарплатные листки по почте.

Пока что сделал так:
В цикле появляются окна Crystal с расчетными листками.
Дальше Autoit сам нажимает на кнопки и сохраняет файлы в pdf на диск.
Outlook рассылает пользователям расчетные листки по почте.
Может быть кто-нибудь знает, как вызывать из Босса Crystal на отправку по почте?Razz
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 578
Откуда: Москва

СообщениеДобавлено: Пт Авг 12, 2011 18:32    Заголовок сообщения: Ответить с цитатой

Цитата:
Дальше Autoit сам нажимает на кнопки и сохраняет файлы в pdf на диск.


Скажите, а как это сделать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
zhenya17



Зарегистрирован: 04.02.2009
Сообщения: 190
Откуда: Кемерово

СообщениеДобавлено: Вс Авг 14, 2011 20:09    Заголовок сообщения: Re: Отправка отчетов Crystal по почте Ответить с цитатой

Spartak писал(а):
Коллеги!

Есть задача - отправлять зарплатные листки по почте.

Пока что сделал так:
В цикле появляются окна Crystal с расчетными листками.
Дальше Autoit сам нажимает на кнопки и сохраняет файлы в pdf на диск.
Outlook рассылает пользователям расчетные листки по почте.
Может быть кто-нибудь знает, как вызывать из Босса Crystal на отправку по почте?Razz
В моей версии БОСС-Кадровика есть z-процедура "zrp_расч_листки_MAIL". Цитирую её описание:
Цитата:
Печать с автоматической рассылкой по почте работникам предприятия.
Если заменить текст процедуры zrp_расч_листки на приведенный здесь в zrp_расч_листки_MAIL, то расчетные листки (вариант 1) будут печататься и автоматически рассылаться по E-mail адресам, указанным в списке работников в модуле ОК.

Сама не пробовала пользоваться этой процедурой, т.к. необходимости не было, так что ничего не могу сказать о её работоспособности. Можете покопаться в этом направлении и доложить нам о результатах Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mike
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 07.04.2011
Сообщения: 255

СообщениеДобавлено: Пн Авг 15, 2011 09:06    Заголовок сообщения: Ответить с цитатой

Задача интересная, отпишусь только, что мы когда-то делали автоматическую отправку расчетных листков по почте, но не в формате pdf, а в текстовом. В боссе в одной из форм расчетных листков, как раз есть тот, который формируется не в crystal, а в блокноте. А в x-языке есть (процедура или функция), которая отправляет письмо с текстом.
В pdf не отправляли, по причине того, что не могли прикрепить файл к письму в боссе.

Вот она:
Цитата:
Mail
Назначение:

послать почту через простой MAPI.

Форма вызова:

xUtil (Mail адрес, тема, текст, без_диалога).

адрес - строка в кавычках или переменная (перед именем обязательно двоеточие). Адрес, кому послать сообщение.

тема - строка в кавычках или переменная (перед именем обязательно двоеточие). Тема сообщения.

текст - строка в кавычках или переменная (перед именем обязательно двоеточие). Текст сообщения.

без_диалога - строка в кавычках или переменная (перед именем обязательно двоеточие). Если не ноль, то письмо уходит без вызова почтового клиента.

Пример:

execute{

local адрес = rr@hotmail.com;

local тема = Subject line;

local текст = Message;

execute xUtil(mail :адрес, :тема, :текст);

};

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Spartak



Зарегистрирован: 18.03.2010
Сообщения: 180

СообщениеДобавлено: Пн Авг 15, 2011 09:57    Заголовок сообщения: Ответить с цитатой

rebel25 писал(а):
Цитата:
Дальше Autoit сам нажимает на кнопки и сохраняет файлы в pdf на диск.
Цитата:
Скажите, а как это сделать?



Ставите Autoit (http://www.autoitscript.com/site/autoit/)
Пишите скриптик чего-нибудть типа этого:
Цитата:

#cs ----------------------------------------------------------------------------

AutoIt Version: 3.3.0.0
Author: myName

Script Function:
Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

For $i = 1 To 100
;ожидание окна расчетного листочка, название которого начинается с "Pay sheet"
WinWaitActive("Pay sheet")

;Get window title, in case we need it
$window_title = WinGetTitle("[active]")

WinActivate($window_title,"")
ControlClick ($window_title, "", 203, "left", 1, 10, 10)

;окно выбора формата экспорта
WinWaitActive("Export")

;выбрать формат pdf и destination folder
ControlCommand ( "Export", "", 16401, "SetCurrentSelection", 0)
ControlCommand ( "Export", "", 16934, "SetCurrentSelection", 1)
Send('{ENTER}')

;в окне "Export Options" нажать Enter
WinWaitActive("Export Options")
WinActivate("Export Options","")
Send('{ENTER}')

;разбить строку названия окна
$array = StringSplit($window_title, ' _a_ ',1)

;выбор названия файла в окне
WinWaitActive("Choose export file")
ControlSetText("Choose export file","","Edit1", 'C:\999\'&$array[4]&'.pdf')
Send('{ENTER}')

;закрытие окна
WinClose($window_title)
WinWaitClose($window_title)

;пауза
MsgBox(4096, $window_title, $window_title, 3)
;Send('{ENTER}')
WinWaitClose($window_title)
WinActivate ("Pay sheet")

Next



P.S. В названии окна Crystal надо добавить, например, фио+таб. номер (для этого надо использовать параметр title оператора report)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 578
Откуда: Москва

СообщениеДобавлено: Пн Авг 15, 2011 11:27    Заголовок сообщения: Ответить с цитатой

Spartak
Спасибо.
Если вопрос с рассылкой ещё актуален, то можно попробовать серверную процедуру cssp_SendEmail из assembly MailLib.dll

CREATE PROCEDURE [dbo].[cssp_SendEmail]
@aFrom [nvarchar](4000),
@aTo [nvarchar](4000),
@aSubject [nvarchar](4000),
@aMessage [nvarchar](4000),
@aAttachments [nvarchar](4000)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [MailLib].[UserDefinedFunctions].[cssp_SendEmail]
GO
Я использую эту процедуру для рассылки без вложений - @aAttachments = ''
Но наверное можно подставить этот параметр и в цикле отправлять сохраненные файлы как вложения...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 578
Откуда: Москва

СообщениеДобавлено: Вт Дек 25, 2012 11:10    Заголовок сообщения: zrp_расч_листки_MAIL Ответить с цитатой

Отправляю расчетный листок вариант 1, Z процедурой zrp_расч_листки_MAIL. В письме текст листка съезжает и выглядит не красиво, меняется размер шрифта и его положение.
Если копировать вставить листок в блокнот то всё нормально, а если в письмо аутлука то выглядит как в примере (rtf,HTML,TEXT всё одинаково).
Не подскажите, какой программой лучше отправлять листки и с какими настройками?

---------------------------------------- ЗА ГОД ----------------------
|Доход(13%): 2207205.80|Льгота(13%): 3000.00|
| |Стандартные вычеты: 0.00|
|Доход(30%): 0.00|Льгота(30%): 0.00|
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 578
Откуда: Москва

СообщениеДобавлено: Вт Дек 25, 2012 13:58    Заголовок сообщения: Ответить с цитатой

Разобрался сам - нужно поставить шрифт для текстовых сообщений Courier New в аутлуке.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Spartak



Зарегистрирован: 18.03.2010
Сообщения: 180

СообщениеДобавлено: Пт Мар 28, 2014 14:43    Заголовок сообщения: Ответить с цитатой

Т.к. передача расчетных листков работникам по почте не удовлетворяет требованиям безопасности,
то можно также использовать SQL Server Reporting Services,
правда для этого надо:
1. Настраивать эти Reporting Services
2. "Нарисовать" отчет "Расчетный листок" как в БОСС-Кадровике с помощью Report Builder или Visual Studio
3. Опубликовать и поддерживать отчет на web
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 578
Откуда: Москва

СообщениеДобавлено: Пн Апр 14, 2014 12:58    Заголовок сообщения: Рассылка Crystal-овских листков почтой как вложение PDF Ответить с цитатой

Я научился отправлять Crystal-овски расчетные листки почтой как вложение PDF. Программа пока не идеальна, но она работает.
- Шаблон должен лежать на диске - если кто знает как дописать программу чтобы она брала шаблон из базы данных прошу дописать. Я вышел из положения так, один раз в программе выгружаю шаблони функцией report, а потом беру из этой папки.
- рассылку делает Outlook - хотелось бы отправлять как нибудь по другому, чтобы указывать произвольного отправителя, иначе светиться мой адрес, а мне это не нравится.
- в свойствах шаблона должна быть снята галка Save Data with report. С этой галкой вышла засада. Если она стоит, то всем работникам рассылался один и тот же расчетный лист, который разработчик смотрел в режиме preview. Если снять галку вложение вообще не формировалось. Я так и не понял до конца как рассылка произвелась со снятой галкой. По моему помогло то, что я пропустил отчет через босс-кадровик. Но точно не знаю. Кто знает прошу разъяснить особенности работы этой галки.

Хотелось бы в итоге получить удобную и надежную программу. Ведь рисовать листочки в кристале очень быстро (в отличии от Z языка). У меня например несколько вариантов листков (не только для зарплаты, но и для различных премий) и иногда появляются новые.

SCAN @q
Перебираю селект с данными для отчета по всем работникам
Execute
{
Вставляю одну строку в таблицу для кристала по каждому работнику

VB
{
Dim email
};
Let VB.email := @q:email;

VB
{
Dim Appn
Dim Report
Dim FSO
Dim Path
Dim ReportName
Dim OutputFile
Dim DiskFilePath
Dim Param1
Dim Param1Name
Dim EmailAddr
Dim EmailAttach
Dim FullOutputPath
Dim EmailSubj
Dim EmailBody

On Error Resume Next

'**********************************************************************************************
'Define variables
'**********************************************************************************************
ReportName = "C:\Users\user1\AppData\Roaming\Relational Programming Inc\RP Server\11297\Cache\user_svod_mail1.rpt"
DiskFilePath = "C:\temp\"
OutputFile = "Сводный лист доходов"
FileFormat = ".pdf"
EmailAddr = email
EmailSubj = "Сводный лист доходов"
EmailBody = "Сводный лист доходов находится во вложении"

'**********************************************************************************************
'Open report
'**********************************************************************************************
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Appn = CreateObject("CrystalRuntime.Application")
Set Report = Appn.OpenReport(ReportName)

Path = OutputFile '& "_" & Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now) & Second(Now)
FullOutputPath = DiskFilePath & Path & FileFormat

'**********************************************************************************************
'Report parameters
'**********************************************************************************************
'Report.ParameterFields.GetItemByName(email).AddCurrentValue CStr(email)
Report.DiscardSavedData
Report.EnableParameterPrompting = False

'**********************************************************************************************
'Report format
'**********************************************************************************************
Report.ExportOptions.FormatType = 31 ' crEFTPortableDocFormat
Report.ExportOptions.DestinationType = 1 ' crEDTDiskFile
Report.ExportOptions.PDFExportAllPages = True
Report.ExportOptions.DiskFileName = FullOutputPath
Report.Export (False)


'**********************************************************************************************
'Email report
'**********************************************************************************************
Set objOutl = CreateObject("Outlook.Application")
Set objMailItem = objOutl.CreateItem(olMailItem)
objMailItem.Subject = EmailSubj '& Mid(FullOutputPath, 18, 29)
objMailItem.Body = EmailBody
objMailItem.Recipients.Add EmailAddr
objMailItem.Attachments.Add FullOutputPath
objMailItem.Send

'**********************************************************************************************
'Object clean-up
'**********************************************************************************************
Set FSO = Nothing
Set Appn = Nothing
Set Report = Nothing
Set objOutl = Nothing
Set objMailItem = Nothing
};

};
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> Crystal Reports Часовой пояс: GMT + 4
Страница 1 из 1

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


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU