Добрый день. Встречалась ли кому-нибудь такая ошибка при попытке установки пакетов через WorkspaseConsole? 

Лог ошибки:

Installing data
Error: Incorrect syntax near ')'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Terrasoft.Core.DB.DBExecutor.FailoverExecute[TResult](DbCommand command, Func`1 func)
   at Terrasoft.Core.DB.DBExecutor.Execute(String sqlText, QueryParameterCollection parameters)
   at Terrasoft.Core.DB.Query.Execute()
   at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.InstallWorkspaceFromRepository(String sourcePath, String destinationPath, String packageName)
   at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.InstallWorkspacesFromRepository(String sourcePath, String destinationPath, String packageName)
   at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.Execute()
   at Terrasoft.Tools.Common.BaseConsoleApplication`2.Run(String[] args)

Скрипт запуска:

chcp 1251
SET IIS_NAME=Test
SET WS_NAME=Default
SET APP_WC_DIR=Z:\%IIS_NAME%\Terrasoft.WebApp\DesktopBin\WorkspaceConsole
 
SET CHECKOUT_PATH=C:\Workplaces\Kercher\Packages\DestinationPath
SET PKG_PATH=C:\Workplaces\Kercher\Packages\Create
SET LOG_PATH=C:\Workplaces\Kercher\Packages\Log
 
ECHO | %APP_WC_DIR%\Terrasoft.Tools.WorkspaceConsole.exe -packageName=KercherMain -workspaceName=%WS_NAME% -operation=InstallFromRepository -sourcePath=%PKG_PATH% -destinationPath=%CHECKOUT_PATH% -continueIfError=true -logPath=%LOG_PATH% -regenerateSchemaSources=true -updateDBStructure=true -installPackageData=true -installPackageSqlScript=true
 
pause

Само приложение находится на другом сервере. На диск Z замаплен путь к приложению.

Нравится

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

Такое сообщение означает ошибку в SQL-запросе, лишнюю или недостающую скобку или что-то подобное. Если возникает при установке какого-то конкретного пакета, в котором есть SQL-скрипты, то нужно в первую очередь проверить их.

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

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

Добрый день, коллеги!

В мобильном приложении в разделе итоги не отображаются расчетные показатели, составленные с помощью Calculated metrics for Creatio. При этом остальные работают.

Может кто сталкивался? Как решается данный вопрос?

Нравится

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

Добрый день, Илья!

 

работа расчетных показателей в мобильном приложении не реализована в дополнении Calculated metrics for Creatio. В мобильном приложении используется другой сервис формирования данных, поэтому настройки основного приложения не валидны в этом кейсе.

Ирина Лазоренко,

Спасибо за ответ

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

Доброго всем дня.

 

Некоторое время назад появилась ошибка: "1 of 0 records imported from the source file "". 4294967295 record(s) not imported.".

Периодически появляется в коммуникационной панели в системных уведомлениях: http://prntscr.com/ru3qoq

 

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

 

По данным записям (ошибкам) в таблице Reminding колонка SubjectId с "нулевым" Id: http://prntscr.com/ru3l3r

 

Сталкивался ли кто с подобной ошибкой? 

Нравится

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

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

Для устранения нужно установить пакет FileImportNotificationFix_20.04.07_12.51.35.zip на сайт (лучше сначала проверить на тесте) или дождаться, когда выйдет очередное обноление, его включающее.

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

Большое спасибо, Александр! 

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

Добрый день! Возник вопрос с заимствованием функциональности из готовых решений. К примеру, используется продукт Sales, в который требуется добавить функциональность работы с email из Service.  Покупать целый продукт service нецелесообразно, большая часть функциональности не будет использована.

Как будет корректней поступить в этом случае?

 

Нравится

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

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

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

Во-первых, как ты уже написал есть ряд проверок, которые нельзя обойти.

Во-вторых, я не думаю, что именно эта функциональность реализована в каком-то отдельном пакете без привязки к другой функциональности Service.

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

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

Также уже на усмотрение компании Terrasoft эту функциональность можно включить в бесплатную функциональность платформы, либо за дополнительную плату предоставлять тем, кому она нужна.

Добрый день.

 

Уточните, о какой именно функциональности идет речь?

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

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

Searcher,

Попробуйте реализовать нужную Вам функциональность по аналогии с уже реализованной в Service.

Спасибо

Обратите внимание, что у Service есть несколько версий, отличающихся функциональностью и ценой. На калькуляторе стоимости можно подсчитать, сколько будет стоить сочетание Sales и Service.

 

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

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

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

Во-первых, как ты уже написал есть ряд проверок, которые нельзя обойти.

Во-вторых, я не думаю, что именно эта функциональность реализована в каком-то отдельном пакете без привязки к другой функциональности Service.

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

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

Также уже на усмотрение компании Terrasoft эту функциональность можно включить в бесплатную функциональность платформы, либо за дополнительную плату предоставлять тем, кому она нужна.

Алла, не всегда всё можно реализовать самостоятельно, даже во всём разобравшись. Тут недавно был аналогичный вопрос по поводу переноса рассылок из Marketing, там это ещё более очевидно, логика отправки вынесена даже за пределы ядра на отдельный  общий для всех сайт Cloud Email Service.

 

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

 

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

 

Платформа (Studio Enterprise), кстати, сейчас не бесплатна, бесплатна только Studio Free.

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

Добрый день.

 

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

{
"Message":"There was an error processing the request.",
"StackTrace":"",
"ExceptionType":""
}

 

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

Нравится

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

401 — это Unauthorized:

для доступа к запрашиваемому ресурсу требуется аутентификация. В заголовке ответ должен содержать поле WWW-Authenticate с перечнем условий аутентификации. Иными словами, для доступа к запрашиваемому ресурсу клиент должен представиться, послав запрос, включив при этом в заголовок сообщения поле Authorization с требуемыми для аутентификации данными. Если запрос уже включает данные для авторизации, ответ 401 означает, что в авторизации с ними отказано.

Значит, перед работой с OData не обратились к AuthService.svc, либо обратились, но в дальнейших запросах не передали все полученные куки, либо отвалилось по давности.

Также см. более подробную статью, как правильно производить аутентификацию. Возможно, забыли о заголовке ForceUseSession: true.

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

Здравствуйте.

Есть необходимость создать новый раздел на основании объекта активности.

Проведённые работы:

1. Создана схема Раздела и Страницы редактирования

2. Создана запись в SysModuleEntity с указанием UId объекта Активности

3. Создана запись в SysModule с указанием SysModuleEntityId из п.2 и UId схем из п.1.

4. Создана запись в SysModuleEdit с указанием SysModuleEntityId из п.2

В итоге раздел зарегистрирован и  работает корректно.

Но теперь при открытии мастера раздела в р. Активности открывается конфигурация  нового раздела (хотя в адресной строке указан SysModuleId раздела активности)

Есть подозрение, что Мастер раздела берёт последнюю запись (по дате создания) из таблицы SysModuleEntity.

Подскажите как решить эту проблему.

И правильно ли это поведение системы?

Нравится

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

Добрый день.

 

Можно попробовать сделать второй раздел на основании представления, но в этом случае нужно будет прописать дополнительно логику по добавлению, изменению, сохранению и удалению записи.

 

Ответить, насколько правильно такое поведение системы Вам смогут только её разработчики, поэтому рекомендую продублировать свой вопрос в службу поддержки Terrasoft.

Спасибо, Алла. Этот вариант тоже рассматривал.

Но хотелось бы получить комментарий от Тех.поддержки.

Т.к. лично мне не понятно, почему для формирования наполнения мастера раздела не используются данные из SysModuleEntity?  

Ведь по логике не должно быть разницы какая схема объекта привязана к записи SysModuleEntity, если для каждого раздела есть своя запись в SysModuleEntity.

Игорь, здравствуйте!



К сожалению, пользовательской возможности разделить записи одного объекта на два раздела нет в коробочной версии приложения.



Если, например, Вам необходимо разделить контрагентов на два типа: клиенты и контрагенты, то пользовательски Вы можете сделать это помощью типизации страниц редактирования.

Для этого Вы можете использовать базовое поле "Тип" в карточке контрагента. Добавить собственный тип Вы можете в справочнике "Типы контрагента".

С помощью мастера раздела можно добавить необходимо количество страниц редактирования, каждая из которых будет соответствовать нужному типу. Страницы могут иметь разный набор полей/деталей в зависимости от Ваших потребностей. Более детально о создании нескольких страниц можно почитать на Академии Terrasoft.

 

Для интересующего Вас раздела активностей это уже сделано, для задачи и звонка используется одна карточка, а для email настроена другая.



Разделять записи в реестре раздела можно с помощью динамических групп настроив фильтр по полю "Тип".  

 

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

Мотков Илья,

Илья меня интересует именно отдельный раздел и с полностью рабочей функциональностью.

И мне интересно почему мастер раздела не основывается при  построении на данные из SysModuleEntity?

Т.к. именно эта таблица связывает зарегистрированный раздел (SysModule) с объектом(SysSchema).

Так почему при загрузке мастер основывается на объект и на последний  зарегистрированный по этому объекту раздел?

 

Игорь, здравствуйте, Вам удалось решить проблему? Если да, не подскажите каким образом?

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

Здравствуйте!

 

При добавлении детали в раздел консоль браузера отображает ошибку: uncaught exception: Terrasoft.InvalidOperationException: UnauthorizedAccessException. Отказано в доступе по пути "Supervisor".

 

Подскажите, пожалуйста, что можно с этим сделать.

Нравится

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

Добрый вечер.

 

Опишите подробнее на каком этапе возникает ошибка?

Вы добавляете деталь через мастер раздела и при сохранении возникает ошибка?

Судя по сообщению, не хватает прав на какой-то объект, запись или операцию. Но это странно, у Supervisor должны быть на всё. А может, это неполная цитата и дело не совсем в этом. Например, что-то не так с объектом детали или его полями.

 

На самой веб-странице, не в консоли, никаких сообщений не показало?

 

Попробуйте открыть в «инструментах разработчика» вкладку «Network» и посмотреть, какой при этом идёт запрос к веб-сервисам сайта из браузера и получает в ответ ошибку или запрет. Так можно будет понять, чего именно не хватает.

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

 Установлено локально. Есть еще такая запись из логов -

ERROR IIS APPPOOL\Creatio Client.ClientLogger InternalPost - user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647

 file: http://localhost:82/core/057665f97324038f6c7c326b6734de6b/requirejs/req…

На вкладке Network не обнаружил запросов с ошибкой или запретом

А где такое видите, в браузере или в логах сайта?

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

Это. я обнаружил в логах сайта

Приведите полный текст сообщения.

Возможно, поможет перезапуск сервера и чистка Redis, как тут.

 

 

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

Добрый день!

Подскажите, пожалуйста, как в задании-сценарии сгенерировать сообщение бизнес процесса.

Нравится

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

Интересный вопрос!

 

Генерация сообщения — это класс ProcessSchemaIntermediateThrowMessageEvent в ядре. Если взять любой компилируемый процесс и открыть его исходный код, будет видна автоматически сгенерированная логика, как с ним взаимодействуют. Например, в БП SendEmailToContactProcess есть такое сообщение:

В коде это соответствует (фрагменты):

ProcessSchemaIntermediateThrowMessageEvent sendemailintermediatethrowmessageevent = CreateSendEmailIntermediateThrowMessageEventIntermediateThrowMessageEvent();
//...
protected virtual ProcessSchemaIntermediateThrowMessageEvent CreateSendEmailIntermediateThrowMessageEventIntermediateThrowMessageEvent() {
	ProcessSchemaIntermediateThrowMessageEvent schemaThrowMessageEvent = new ProcessSchemaIntermediateThrowMessageEvent(this) {
		UId = new Guid("06d86512-8024-45a7-8c47-97339c880a62"),
		ContainerItemIndex = 0,
		ContainerUId = new Guid("dbae19cb-4797-46a7-8d5e-7849ed4640f5"),
		CreatedInOwnerSchemaUId = new Guid("bb4d6607-026b-4b27-b640-8f5c77c1e89d"),
		CreatedInPackageId = new Guid("66e9e705-64b4-4dda-925e-d1e05a389eb6"),
		CreatedInSchemaUId = new Guid("44589e2b-11fc-4e7e-b97f-9bd6d8f1dbd2"),
		DragGroupName = @"Event",
		EntitySchemaUId = Guid.Empty,
		ImageList = null,
		ImageName = null,
		IsLogging = false,
		ManagerItemUId = new Guid("7b8b16fb-d4c6-4e8b-a519-988250ac636f"),
		Message = @"SendEmail",
		ModifiedInSchemaUId = new Guid("44589e2b-11fc-4e7e-b97f-9bd6d8f1dbd2"),
		Name = @"SendEmailIntermediateThrowMessageEvent",
		OwnerSchemaManagerName = @"ProcessSchemaManager",
		Position = new Point(232, 156),
		SerializeToDB = false,
		Size = new Size(0, 0),
		ThrowToBase = false,
		UseBackgroundMode = false
	};
 
	return schemaThrowMessageEvent;
}
//...
private ProcessThrowMessageEvent _sendEmailIntermediateThrowMessageEvent;
//...
public ProcessThrowMessageEvent SendEmailIntermediateThrowMessageEvent {
	get {
		return _sendEmailIntermediateThrowMessageEvent ?? (_sendEmailIntermediateThrowMessageEvent = new ProcessThrowMessageEvent() {
			UId = Guid.NewGuid(),
			Owner = this,
			Type = "ProcessSchemaIntermediateThrowMessageEvent",
			Name = "SendEmailIntermediateThrowMessageEvent",
			SchemaElementUId = new Guid("06d86512-8024-45a7-8c47-97339c880a62"),
			CreatedInSchemaUId = InternalSchemaUId,
			ExecutedEventHandler = OnExecuted,
		Message = "SendEmail",
		});
	}
}

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

 

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

 

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

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

Спасибо за подробный ответ. Очень познавательно и полезно это знать.

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

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

Добрый день!

Подскажите, пожалуйста, как добавить письмо-встречу (собрание, задачу)?

Нравится

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

Задачи и встречи синхронизируются иначе, при помощи интеграции напрямую с MS Exchange. Как её настроить, см. здесь, о технической реализации механизма Sync Engine описано здесь.

scr_chapter_exchange_synchronisation_calendar_synch.png

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

Добрый день!

 

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

Может, кто-то выполнял похожую настройку (если для этого нужна разработка)?

 

Аналогичный вопрос про ответственного за наполнение мультиязычных справочников - как ему облегчить работу по управлению данными на разных языках?

 

Нравится

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

Владимир Соколов,

 

Можно выгрузить в Excel значения, которые нужно перевести, а потом после обработки загрузить их обратно.

 

Ещё можно попробовать правами доступа предоставить права только на нужные записи.

Здравствуйте.

 

Вносить локализированные данные, не переключаясь между языками, можно через раздел [Переводы].

 

Посмотрите статьи на академии по описанию работы с этим разделом по ссылке.

Алла Савельева пишет:

Вносить локализированные данные, не переключаясь между языками, можно через раздел [Переводы].

Пускать ответственных за Продукты в [Переводы] совсем не хочется. Потому и спрашиваю, не реализовывал ли кто-то это в пользовательском интерфейсе 

Владимир Соколов,

 

Можно выгрузить в Excel значения, которые нужно перевести, а потом после обработки загрузить их обратно.

 

Ещё можно попробовать правами доступа предоставить права только на нужные записи.

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