Здраствуйте, колеги.

Начал погружаться в Angular, согласно этой статье:

https://academy.terrasoft.ua/docs/7-16/developer/development_tools/pack…

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

Нравится

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

Добрый день,

 

У меня тоже были эти ошибки, если использовать просто ng build. Попробуйте с ng build --output-hashing none && node build.js, у меня получилось нормально собрать компонент по статье:

Добрый день.

Судя по всему у Вас ошибки, которые даже не связаны с Creatio, это стандартные ошибки Angular.
Вы используете компонент, но его не импортировали в файл.
В начале файла должен быть код, например
import AngularElementComponent from "./somedir/somefile"

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

Коллеги добрый день.

Сделал angular модуль по инструкции и подбросил его как файловый контент по инструкции и выполнил сборку через WokspaceConsole:

Terrasoft.Tools.WorkspaceConsole.exe -operation=BuildConfiguration -workspaceName=Default -webApplicationPath=C:\inetpub\wwwroot\BPM7172 -destinationPath=C:\inetpub\wwwroot\BPM7172\Terrasoft.WebApp -confRuntimeParentDirectory=C:\inetpub\wwwroot\BPM7172\Terrasoft.WebApp -force=true -logPath=C:\wc\log

 

Далее так же по инструкции обновил пакеты из файловой системы и компилировал студию.

При обновлении пакетов из файловой системы он почему-то потребовал у меня наличие пакета "Desktop" - добавил его.

Структура файлов модуля вот такая:

В descriptor.json:

{
    "bootstraps": [
        "src/js/bootstrap.js"
     ]
}

В bootstrap.js:

(function() {
    require.config({
        paths: {
            "angular-desktop-component": Terrasoft.getFileContentUrl("angular-Desktop", "src/js/angular-desktop-component.js"),
        },
		shim: {
				"angular-desktop-component": {
				deps: ["ng-core"]
			}
		}
    });
})();

Создал далее в пакете "Desktop" модуль "MIDesktopPage", добавил в него код по инструкции:

define("MIDesktopPage", ["angular-desktop-component"], function () {
	/**
	 * @inheritDoc Terrasoft.BaseModule#render
	 * @override
	 */
	return {
		methods: {
			init: function () {
				this.callParent(arguments);
			},
			render: function (renderTo) {
				this.callParent(arguments);
				const component = document.createElement("angular-desktop-component");
				component.setAttribute("id", this.id);
				renderTo.appendChild(component);
			}
		}
	};
});

Вызвал загрузку модуля по кнопке:

callbackDesktop: function (response) {
				this.sandbox.loadModule("MIDesktopPage", {
					id: "selectDataModule_id",
					renderTo: "centerPanel"
				});
			}

В итоге мне выбивает ошибку:

Если нажать на 404 ошибку ссылается на отсутствие файла, который почему-то запрашивается вот отсюда:

Если подбросить компонент по пути выше, то он ругается на MaximumCallStack - сомневаюсь что оно там лежать должно вообще. Прошу помочь разобраться что работает не так и почему, компиляции и прочие манипуляции не помогают. В самом модуле ангуляр ничего нету кроме черного квадрата в css.

Заранее благодарю откликнувшихся.

Нравится

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

Добрый день,

 

Нет, компонент там не должен лежать, откуда он вызывается в консоли (где 404 ошибка). Я тоже при создании компонента получал сначала это сообщение, пока не подключил компонент к модулю AccountSectionV2 с названием, как указано в параметре paths файла bootstrap.js, не обновился из файлового контента и не перезагрузил приложение (тесты проводил на сборке 8.0.2). После этого ошибка пропала и модуль стал грузиться нормально. Так по Вашим скриншотам ошибки не вижу, разве что где-то в названии затесалась какая-то буква ("о" или "а", например) на кириллице.

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

Всех приветствую!

Кто может подсказать как с помощью Ангуляра добавить новые элементы на страницу карточки (кнопки, текстовые поля).

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

Нравится

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

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

 

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

Спасибо за ответ! Компонент подключился без ошибок. А вот с добавлением кнопки (как в примере) возникли сложности.

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

Добавил ангулар компонент согласно инструкции
https://academy.creatio.com/docs/7-18/developer/development_tools/packa…

 

Все работает.
НО! Если добавить несколько разных компонентов таким способом, то работает только первый, который открылся. При открытии второго уже ошибка.

 

