Коллеги, добрый вечер!

Подскажите идеи пжлст для реализации следующей задачи:

в разделе Excel отчеты есть отчет. Его нужно отправлять каждый день по расписанию на определенный email.

 

Спасибо!)

Нравится

7 комментариев
Лучший ответ

Елена К пишет:

А немного поправив, это вы что примерно имеете ввиду

Пока не могу сказать точно. Эта задача у нас в проекте тоже стоит, но пока не запущена в анализ и разработку. Я просто описал направление решения. Возможно, в сентябре смогу рассказать детально

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

Насколько я понимаю раздел Excel отчеты это не базовый функционал?

Посмотрите как в вашем разделе происходит запуск формирования отчета (возможные варианты запск вэб сервера, запуск БП) Вам нужно создать новый БП который будет запсукатся по таймеру формировать отчет и отправлять по почте .

Отправка файлов в БП на этом форуме обсуждалась не раз и особой сложности не представляет.

По формированию вашего отчета подсказать затрудняюсь тк это или ваш кастомный раздел или вы ставили какое то приложение с маркетплэйса (возможно вам ктото дорабатывал систему). Если ставили какое то расширение для работы с отчетами укажите какое и ссылку на него иначе смотрите как у вас происходит формирование отчета, скорее всего этот процесс можно автоматизировать!

Григорий Чех,

Григорий, это приложение https://marketplace.terrasoft.ru/app/excel-reports-builder-bpmonline, выпущенное Terrasoft. При запуске  созданного в  разделе "Excel отчеты" отчета происходит скачивание файла Excel. У нас вопрос как через БП сгенерировать cамо вложение, а там дальше мы с ним уже разберемся). Спасибо!

 

Елена К,

Мы, например, используем другое дополнение -

https://marketplace.terrasoft.ua/app/reports-generator-bpmonline

И там отчеты, скорее всего сохраняются, так как, в результате генерируется ссылка в уведомлениях, и только оттуда их можно скачать.

Кроме того, в том же дополнении есть процесс запуска генерации отчета по расписанию ("Запуск формирования отчета по правилу"). Немного поправив его, можно файл не сохранять на диске сервера (как в оригинале), а прикреплять к письму, например

Владимир Соколов,

Владимир, да , это приложение тоже стоит, просто меньше используется, чем первое.  А немного поправив, это вы что примерно имеете ввиду?). 

Елена К пишет:

А немного поправив, это вы что примерно имеете ввиду

Пока не могу сказать точно. Эта задача у нас в проекте тоже стоит, но пока не запущена в анализ и разработку. Я просто описал направление решения. Возможно, в сентябре смогу рассказать детально

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

Елена К,

Судя по принскрину приведенному Владимиру,вы можете например создать активность с типом исходящее письмо и отчет не записывать на диск а прикреплять к этой активности и отправлять ее (Как отправлять письмо с вложениями неоднократно в этом форуме обсуждалось)

Коллеги, спасибо! будем пробовать.Как получиться, поделимся).

Показать все комментарии

1. При установке дополнения Advanced excel reports for bpm’online на дэмку, было сообщение, что дополнение установлено не корректно. Но судя по логу процесса, ошибок при установке не было.

2. Отчет сформировался, но при скачивании пишет, что "такая-то страница не найдена" error 404.

Было такое у кого-то? как с этим бороться?

Нравится

2 комментария
Лучший ответ

В описании к приложению указано что:

- функциональность формирования отчетов по установленному расписанию и сохранения в указанную папку доступна только для сайтов, развернутых on-site

Скорее всего это связано с ограничениями по безопастности, на использование (загрузку) внешних (не входящих в поставку дистрибутива) библиотек :)

Напишите о возникших проблемах в поддержку данного дополнения по адресу bpmonlinelabs@bpmonline.com.

В описании к приложению указано что:

- функциональность формирования отчетов по установленному расписанию и сохранения в указанную папку доступна только для сайтов, развернутых on-site

Скорее всего это связано с ограничениями по безопастности, на использование (загрузку) внешних (не входящих в поставку дистрибутива) библиотек :)

Показать все комментарии

Здравствуйте, не могу понять как создается шаблон для excel выгрузки. То есть какие идентификаторы должны стоять в колонках, чтобы система поняла, что туда надо выгружать?

Нравится

6 комментариев
Лучший ответ

Скорее всего вы поставили это дополнение https://marketplace.terrasoft.ru/app/excel-reports-builder-bpmonline

Тогда в шаблоне колонки попадают в том порядке в котором вы указали в дизайнере отчета и вы можете только задать/указать форматирование колонок

