Вопрос

Всем доброго времени суток! 

Столкнулся со следующей проблемой, у нас в системе были кастомные Excel отчеты, выгружались посредствам библиотеки ClosedXml, и все работало, но с версии 7.14 перестало работать. Высыпаются ошибки в зависимостях:

Terrasoft.Web.Common.ServiceModel.ErrorHandler ProvideFault - Метод не найден: "System.IO.Packaging.PackageProperties DocumentFormat.OpenXml.Packaging.OpenXmlPackage.get_PackageProperties()".
System.MissingMethodException: Метод не найден: "System.IO.Packaging.PackageProperties DocumentFormat.OpenXml.Packaging.OpenXmlPackage.get_PackageProperties()

Пробовал устанавливать разные версии библиотеки не помогло.

Кто работал с библиотекой ClosedXml в bpm'online, может знает какую версию использовать?

Текущая версия crm 7.14.4 

заранее благодарен.

У меня такой же вопрос

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

Столкнулся, к сожалению. пришлось все переписывать... В ClosedXML используются библиотеки DocumentFormat.OpenXml, в версии 7.14 видимо обновили версию библиотеки/зависимых библиотек и все. Мучался часа 3 с зависимостями, потом плюнул и переписал на OpenXml генерацию xls

Столкнулся, к сожалению. пришлось все переписывать... В ClosedXML используются библиотеки DocumentFormat.OpenXml, в версии 7.14 видимо обновили версию библиотеки/зависимых библиотек и все. Мучался часа 3 с зависимостями, потом плюнул и переписал на OpenXml генерацию xls

А что говорит по этому вопросу служба поддержки? Что они рекомендуют?

Алла Савельева,

Здравствуйте! Пока ничего. Анализирует предоставленный мною лог.

Нигрескул Алексей,

Поделитесь потом здесь ответом, очень интересует данная тема. Спасибо)

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день! 

На системе установлено приложение Excel reports builder for bpm’online, выпущенное terrasoft (отчетность, выгружаемая в эксель). Оно использует библиотеку EPPlus.dll И мы в нашей разработке использовали  эту же библиотеку, но версии этой dll в этих пакетах разные (у нас более новая).

Сейчас при установке решения на систему с Excel reports builder for bpm’online, возникает ошибка из-за разницы в версиях библиотек.

Как можно урегулировать этот конфликт?

Благодарю!

 

У меня такой же вопрос

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

 Решение опубликовано не Terrasoft, а bpmonline labs. Вам нужно уточнить новую версию библиотеки и написать на email поддержки решения — bpmonlinelabs@bpmonline.com

Зверев Александр,

Александр, добрый день! Спасибо за отклик. Там смогут предоставить пакеты с новой версией библиотеки?

Елена, попробуйте написать на указанный адрес и спросить. Может, такое обновление уже есть, а может, запланируют после Вашего обращения.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Привет. 
TS 3.x
Есть документ Excel(.xls) открытый вот так:

var Excel = new ActiveXObject('Excel.Application');
Excel.Workbooks.Open(filePath);

У кого есть опыт работы, подскажите как:
1. Добавить пустой рядок в качестве 1-го(подвинув остальные вниз).
2. Заполнить ячейки этого рядка(припустим первых 10), интересует именно доступ.
3. Настроить ширину колонок.

*VS Debugger виснет при попытке взглянуть в объект.
**Нормальной документации не нашел, если у кого-то завалялась - буду благодарен

У меня такой же вопрос

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

Проще всего в Excel запустить запись макроса, проделать всё вышеупомянутое, а потом изучать сгенерированный код на VBA и переводить его на синтаксис JS.

Потыкал и нашел.
 

try {
        var excel = new ActiveXObject('Excel.Application');
        var workBooks = excel.Workbooks.Open(TempFileName.Value);
        var excelSheet = workBooks.Worksheets(1);
        excelSheet.Activate();
        excelSheet.Range('A1:K1').Insert(-4121);
        excelSheet.Range('A1').Formula = 'Ячейка А1';
        excelSheet.Range('B1').Formula = 'Ячейка А2 ';
    //  ......
        excelSheet.Range('K1').Formula = 'Ячейка К1';
        excelSheet.Columns('A:K').AutoFit();
        workBooks.Save();
 
    }
    finally {
        excelSheet = System.EmptyValue;
        workBooks = System.EmptyValue;
        excel.Quit();
        excel = System.EmptyValue;
        CollectGarbage();
    }
    