В процессе анализа выяснилась причина:
При подгрузке и срабатывании кода во втором компоненте вызывается метод ngDoBootstrap из первого модуля. Соответственно второй компопент не регистрируется через createCustomElement.
Возможная причина такого поведения:
Билд компонента добавляет в main.js все зависимости в том числе собранное ядро ангулара.
При этом в стандартных компонентах (чаты, диаграма зависимостей, сводная таблица и т.д.) ядра в файле нет, но в bootstrap.js прописана зависимость от ядра (deps: ["ng-core"]).

 

Как собрать компонент правильно, чтобы в нем не было кода ng-core, и указать зависимость от него, как в стандартных Terrasoft компонентах?

Нравится

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

Владислав, добрый день!

А как именно вы зарегистрировали компоненты?

Похоже ответ на ваш вопрос стоит искать в документации  Angular Elements, поскольку именно эта функциональность и используется в приложении. Рекомендую ознакомиться с этими обсуждениями:

https://stackoverflow.com/questions/54108714/multiple-custom-element-de…

https://stackoverflow.com/questions/39756192/what-is-entrycomponents-in… 

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

Добрый день!

Не отображается  Angular компонент после установки пакета в приложении. 

Компонент был встроен на страницу CallPage и должен отображаться на определенной вкладке. При переходе на вкладку с компонентом, приложение не может найти js файл в файловом контенте, в консоли выводятся соответствующие ошибки: 

После установки пакета были выполнены полные генерация и компиляция, при этом всё равно приложению не удаётся найти файл компонента.

 

При встраивании компонента во время разработки всё работает. Но есть некоторая проблема, которая возможно и влияет на поведение, изложенное выше.

После создания папки Files с требуемой структурой, файлами bootstrap в пакете, не получается выполнить команду BuildConfiguration в WorkspaceConsole,  завершается с ошибкой "Object reference not set to an instance of an object.". 

Логи выполнения операции:

[10:26:27] 
=== 04:26:27.4595 (UTC) === 
[10:26:27] Start info: 
[10:26:27] x64 
[10:26:27] 	Help: help 
[10:26:27] 	Operation: BuildConfiguration 
[10:26:27] 	WorkspaceName: Default 
[10:26:27] 	DestinationPath: D:\CreatioInstance\CA_DS_7.18.3.1241\Terrasoft.WebApp 
[10:26:27] 	WebApplicationPath: D:\CreatioInstance\CA_DS_7.18.3.1241 
[10:26:27] 	Force: true 
[10:26:27] 	LogPath: D:\tmp\log 
[10:26:27] 	Assembly version: 7.18.3.1241 
[10:26:27] 	Configuration version: 7.18.3 
[10:26:27] 
 
[10:26:27] Configuration build started 
[10:26:27] Error: Object reference not set to an instance of an object.
   at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.<>c__DisplayClass401_0.<ExecuteBuildOperation>b__0()
   at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.ExecuteWithLogging(Action action)
 
[10:26:27] Utility finished working. 
[10:26:27] 
=== 04:26:27.6535 (UTC) === 

 

Вместо BuildConfiguration мы выполняли операцию Rebuild Workspace.  По описанию данная команда включает в себя генерацию файлового контента. Она завершается успешно, генерируются файлы _FileContentBootstraps.js и _FileContentDescriptors.js.

 

В файле _FileContentBootstraps.js не появляется наш пакет, дописываем вручную. При этом, если сохранить любую схему, запись о дескрипторе нашего пакета удаляется и приходится заново дописывать. В файле _FileContentDescriptors.js подобного не происходит, десктриптор и файловый контент нашего пакета добавляется в этот файл.

 

При встраивании компонента использовались статьи: Файловый контент пакетов | Creatio Academy (terrasoft.ru) и Создать Angular-компонент для использования в Creatio

Нравится

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

Здравствуйте!
Убедитесь, что в директории \Terrasoft.WebApp\Terrasoft.Configuration\Pkg\Созданный_пакет\Files
присутствует файл descriptor.json.
Вероятнее всего для файла descriptor указано не верное расширение - js. 
Файл должен называться descriptor.json, поэтому при установке пользовательский пакет и не попадает в  _FileContentBootstraps.js.

Здравствуйте!
Убедитесь, что в директории \Terrasoft.WebApp\Terrasoft.Configuration\Pkg\Созданный_пакет\Files
присутствует файл descriptor.json.
Вероятнее всего для файла descriptor указано не верное расширение - js. 
Файл должен называться descriptor.json, поэтому при установке пользовательский пакет и не попадает в  _FileContentBootstraps.js.

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