О какой выгрузке вы спрашиваете?, уточните как вы ее запускаете с какого раздела.

Григорий Чех,

 

Ринат вспомните какое расширение от партнеров для отчтетов в Эксель вы ставили и запросите у разработчика документаию 

Скорее всего вы поставили это дополнение https://marketplace.terrasoft.ru/app/excel-reports-builder-bpmonline

Тогда в шаблоне колонки попадают в том порядке в котором вы указали в дизайнере отчета и вы можете только задать/указать форматирование колонок

Если вам нужно чтото более сложное используйте построение excel файлов через библиотеки OpenXML (см пример) или аналогичные библиотеки

Григорий Чех, Спасибо большое, очень помогли.

Показать все комментарии

Здравствуйте.
Помогите решить один вопрос:
Существует отчет выводимый, с помощью фильтра, в таблицу Excel. Возможно ли добавить в контекстное меню, вызываемое правой кнопкой мыши, этот отчет отдельным пунктом.
Например:
1. заходим в список физ.лиц
2. на нужном клиенте нажимаем ПКМ
3. в контекстном меню выбираем пункт "Действия -> Отчеты"
4. выбираем нужный отчет
5. формируем таблицу Excel

Спасибо.

Нравится

5 комментариев

Здравствуйте, Евгений!

1) Запустите …\bin\TSAdmin.exe, воспользовавшись поиском (Ctrl+F) в дереве сервисов найдите сервис wnd_ContactGridArea;
2) Откройте найденный сервис wnd_ContactGridArea на редактирование и в дереве компонентов на закладке «Не визуальные» создайте новый: ActionMenuItem;
3) Для отладки свойство IsVisible оставьте сначала True, затем перейдя на вкладку «События» двойным кликом по полю OnPrepare добавить новый обработчик;
4) Обработчик добавится в сервис src_ContactGridArea в функцию ActionMenuItemOnPrepare(),
function ActionMenuItemOnPrepare(ActionMenuItem)
5) По аналогии как это сделано с реестром записей, добавьте логику создания опций меню:
function ActionMenuItemOnPrepare(ActionMenuItem) {

BuildTaskActionMenu();

}

6) BuildTaskActionMenu() – функция, аналогичная BuildActionMenu() сервиса src_MailCommon.
В ней реализуйте логику формирования меню действий для вашей детали, с соответствующим функционалом.

Также, чтобы добавить переход на новый раздел, Вам необходимо в теле функции FillReferencesDictionary скрипта scr_WindowUtils добавить ссылку следующего вида:

RefDictionary.Add('ds_***', 'wnd_***Workspace');

Более подробно описано в приведенных темах на Community:
http://www.community.terrasoft.ru/forum/topic/2087
http://www.community.terrasoft.ru/forum/topic/1073
http://www.community.terrasoft.ua/forum/topic/7319

Дмитрий, спасибо за ответ.
Но пункты 5 и 6 поставили в тупик.

Евгений,

После создания ActionMenuItem, в теле функции обработки события OnExecute элемента ActionMenuItem нужно реализовать вывод отчета. В качестве примера используйте функцию ReportMenuItemExecute сервиса scr_ReportUtils.
А именно:

1. Если отчет строится для выделенных записей, пример вывода отчета Excel:

ProcessPrepareExcelReport(QueryID, WorkspaceWindow, SelectedIDs);

2. Если отчет строится для всех записей, пример вывода отчета Excel:

ProcessPrepareExcelReport(QueryID, WorkspaceWindow);

Где:
QueryID - идентификатор пользовательского запроса, на основании которого строится отчет.
WorkspaceWindow - объект окна раздела.
SelectedIDs - массив выделенных записей реестра.

Наталья, спасибо за ответ.
Но я после пункта 4 в ответе от Дмитрия не понимаю, что нужно сделать

Евгений, я привела полную реализацию, которую следует выполнить вместо действий, описанных в 4-м и далее пунктах ответа Дмитрия.

Показать все комментарии