1.Добавление пустого рядка было сделано через Insert со смещением вниз.
2. Заполнение через метод Formula об. Range
3. Использовал AutoFit так как изменять значения Width или ColumnWidth не давало(read-only).
*Ещё обратите внимание на блок finally при таких действиях процесс excel.exe который был создан убивается.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Не получается настроить шаблон! Могу поменять стиль колонок, их порядок.

Но как сделать так, чтоб на основании выгруженных данных автоматически строились нужные мне графики?

 

У меня такой же вопрос

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

Если я правильно поняла, что Вы хотите получить, то с помощью существующей функциональности настроить такую аналитику не получится.

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

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

Если я правильно поняла, что Вы хотите получить, то с помощью существующей функциональности настроить такую аналитику не получится.

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

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

Из документации к приложению:

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

Так что ничто не мешает вам в шаблон добавить графики и при  формировании по шаблону они будут подхватыватся!

Если нужно более сложное форматирование то формировать отчеты Excel можно на c# используя Open XML SDK

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

В идеале, мне надо будет использовать в шаблоне сводные таблицы. Но если я загружаю шаблон со сводными таблицами, отчет скачивается поврежденный. 

Спасибо за ответы! Попробую разобраться с Open XML SDK

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

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

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

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

У меня такой же вопрос

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

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

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

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

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

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

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

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

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Возникла проблема, нужно работать с файлом экселя, использую библиотеку Microsoft.Office.Interop.Excel, запихнул ее во внешние сборки, подключил в методах БПМ. и в задании сценарии на строке

Excel.Application xlApp = new Excel.Application();

выбивает ошибку:

System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "office, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" либо одну из их зависимостей. Не удается найти указанный файл.
Имя файла: 'office, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'
   в Terrasoft.Core.Process.WisCreateKPMethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
 

У меня такой же вопрос

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

Приветствую

советую посмотреть и скачать на данном сайте библиотеки NetOffice https://osdn.net/projects/netoffice/ . Я сам с помощью данных библиотек не одну задачу решал. И вся документация понятна и есть Темплейты разобранные на Кейсах. Скачиваем, ставим библиотеки и пользуемся в своих проектах.

Вот ссылка на проект на ГитХабе https://github.com/NetOfficeFw/NetOffice

Установил вод, ошибка изменилась на следующую:

System.Runtime.InteropServices.COMException (0x800A03EC): Приложению Microsoft Excel не удается получить доступ к файлу "E:\BPMReport\636790185921323443.xlsx". Это может быть вызвано одной из следующих причин.

• Указан несуществующий файл или путь.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.
   в Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
   в Terrasoft.Core.Process.WisCreateKPMethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

Файл существует, вот код:

var userConnection = Get<UserConnection>("UserConnection");
MemoryStream ms = new MemoryStream((
				new Select(userConnection).Top(1).Column("Data")
				.From("KnowledgeBaseFile")
				.Where("KnowledgeBaseId").IsEqual(Column.Parameter("302eeb80-7559-4fcd-8827-833d94fa78e6"))as Select).ExecuteScalar<byte[]>());
string FileName = "E:\\BPMReport\\" + DateTime.Now.Ticks.ToString() + ".xlsx";
            FileStream fs = new FileStream(FileName, FileMode.Create, FileAccess.Write);
            byte[] bytes = new byte[ms.Length];
            ms.Read(bytes, 0, (int)ms.Length);
            fs.Write(bytes, 0, bytes.Length);
            fs.Close();
 
object m = Type.Missing;
Application xlApp = new Application();

 

Радчук Виталий Владимирович,

А у IIS-пользователя есть доступ на запись в E:/BPMReport ??

может кто налетит на эту проблему, вот решение, должна быть папка 

C:\Windows\SysWOW64\config\systemprofile\Desktop

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день, Коллеги! Поделитесь пжлст какими  методами получаете отчет с выгрузкой в эксель такого плана:

Продукт -  Постащик -  Счет - и т.д.,

т.е, данные с детали Продукты в счете .

