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

Error while executing element Name = ScriptVwWorkspaceObjectsUpdated UId = 71be0708-dede-4ab1-b9d4-0df319348242 SchemaElementUId = 2bdc98ab-bf56-48ee-9ec3-e71d569a42eb	
"System.InvalidOperationException: Sequence contains more than one matching element
   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at Terrasoft.Core.ClientContentGeneration.SchemaInfoComparer.<>c__DisplayClass15_0.<Compare>b__0(SchemaInfo newSchemaPublishInfo)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.<ForWorker>b__1()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)"

 

Нравится

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

Добрый день!

 

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

 

В случае если у вас возникнут трудности или же дополнительные проблемы, пожалуйста, создайте запрос обратившись на почту support@creatio.com.

Kyrylo Atamanenko,

Спасибо за комментарий.



Я проверил записи в таблице SysSchema, группировал по колонкам 

"ManagerName", "Caption" и "ManagerName", "Name", там правда есть дубли, но они присутствуют из-за замещения объектов и страниц. В моём пакете тоже присутствуют дубли при группировке по колонкам "ManagerName", "Caption", но при группировке по колонкам"ManagerName", "Name" дублей нету.  На данный момент не уверен что проблема связана с дублями в колонке "Caption", ибо в базовых пакетах такая же ситуация. 



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



Может быть я что-то упустил. Куда я могу ещё обратить внимание?

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

добрый день,

в приложении реализован функционал как указано здесь - https://community.terrasoft.ua/questions/kak-poluchit-kontakty-iz-dinam… . но это подход для старых фильтров которые были из 7.18.

в новом же интерфейсе добавили тоже фильтры, но они работают по другому принципу - записи храняться не в *Folder таблице.

можете подсказать как реализовать фильтрацию записей из сишарп кода используя пользовательские фильтры, созданные в новом Freedom UI интерфейсе?

спасибо!

Нравится

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

Добрый день!

 

Папки, созданные в интерфейсе Freedom UI, хранятся в единой таблице «FolderTree».

Вы можете получить Id папки путем запроса к ней по имени папки (колонка «Name»)  и названию схемы объекта (колонка «EntitySchemaName»).

 

С уважением,

Наталия

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

Доброго вечора! Скажіть, чи можна написати кастомну assembly (dll) для того щоб працювати з сховищем amazon s3?

Може хтось будь ласка розписати хоча б основні кроки?

Нравится

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

Доброго дня!



Теоретично це можно зробити. Для цього вам потрібно імпортувати бібліотеку (dll) в пакет через Конфігурацію.

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

в бизнес процесс надо добавить скрипт таск, в него написать код например



 

var value = Get&lt;Guid&gt;("Field1");
var con = Get&lt;UserConnection&gt;("UserConnection");
 
var scenario = new YourClassFromAssembly();
scenario.ValueId = value;
scenario.Run(con);
 
return true;

 

так же надо не забыть добавить неймспейс класса в вкладке Методы бизнесс процесса.

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

Завдання: Необхідно змінювати значення в полі при відкритті сторінки в мобільному додатку (інтерфейс UI), щоб фільтрувати прочитані та нові записи.



Встановив для зміни значення бізнес-правило на об'єкт без  додаткової умови . 

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

Прикрепленные файлы

Нравится

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

Проговорив питання з командою R&D, яка відповідає за мобільний додаток: зараз завершується розробка нової версії мобільного додатку, яку ось-ось мають опублікувати і яку можна буде завантажити\оновити поточно встановлений мобільний додаток. В ньому будуть доступні Save та Cancel кнопки на випадок, якщо на сторінці відбулась якась зміна. Зараз можна буде використати ці кнопки для відміни змін при виході сторінки. Автоматику поки налаштувати не можна, сторінку треба або зберегти, або явно відмінити зміни, які зробило бізнес правило.

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

Здравствуйте, Я собираюсь добавить канал Facebook Messenger, когда выбираю Facebook Messenger:

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

 

то выходить такая предупреждения:

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

Нравится

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

Добрый день, нам не удастся локализовать причину этой ошибки без доступа к среде, пожалуйста, обратитесь в службу поддержки Creatio support@creatio.com для решения этой проблемы. 

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

Добрый день.

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

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

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



 

Нравится

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

Добрый день,

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

 

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

Creatio встановлено локально на Windows 10. При встановленні або видаленні пакетів не можу дочекатись завершення процесу. У Диспетчері завдань dotnet використовує до 60% процесора. Але якщо зупинити IIS сервер, то після запуску пакет був встановлений/видалений. Але хотілось би прочитати лог встановлення і бачити що процес завершився успіхом. Підкажіть, будь ласка, де шукати проблему.

Нравится

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

Добрый день,

 

Необходимо переместить файл 'global.json' в корень диска, а затем перезапустить пул. В файле 'global.json' замените версию '3.1.0' на '6.0.413'.

Затем переместите файл 'global.json' из каталога 'C:\inetpub\wwwroot\Creatio_Dev_MSSQL' в каталог 'C:', перезапустите пул и запустите компиляцию. После этого проблема должна быть решена.

Добрый день,

 

Необходимо переместить файл 'global.json' в корень диска, а затем перезапустить пул. В файле 'global.json' замените версию '3.1.0' на '6.0.413'.

