MoneyS3: Экспорт печатных документов и отправка по электронной почте.

Задача:

Имеется MoneyS3 + MonExcel + Thunderbird (версии 2.0.0.21)
Требуется сгенерировать xls файл и отправить по почте.

Для этого нужно на интересующем документе зайти в диалог печати и нажать кнопку экспорт Export.

Форма печати
Форма печати
Диалог выбора процедуры экспорта
Диалог выбора процедуры экспорта
Список процедур экспорта
Список процедур экспорта
Подменю управления записями процедур экспорта
Подменю управления записями процедур экспорта
Форма редактирования полей записи процедуры экспорта. Выбор формата экспортируемого файла.
Форма редактирования полей записи процедуры экспорта. Выбор формата экспортируемого файла.
Форма выбора полей передаваемых в вызываемый процесс и для формирования имени выходного файла
Форма выбора полей передаваемых в вызываемый процесс и для формирования имени выходного файла
Форма редактирования полей записи процедуры экспорта
Форма редактирования полей записи процедуры экспорта
Предэкспортная диалоговая форма для просмотра и возможно изменения параметров.
Предэкспортная диалоговая форма для просмотра и возможно изменения параметров.
MonExcel Шаблон как видно уже сопоставлен файлу. Это не первый запуск.
MonExcel Шаблон как видно уже сопоставлен файлу. Это не первый запуск.
Сопоставление шаблона
Сопоставление шаблона
Результат работы готовое письмо. Поправить только адрес и можно отправлять.
Результат работы готовое письмо. Поправить только адрес и можно отправлять.
Вот результат после отработки скрипта. Файлы остаются как есть.
Вот результат после отработки скрипта. Файлы остаются как есть.
Вот теперь файлы там где нужно.
Вот теперь файлы там где нужно.

Скрипт который выполняет межутилитную работу можно взять здесь.

Программа MonExcel написана также с отклонениями от требований Windows NT/XP/Vista. Она ожидает допуска на запись в каталоге где находятся бинарные файлы. Поэтому на правильно настроенной системе приходится разрешать пользователям модифицировать файл конфигурации.

При пользовании программой MonExcel в многопользовательском режиме очень важно следить за шаблонами. Их может по ошибке перенастроить другой пользователь. Шаблон MoneyS3 который в диалоге экспорта называется и как следствие имя файла из MoneyS3 попадает в соответствие с шаблоном MonExcel только по выбору пользователя. Это нужно сделать хотя бы один раз. После чего информация: ИМЯ ФАЙЛА MONEY <=> ШАБЛОН MONEXCEL будет записана в файл конфигурации convert.tab

Файл конфигурации утилиты MonExcel в базовой установке находится
“C:\Program Files\LAN Consult\MonExcel\convert.tab”
Он имеет следующий формат:
“CSVName”,”LstFileName”,
“FAKTURA VYSTAVENA.CSV”,”VFAKT_CM.LST”,
“FORMULAR K PRIZNANI DPH.CSV”,”UCDPHEU.LST”,
“HLAVNI KNIHA.CSV”,”UCHKNIHA.LST”,
“ROZVAHA ZA OBDOBI.CSV”,”UCROZVAH.LST”,
“SEZNAM DOKLADU PRO PRIZNANI DPH.CSV”,”UCDPHEU.LST”,
“VYSLEDOVKA.CSV”,”UCVYSLED.LST”,
“VYUCTOVANI MEZD.CSV”,”VYUCTO.LST”,

Содержимое его может немного отличаться от приведённого, но суть ясна: первое поле – имя файла экспорта, второе поле – имя шаблона утилиты MonExcel. Изначально файл содержит только первую строку и заполняется одной записью только тогда, когда пользователь нажимает кнопку экспорта. Если запись уже присутствуе в файле, но отличается – она перезаписывается.

Проблемой многопользовательской работы алгоритма на терминальном сервере будет то, что при одновременной работе пользователей с экспортом одного и того же документа может произойти его подмена. Например пользователь 1 запускает экспорт – формируется файл csv. Затем отрабатывает MonExcel и формирует xls файл который требуется отправить. Запускается ThunderBird и ждёт пока пользователь исправит адрес и нажмёт кнопку отправить. И только в этот момент произойдёт чтение файла с диска. И как раз до этого момента пользователь 2 формирует отчёт используя тот же шаблон экспорта. Он имеет тоже имя и перезаписывает уже существующий cvs файл. Как результат пользователь 1 и 2 отправят один и тот же файл. Чтобы хоть как-то смягчить эту проблему я в скрипте я изменил заложенный мной сразу алгоритм. Сейчас создаваемый MoneyS3 файл лишь короткий промежуток времени существует на диске в общем каталоге. Как только скрипт получает управление файл сразу переносится во временный каталог пользователя, который в NT/XP/Vista у каждого свой. Когда пользователь при экспорте получает сообщение – файл уже существует – значит что кто-то пользуется экспортом, либо скрипт завершился некорректно и не смог удалить файлы. В любом случае пользователь должен спросить у остальных – пользуется ли кто-то экспортом. Таким образом возможность отправить не тот файл минимальная.

Leave a Reply