При этом их нужно отфильтровать за период и по Состоянию оплаты счета.

Новый продут excel reports бы решил данную задачку, да не умеет он пока фильтровать данные, если объектом отчета является деталь.

 

Спасибо!!

У меня такой же вопрос

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

Мы создавали сначала раздел, вынесли его в отдельное рабочее место. Потом добавили его в виде детали в счет и всё что туда добавлялось - падало в наш раздел, где мы уже всё фильтровали и только после этого делали выгрузку.

Вряд ли мой совет окажется полезен. Просто перед нами изначально стояла задача, что нужно будет фильтровать и мы это учитывали. Возможно, знатоки комьюнити Вам подскажут как создать раздел на основе существующего объекта "Продукт в счете", тогда Вы тоже могли бы там фильтровать.

Alex Zaslavsky,

Спасибо большое! Думаю подойдет решение! В  карточку в разделе нужно все поля с детали добавить или как связь именно с деталью сделать? 

Елена К,

У нас изначально не было раздела "Счет" (bpm'online sales team), и мы создали этот раздел, потом под него создали раздел "продукт в счете" и, собственно, на основе этого раздела уже прикрепили деталь к разделу Счет. 

Я так понимаю, что у Вас уже рабочая система? Тогда я не знаю как Вам на основе стандартного объекта "продукт в счете" создать раздел, поэтому и дописал, что, возможно, Вам помогут знатоки. Я в этом не силён.

Alex Zaslavsky,

В любом случае большое спасибо!)

 

Войдите или зарегистрируйтесь, чтобы комментировать
Идея

В bpm'online есть возможность выгрузки данных раздела в файл MS Excel для дальшейшего анализа данных.Но, к сожалению, для деталей такой возможности нет, хотя на самом деле её реализация совсем не трудоемкая и теоретически можно реализовать самостоятельно во всех нужных местах дублируя "кусочек кода". Есть предложение добавить это "кусочек кода" в базовую схему реестра детали.

Ревью
1 комментарий

Добрый день, Алла!

Действительно, в данный момент такой функциональности в коробочной версии нет. Добавили данное пожелание для реализации в будущих версиях приложения.

Войдите или зарегистрируйтесь, чтобы комментировать
Идея

Часто возникает задача загрузки данных определенной структуры в таблицы bpm'online.Решить эту задачу можно с помощью функциональности импорта из MS Excel, однако, в системе нет возможности настроить этот импорт единоразово и предоставить пользователям нужный доступ . Возможность сохранения настроек импорта в определенном разделе решила бы эту проблему. Сейчас, к сожалению, приходится извращаться

Ревью
1 комментарий

Здравствуйте, Алла!

Я передал Ваше пожелание аналитикам продукта.
Они рассмотрят возможность его реализации в одной из последующих версий программного продукта.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте!
Подскажите пожалуйста как реализовать возможность экспорта отчета FR в xlsx. Доступно только xls, хоть в программе и прописаны все версии офиса. По большей части нужно для автоматического формирования и сохранения отчета. Если указывать в названии файла расширение xlsx - файл создается, но не открывается (((( На скрине - пользовательский экспорт отчета в Microsoft Excel.
Версия ТС - 3.4.0.38.
Спасибо!

У меня такой же вопрос

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

Светлана, используемый в Terrasoft движок FastReport является сторонним компонентом, влиять извне на его работу не всегда есть возможность. Если он не поддерживает сохранение в XLSX, то нельзя.

Можно попробовать следующие обходные решения:

  • Сохранять файл в XLS, потом отдельно конвертировать файлы с помощью Microsoft OFC.
  • Полностью переписать построение отчёта, вместо FastReport использовать чисто программное формирование при помощи COM-объекта Excel, там можно и XLSX.

"Зверев Александр" написал: Если он не поддерживает сохранение в XLSX, то нельзя.

Судя по форумам, вполне поддерживает. Возможно, вопрос в используемой версии в TS

Печально(( движок FR тоже ведь не заменить?
Спасибо!

В Terrasoft встроена конкретная версия движка. Возможно, по ссылке более новая.

Версия FR 4.10.18

А Владимир привёл ссылку на 5.5.9.

Менять встроенный движок нельзя.

Войдите или зарегистрируйтесь, чтобы комментировать