Добрый день.

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

Я попробовала протестировать данную фичу, делала все по статье.

Посмотрела в консоли, что для моей версии Creatio используется версия 12.1.4 для angular. Но какие должны быть версии зависимостей angular/cli, например для angular/elements?



 

Нравится

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

Добрый день,

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

 

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

Версія Creatio: 8.1.0.6672

Добрий день! В мене стоїть наступна задача: Необхідно розширити базову логіку роботи деталі з файлами, добавивши на неї певну функціональність. Так як немає можливості замістити базовий компонент деталі з файлами, вирішив реалізувати свій простий аналог, дойшов до моменту, коли потрібно реалізувати виклик базового метода crt.DeleteRecordsRequest, щоб повторити логіку видалення запису. 



Намагаюсь зробити виклик за допомогою методу HandlerChainService.instance.process з @creatio-devkit/common, але отримую наступну помилку

Изображение удалено.

Намагався в своєму проєкті зареєструвати SCHEMA_VIEW_MASK_TOKEN таким чином

...
export const SCHEMA_VIEW_MASK_TOKEN = new InjectionToken('SCHEMA_VIEW_MASK_TOKEN');
...
@NgModule({
	declarations: [BnzFileDetailComponent],
	imports: [BrowserModule, MatIconModule, MatButtonModule, MatCardModule, MatMenuModule],
	providers: [{ provide: SCHEMA_VIEW_MASK_TOKEN, useValue: 'value' }],
})

Але воно навідь й цього не бачить



Як можна виправити цю помилку?



Angular проєкт створював на основі статьї https://academy.creatio.com/docs/developer/front_end_development_freedom_ui/remote_module/implement_a_remote_module/overview використовуючи приклади для "For Creatio version 8.0.8 and later."



Також може підскажете, чи можна десь подивитись відкритий код angular компонентів creatio, щоб зрозуміти як правильно будувати свої компоненти? А то мінімізований код не дуже зручно дивитись :)

Або як можна використовувати crt компоненти в середині свого компоненту? Намагався вивести crt-file-list всередині свого компоненту, але не зміг

Нравится

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

Доброго дня,

Можете показати як саме ви викликаєте crt.DeleteRecordsRequest, як саме ви використовуєте HandlerChainService?

Дима Вовченко,

Добрий день! Виклик робив приблизно так

import {
	HandlerChainService,
} from '@creatio-devkit/common';
 
...
 
/// в компоненті при натисканні на кнопку видалення
onDeleteButtonClick() {
	HandlerChainService.instance.process(new DeleteRecordsRequest("...", [...]));
}
 
...
 
class DeleteRecordsRequest extends BaseRequest {
	override type = 'crt.DeleteRecordsRequest';
 
	public dataSourceName: string;
	public recordIds: Array<string>;
 
	constructor(dataSourceName: string, recordIds: Array<string>) {
		super();
 
		this.dataSourceName = dataSourceName;
		this.recordIds = recordIds;
	}
}



На томість я пішов іншим шляхом й визиваю свій обробник на сторінці, який в свою чергу вже викликає crt.DeleteRecordsRequest. Знаю що не вірно так робити, але іншого шляху не знайшов

В ангуляр компоненті виклик методу працює таким самим чином як і на сторінці, себто так:

await handlerChain.process({
    type: 'crt.DeleteRecordsRequest',
    $context: request.$context //Set context
    //Other params
});

Головне правильно передавати контекст.

Дима Вовченко,

Яким чином з Angular компонента можна отримати контекст сторінки?

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

Все доброго времени суток. Столкнулся с проблемой добавления ангуляр компоненты в Creatio.

Реализовал по примеру как описано в статье Изображение удалено.

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

В чем может быть проблема?

Нравится

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

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

2 Перед сборкой проверьте что у вас нет свойства bootstrap в app module

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

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

Начал погружаться в 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.

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