Независимый форум, посвященный системе БОСС-Кадровик и всему, что с ней связано
|
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Spartak
Зарегистрирован: 18.03.2010 Сообщения: 185
|
Добавлено: Вт Авг 24, 2010 14:13 Заголовок сообщения: Отправка отчетов Crystal по почте |
|
|
Коллеги!
Есть задача - отправлять зарплатные листки по почте.
Пока что сделал так:
В цикле появляются окна Crystal с расчетными листками.
Дальше Autoit сам нажимает на кнопки и сохраняет файлы в pdf на диск.
Outlook рассылает пользователям расчетные листки по почте.
Может быть кто-нибудь знает, как вызывать из Босса Crystal на отправку по почте? |
|
Вернуться к началу |
|
 |
rebel25 Большой шоколадный орден

Зарегистрирован: 06.10.2008 Сообщения: 580 Откуда: Москва
|
Добавлено: Пт Авг 12, 2011 18:32 Заголовок сообщения: |
|
|
Цитата: | Дальше Autoit сам нажимает на кнопки и сохраняет файлы в pdf на диск. |
Скажите, а как это сделать? |
|
Вернуться к началу |
|
 |
zhenya17
Зарегистрирован: 04.02.2009 Сообщения: 190 Откуда: Кемерово
|
Добавлено: Вс Авг 14, 2011 20:09 Заголовок сообщения: Re: Отправка отчетов Crystal по почте |
|
|
Spartak писал(а): | Коллеги!
Есть задача - отправлять зарплатные листки по почте.
Пока что сделал так:
В цикле появляются окна Crystal с расчетными листками.
Дальше Autoit сам нажимает на кнопки и сохраняет файлы в pdf на диск.
Outlook рассылает пользователям расчетные листки по почте.
Может быть кто-нибудь знает, как вызывать из Босса Crystal на отправку по почте? | В моей версии БОСС-Кадровика есть z-процедура "zrp_расч_листки_MAIL". Цитирую её описание: Цитата: | Печать с автоматической рассылкой по почте работникам предприятия.
Если заменить текст процедуры zrp_расч_листки на приведенный здесь в zrp_расч_листки_MAIL, то расчетные листки (вариант 1) будут печататься и автоматически рассылаться по E-mail адресам, указанным в списке работников в модуле ОК. |
Сама не пробовала пользоваться этой процедурой, т.к. необходимости не было, так что ничего не могу сказать о её работоспособности. Можете покопаться в этом направлении и доложить нам о результатах  |
|
Вернуться к началу |
|
 |
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 Сообщения: 185
|
Добавлено: Пн Авг 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 Сообщения: 580 Откуда: Москва
|
Добавлено: Пн Авг 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 = ''
Но наверное можно подставить этот параметр и в цикле отправлять сохраненные файлы как вложения... |
|
Вернуться к началу |
|
 |
rebel25 Большой шоколадный орден

Зарегистрирован: 06.10.2008 Сообщения: 580 Откуда: Москва
|
Добавлено: Вт Дек 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| |
|
Вернуться к началу |
|
 |
rebel25 Большой шоколадный орден

Зарегистрирован: 06.10.2008 Сообщения: 580 Откуда: Москва
|
Добавлено: Вт Дек 25, 2012 13:58 Заголовок сообщения: |
|
|
Разобрался сам - нужно поставить шрифт для текстовых сообщений Courier New в аутлуке. |
|
Вернуться к началу |
|
 |
Spartak
Зарегистрирован: 18.03.2010 Сообщения: 185
|
Добавлено: Пт Мар 28, 2014 14:43 Заголовок сообщения: |
|
|
Т.к. передача расчетных листков работникам по почте не удовлетворяет требованиям безопасности,
то можно также использовать SQL Server Reporting Services,
правда для этого надо:
1. Настраивать эти Reporting Services
2. "Нарисовать" отчет "Расчетный листок" как в БОСС-Кадровике с помощью Report Builder или Visual Studio
3. Опубликовать и поддерживать отчет на web |
|
Вернуться к началу |
|
 |
rebel25 Большой шоколадный орден

Зарегистрирован: 06.10.2008 Сообщения: 580 Откуда: Москва
|
Добавлено: Пн Апр 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
};
}; |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|