Здравствуйте! Я в террасофте совсем новичок, только начинаю изучать. Версия ТС - 3.4.0.38. По форуму искала, вроде подходящего решения не нашла, либо не поняла что это "оно". Подскажите пожалуйста!
Была поставлена задача - по расписанию формировать файл с отчетом для Excel (есть аналог для работы пользователя в FR), выкладывать его в сеть и отправлять группе лиц.
Вроде как все решила через SQL, правда экселевский файл сформировала через spread xls на xml.
Несущественная проблема - при открытии на некоторых компьютерах ругается на несоответствие формата, с этим можно жить, но вот на телефонах этот файл не открывается в приложениях, но очень нужно.
В итоге встал вопрос о другом формате.. Возможно ли как то через sql или сам террасофт выполнить по расписанию формирование файла в формате xlsx или pdf (редактируемый)? Либо конвертацию сделать, может что-то вроде - открыть файл в sql через sp_OACreate 'Excel.Application', и сохранить его в xlsx..
Нравится
С помощью Terrasoft, также можно выполнить такую задачу, для этого необходимо на сервер создать задачу (Task Scheduler), которая будет запускаться по времени и вызывать Terrasoft командой TSClient.exe /wnd=wnd_ExportRep.
Где в окне wnd_ExportRep будет прописана логика экспорта.
Обратите внимание на сервисы scr_MSExcelLibrary, scr_MSExcelLibraryConsts, а также на сервис scr_UserReportCommon, в особенности на функцию GetExcelObject - которая возвращает Com объект на Excel.
Также можно изучить работу сервиса scr_ImportExcelWizardUtils, который автоматически создает отчеты в Excel, на основании его работы можете создать свой экспорт.
Хороший вариант! Спасибо! Правда мне очень много стоит изучить для реализации подобного..
А клиент терры будет открыватся на сервере или только процесс висеть? Если есть возможность подсказать подобные примеры решения буду очень признательна.
Пробовала запускать excel на террасофте через var ExcelApp = new ActiveXObject("Excel.Application");
но система выругалась на меня и клиент вылетел..
Можете взять мой пример запуска коннектора и создание Excel файла.
Алгоритм следующий:
1. Создайте файле с расширением js
2. Пропишите в нем следующий код:
function WSLog(LogText) { WScript.stdout.WriteLine(LogText); } function GetExcelObject() { var Excel = new ActiveXObject('Excel.Application'); var Excel_wb = Excel.Workbooks.Add(); Excel.Sheets(1).Name = "Данные"; var SheetsCount = Excel.Sheets.Count; for (var i = 2; i <= SheetsCount; i++) { Excel.Sheets(2).Delete(); } Excel.Visible = false; return Excel; } function Main() { var args = WScript.arguments; var ConfigurationName = "TS_3.4.1.113_XRM_SD_SoftKey_ENU_Tereshchuk"; var AuthenticationMode = 1; //1 - DatabaseServer, 0 - Windows var UserName = "Supervisor"; var UserPassword = ""; var ExcelFileName = 'C:\\Temp\\TestExcel.xlsx'; WSLog("Start!"); var Connector = new ActiveXObject('TSObjectLibrary.Connector'); var Config; if (AuthenticationMode) { Config = Connector.OpenConfigurationByName(ConfigurationName, AuthenticationMode, UserName, UserPassword); } else { Config = Connector.OpenConfigurationByName(ConfigurationName, AuthenticationMode); } var Excel = GetExcelObject(); Excel.Sheets(1).SaveAs(ExcelFileName); Excel.Visible = true; Connector.Logoff(); WSLog("Finish!"); } Main();
3. Создайте файл с расширением bat и пропишите в нем код:
%WinDir%/SysWOW64/cscript.exe /d D:\Projects\JS\RunTS.js
4. Запустите bat файл
Исходники: js.zip
Спасибо!
Так как задача была горящей, а 'Excel.Application' наотрез отказывается работать, временно решила через excelcnv.exe. Там правда очень много нюансов, за счет чего код получился совсем извращенным, но главное рабочим.. позже вернусь к приведению в нормальный вид ) попробую все-таки решить через террасофт по #1 предложенному ответу.