Добрый день! При импорте отчета в excell числовое значение поля (19 символов) отображается некорректно (1 во вложении). При попытке поменять формат ячейки в готовом отчете число отображается полностью, но снова некорректно (последние цифры числа - нули, а должны быть отличными от нуля) 2. во вложении. Помогите исправить эту ошибку=(

Нравится

7 комментариев

Здравствуйте, Олеся.

Номер договора - это текстовое поле. В Excel Вы, скорее всего, переводили формат колонки в числовой (Number). Но максимальное значение, которое может хранить этот тип данных - 2 147 483 647. Переводите в текст.

Здравствуйте, Максим! Если переводить формат ячейки в текст, то поле остается некорректным, 3,163E+17=(

Грубо говоря, значение ячейки импортируется неверно, 316300027614000000, нули вместо последних цифр, по-умолчанию.

Олеся, а уточните, пожалуйста версию и сборку, которую используете.

Максим, Версия: 3.3.2.252

Олеся, воспроизвел ситуацию на коробочной версии. Вероятно, при подготовке Excel файла не учитывается формат колонки в наборе данных. В версии 3.4.1 этого уже нет, постараюсь спустить необходимый функционал, если не удастся, зарегистрируем обращение в департамент разработки.

Спасибо, Максим, очень жду!

Показать все комментарии

Добрый день. Возникла проблема с фильтром отчета в разделе. В запросе прописан фильтр пользователя, запрос прикреплен к отчету типа Excel. А при выборе отчета в разделе, фильтр не всплывает, выдается сразу отчет в Excel, естественно не фильтрованный. В чем может быть проблема?

Нравится

1 комментарий

Фильтр будет отображаться только в том случае, если отчет строится по всем записям.
Проверьте чему установлено свойство "Тип фильтрации" отчета.

Показать все комментарии

Используя посты 7302 и 8466 на форуме Terrasoft подкорректировал и доработал функционал создания отчета Excel с использованием шаблона.
Мои основные доработки касались реализации функционала вставки табличной части отчета (например, для возможности вывода детали продукты документа), остальные изменения касались исправлений ошибок и совершенствования кода для версии 3.4. Ниже я опишу как формируется табличная часть отчета.
Тестировалось пока только на MS Excel 2003.
В качестве основы бралась базовая конфигурация Terrasoft XRM 3.4.0.130.

Форма добавления отчета Excel в системе была доработана с возможностью указания шаблона Excel. Выглядит она вот так:
Окно редактирования отчета Excel

Чтобы использовать отчет Excel с шаблоном, в карточке отчета небоходимо проставить признак "Отчет по шаблону" и загрузить шаблон.
Excel шаблон можно добавить в отчет либо через окно редактирования отчета (Шаблон -> Изменить шаблон отчета), либо из окна Excel, используя панель инструментов Terrasoft.

Добавление шаблона из окна Excel:

1. Открыть сохраненную ранее заготовку Excel шаблона
2. Соединиться с Terrasoft, нажав кнопку "Соединить":
соединить
3. Далее меню "Операции" -> "Связать с отчетом":
связь с отчетом
4. Выбрать отчет Excel для связки:
выбор отчета
5. Excel шаблон изменяется, сохраняется и при его закрытии Terrasoft задаст вопрос о сохранении этого шаблона в базу данных CRM:
вопрос

Создание шаблона:

1. Для вставки поля используется кнопка "Вставить поле" панели инструментов Terrasoft:
Пример шаблона
2. Появляется окно с полями из запроса, которая содержит поля главной таблицы и поля деталей запроса:
Пример шаблона
3. В шаблон добавляются поля главной таблицы и добавляются поля деталей для вывода табличной части, например, продуктов.

Пример внешнего вида шаблона отчета:

Пример шаблона
(см. shablon.xls)

Краткий алгоритм формирования отчета Excel по шаблону:

1. Заполняются все поля, которые берутся из основной таблицы
2. Если в какой-либо строчке встречается использование поля из табличной части отчета, то эта строчка считается шаблонной.
2.1. Далее эта строчка копируется N раз и заполняется данными табличной части отчета, где N - количество записей табличной части
2.2. Для нумерации строк табличной части используется шаблон #NN>
3. Все вставки, где используется, #CuurentDate> заменяются текущей датой, например, 21.11.2012.

Пример полученного результата:

пример отчета
(см. rezultat.xls)

Все изменения, внесенные в стандартные скрипты авторами этой доработки, выделены такими блоками:

// ExcelTemplate. [Added/Edited]
........
// * ExcelTemplate

Список измененных сервисов прикреплен ниже (см. exceltemplate.rar).

Как и писалось ранее в родительских постах, перед "накатыванием" этих сервисов настоятельно рекомендуется сделать бэкап базы.
Функционал предоставляется как есть и используется пользователем без каких-либо претензий к тем, кто участвовал в разработке этого функционала :smile:

Можно перед загрузкой сервиса сравнить его с текущим сервисом вашей конфигурации используя утилиту сравнения, например, WinMerge (бесплатная).

В скриптах используется функция вызова функций из скрипта, который не подключен (я разместил ее в scr_Utils):

function ExecuteScriptMethod(ScriptName, MethodName) {
     var Script = GetSingleItemByCode(ScriptName);
     var CodeObject = Script.ScriptControl.CodeObject;
     var Arg;
     var Args = new Array();
     var FuncDict;
     var CustomFunction;
     if (Assigned(Connector.Attributes('FuncDict'))) {
          FuncDict = Connector.Attributes('FuncDict');
     } else {
          FuncDict = GetNewDictionary();
     }
     if (FuncDict.Exists(ScriptName+'_'+MethodName)) {
          CustomFunction = FuncDict(ScriptName+'_'+MethodName);
          for (var i = 2; i arguments.length; i++) {
               Args.push(arguments[i]);
          }
     } else {
          var Code = 'return CodeObject.'+MethodName+'(';
          for (var i = 2; i arguments.length; i++) {
               if (i > 2) {
                    Code += ',';
               }
               Args.push(arguments[i]);
               Code += 'Args['+(Args.length-1)+']';
          }
          Code += ');';
          CustomFunction = new Function('CodeObject', 'Args', Code);
          FuncDict(ScriptName+'_'+MethodName) = CustomFunction;
          Connector.Attributes('FuncDict') = FuncDict;
     }
     return CustomFunction(CodeObject, Args);
}

Дальнейшая доработка приветствуется :wink:

Даром получили, даром давайте :twisted: (с) Христос

Нравится

Поделиться

1 комментарий

"Кошкаров Андрей" написал:Даром получили, даром давайте (с) Христос

Спасибо огромное за то что поделились опытом, я буду переносить решение на 3.3.2 и заодно расскажу про подводные камни. Вы сделали отличную работу - спасибо вам еще раз!

Показать все комментарии

Добрый день!

При построении пользовательских Excel отчетов, точность итоговой строки, по-умолчанию, равна четырем знакам после запятой, в случае если итоговое число не целое, и ни одному знаку после запятой, если число целое.

Изменить точность итоговой строки, при построении Excel отчета можно следующим образом:

1. Открыть TS Administrator.
2. Открыть скрипт src_UserReportCommon (Common \ User Reports).
3. Найти функцию function GetExcelValueByDataField(DataField, IsCalcSummary, TotalSummaryType)
и изменить ее содержимое следующим образом:

1

4. Сохранить изменения и перезапустить клиентское приложение Terrasoft.

Нравится

Поделиться

1 комментарий

картинка потерялась

Показать все комментарии

Доброе время суток! Подскажите, пожалуйста, какие есть методы редактирования ячеек.
Например ExcelObject.Cells(a,b).Value -- значение, это понятно
ExcelObject.Cells(a,b).Font -....какие есть внутри методы?
ExcelObject.Cells(a,b).Style -....также, что внутри?. как называется "метод взять в рамки"? объединить ячейки? как изменить фоновый цвет? Выровнять посередине и тд.тп....

Нравится

2 комментария

Здравствуйте, Роман!

Для того, чтобы просмотреть все методы, касающиеся работы с MS Excel, Вы можете открыть файл MS Excel. На панели инструментов открыть [Сервис] -> [Макрос] -> [Редактор Visual Basic]. Затем в появившемся окне на панели иснтрументов найти кнопку "Object Browser", выбрать библиотеку MS Excel и просмотреть все возможные методы.
Методы MS Excel Вы можете использовать в скриптах конифгурации Terrasoft CRM для реализации необходимых Вам функциональностей.
Для того, чтобы корректно использовать методы MS Excel в конфигурации приложения Terrasoft CRM, высылаем Вам ниже пример, по аналогии с которым Вы сможете реализовать необходимую Вам функциональность:

var ExcelApplication = new ActiveXObject('Excel.Application');
var WorkBook = ExcelApplication.WorkBooks.Add();
var Sheet = WorkBook.ActiveSheet;
Sheet.Cells(VPosition -1 , 2) = 'ÔÈÎ';
Sheet.Cells(VPosition - 1 , 2).Borders(7).LineStyle = 1; // leftest border
Sheet.Cells(VPosition - 1 , 2 ).Borders(8).LineStyle = 1; // upper border
Sheet.Cells(VPosition - 1 , 2).Borders(9).LineStyle = 1; // lower border
var FileNameValue = 'Test.xls';
Sheet.SaveAs(FileNameValue);
Sheet.Application.Quit();

Желаем удачи!

Показать все комментарии