Затем переместите файл 'global.json' из каталога 'C:\inetpub\wwwroot\Creatio_Dev_MSSQL' в каталог 'C:', перезапустите пул и запустите компиляцию. После этого проблема должна быть решена.

Orkhan,

Спасибо, помогло. Только файла 'global.json'  у меня не было, я его создавал, для тех кому будет полезна эта информация, содержание файла 'global.json':

{

    "sdk": {

        "version": "6.0.413",

        "rollForward": "latestFeature"

    }

}

 

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

Підкажіть, чи можна виконати запуск існуючої процедури в модулі SQL сценарію ?

Процедуру потрібно запустити тільки один раз, при встановленні пакету (AfterPackage)

Нравится

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

Додам коментар. Процедура вже написана на рівні бази даних postgree. Цю роцедуру на postgree треба визвати, але тільки один раз (у процедурі додаються права до існуючих документів розліду для нової функц. ролі). Або як це ще можна зробити ?

Добрий день,

 

Якщо процедура зареєстрована на рівні БД і її лишилось викликати, то так, можна зареєструвати окремий SQL сценарій (наприклад в пакеті Custom), в якій прописати команду call і викликати таким чином процедуру (встановити SQL сценарій). Але Ви не дізнаєтесь без доступу до БД чи вона виконалась, чи ні.

Oscar Dylan,

Так не працює, нажаль... Помилка, пише що: 

P0001: неприпустиме завершення транзакції

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

Версія 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&lt;string&gt;;
 
	constructor(dataSourceName: string, recordIds: Array&lt;string&gt;) {
		super();
 
		this.dataSourceName = dataSourceName;
		this.recordIds = recordIds;
	}
}



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

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

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

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

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

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

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

Добрий день. Чи можна автоматизувати SQL Запит так, щоб він відпрацьовував кожного дня вночі та очищував дані з таблиці за певну дату створення по формулі "Сьогоднішня дата-10 днів"? Можливо можна зробити такий БП?

 

DELETE FROM "BtcErrorQueue1C"

WHERE

  "CreatedOn" > '2023-10-14'

    AND "CreatedOn" < '2023-10-15';

Нравится

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

Доброго дня,

 

Так, це можливо зробити через БП. Процес треба запускати через Start timer - рекомендуємо робити такі операції виключно в неробочий час. Сам sql-скрипт (в середині елементу script-task) матиме наступний вигляд: 

var userConnection = Get<UserConnection>("UserConnection");

string sql = "DELETE FROM BtcErrorQueue1C WHERE CreatedOn <= DATEADD(day, -9, DATEDIFF(dd, 0, GETDATE())) AND CreatedOn >= DATEADD(day, -10, DATEDIFF(dd, 0, GETDATE()))";

CustomQuery myQuery = new CustomQuery(userConnection);

myQuery.SqlText = sql;

using (DBExecutor dbExecutor = userConnection.EnsureDBConnection())

{

    dbExecutor.CommandTimeout = 0;

    myQuery.Execute();

}

return true;

Доброго дня, 

Дані можно напряму видалити використовуючи елемент БП задача-сценарій, де додати клас який створить такий Delete запит, і додати запуск БП по таймеру на необхідний час. Як саме створити запит через клас описано тут https://academy.terrasoft.ua/docs/developer/back_end_razrabotka/operatsii_s_dannymi_back_end/pryamoj_dostup/obzor#case-2150. Дату теж можно розраховувати отримавши дату що зараз через DateTime localDate = DateTime.Now 

Доброго дня,

 

Так, це можливо зробити через БП. Процес треба запускати через Start timer - рекомендуємо робити такі операції виключно в неробочий час. Сам sql-скрипт (в середині елементу script-task) матиме наступний вигляд: 

var userConnection = Get<UserConnection>("UserConnection");

string sql = "DELETE FROM BtcErrorQueue1C WHERE CreatedOn <= DATEADD(day, -9, DATEDIFF(dd, 0, GETDATE())) AND CreatedOn >= DATEADD(day, -10, DATEDIFF(dd, 0, GETDATE()))";

CustomQuery myQuery = new CustomQuery(userConnection);

myQuery.SqlText = sql;

using (DBExecutor dbExecutor = userConnection.EnsureDBConnection())

{

    dbExecutor.CommandTimeout = 0;

    myQuery.Execute();

}

return true;

Artem Smyrnov,

Добрий день. Дякую, у вашому коді використовуються функції DATEADD і DATEDIFF, які використовуються тільки для Microsoft SQL Server, вірно? Мені потрібен код для PostgreSQL, там використовуються функції INTERVAL та EXTRACT? Тобто код буде виглядати ось так?

var userConnection = Get&lt;UserConnection&gt;("UserConnection");
string sql = "DELETE FROM BtcErrorQueue1C WHERE CreatedOn &lt;= current_date - interval '9 days' AND CreatedOn &gt;= current_date - interval '10 days'";
 
CustomQuery myQuery = new CustomQuery(userConnection);
myQuery.SqlText = sql;
 
using (DBExecutor dbExecutor = userConnection.EnsureDBConnection())
{
    dbExecutor.CommandTimeout = 0;
    myQuery.Execute();
}
 
return true;

 

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