Добрый день.

В приложении Advanced excel reports for Creatio не удается добавить колонку в отчет. Колонка "Название" обязательна для заполнения.

На версии 7.17.2 обновленный интерфейс выбора колонок. Предварительно причина в этом.

Подскажите, может кто сталкивался уже с проблемой и есть готовое решение?

 

https://marketplace.terrasoft.ru/app/advanced-excel-reports-creatio

http://joxi.ru/p279QRwuK4z6zr

Нравится

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

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

define("BpmReportColumnDetail", ["terrasoft", "sandbox", "ModalBox", "ConfigurationGrid", "ConfigurationGridGenerator",
	"ConfigurationGridUtilities", "StructureExplorerUtilities"],
		function(Terrasoft, sandbox, ModalBox) {
	return {
		entitySchemaName: "BpmReportColumn",
		messages: {},
		attributes: {},
		mixins: {},
		diff: /**SCHEMA_DIFF*/[
		],/**SCHEMA_DIFF*/
		methods: {
			/**
            *@override
            */
			openStructureExplorerClick: function() {
				var reportConfig = this.sandbox.publish("GetReportConfig");
				var path = this.get("BpmPath");
				Terrasoft.StructureExplorerUtilities.open({
					scope: this,
					moduleConfig: {
						columnPath: path,
						useBackwards: false,
						schemaName: reportConfig.reportEntitySchemaName,
						displayId: true,
                      	useOldStructureExplorer: true //Добавлен параметр, т.к. открывался новый интерфейс выбора колонок и ломал логику.
					},
					handlerMethod: function(selectedColumns) {
						var path = selectedColumns.leftExpressionColumnPath;
						var pathCaption = selectedColumns.leftExpressionCaption;
						if (!this.get("BpmCaption") && selectedColumns.caption) {
							this.set("BpmCaption", selectedColumns.caption[selectedColumns.caption.length - 1]);
						}
						this.set("BpmPath", path);
						this.set("BpmPathCaption", selectedColumns.leftExpressionCaption);
						this.set("BpmName", path.replace(".", "_"));
						this.set("BpmPathLookup", {
							value: pathCaption,
							displayValue: pathCaption
						});
					}
				});
				ModalBox.setSize(580, 450);
			}
		}
	};
});

 

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

define("BpmReportColumnDetail", ["terrasoft", "sandbox", "ModalBox", "ConfigurationGrid", "ConfigurationGridGenerator",
	"ConfigurationGridUtilities", "StructureExplorerUtilities"],
		function(Terrasoft, sandbox, ModalBox) {
	return {
		entitySchemaName: "BpmReportColumn",
		messages: {},
		attributes: {},
		mixins: {},
		diff: /**SCHEMA_DIFF*/[
		],/**SCHEMA_DIFF*/
		methods: {
			/**
            *@override
            */
			openStructureExplorerClick: function() {
				var reportConfig = this.sandbox.publish("GetReportConfig");
				var path = this.get("BpmPath");
				Terrasoft.StructureExplorerUtilities.open({
					scope: this,
					moduleConfig: {
						columnPath: path,
						useBackwards: false,
						schemaName: reportConfig.reportEntitySchemaName,
						displayId: true,
                      	useOldStructureExplorer: true //Добавлен параметр, т.к. открывался новый интерфейс выбора колонок и ломал логику.
					},
					handlerMethod: function(selectedColumns) {
						var path = selectedColumns.leftExpressionColumnPath;
						var pathCaption = selectedColumns.leftExpressionCaption;
						if (!this.get("BpmCaption") && selectedColumns.caption) {
							this.set("BpmCaption", selectedColumns.caption[selectedColumns.caption.length - 1]);
						}
						this.set("BpmPath", path);
						this.set("BpmPathCaption", selectedColumns.leftExpressionCaption);
						this.set("BpmName", path.replace(".", "_"));
						this.set("BpmPathLookup", {
							value: pathCaption,
							displayValue: pathCaption
						});
					}
				});
				ModalBox.setSize(580, 450);
			}
		}
	};
});

 

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

Прежде всего, хочу заметить, что подобное сообщение абсолютно не информативно, и по нему редко можно определить истинную причину. Столкнулась с такой ситуацией:

1. Появляется только на одном компьютере;
2. Под всеми пользователями;
3. Для любого отчета Word/Excel;

Решить проблему можно только путем активации отладчика: необходимо выяснить, на какой строке программа вылетает. Если это это строка finally - значит, проблема где-то в блоке try, и его нужно последовательно пройти отладчиком, каждую строку проверяя watch'ем.

В моем случае проблемной строкой оказалась следующая:

Result = GetIsMSOfficeApplicationIstalledViaRegistry(MSOfficeApplicationName);

Это системная функция обращения к реестру. Остановка отладчика на этой строке говорит о том, что проблема в операционной системе, а именно - в службах работы реестра.

Чтобы устранить проблему, нужно перезапустить либо переустановить системные службы Windows. Это можно сделать через консоль (Пуск - Выполнить - cmd)

Перезапустить:

net stop winmgmt
cd /d %windir%\system32\wbem
for %i in (*.dll) do RegSvr32 -s %i
for %i in (*.exe) do %i /RegServer
net start winmgmt

Переустановить:

rundll32.exe setupapi,InstallHinfSection WBEM 132 %windir%\inf\wbemoc.inf

После переустановки системных служб реестра Windows проверка инсталляции офиса проходит корректно и отчет выгружается.

Отдельное спасибо Евгению Лобову за сотрудничество в решении проблемы.

Нравится

Поделиться

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

Еще как вариант, просто снести ветку в реестре, например того же самого Excel.
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Options\DefSheets -> именно этот параметр
P.S. Мне например помогло!

Ценное наблюдение. Павел, благодарю.

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