Раньше в старых версиях вроде была возможность запустить компиляцию среди через инструмент сторонний clio, может кто знает как это можно сделать сейчас? Через стандартный workspaseconsole это понятно, но вопрос именно через CLIO

Нравится

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

Sorotiuk Anna,

Кстати, все же нашел на странице help той что я не мог найти компиляцию через clio:

clio build-workspace <application>

 

Александр, здравствуйте!

Вся информация о работе Clio находится на github разработчиков продукта.

Насколько нам известно - запускать компиляцию с помощью clio сейчас нельзя.

https://github.com/Advance-Technologies-Foundation

Sorotiuk Anna,

Спасибо за ответ, на странице github утилиты я не нашел такой информации, думал может упустил.

Sorotiuk Anna,

Кстати, все же нашел на странице help той что я не мог найти компиляцию через clio:

clio build-workspace <application>

 

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

Доброго времени суток!

Столкнулся с такой ситуацией. Для справочного поля в sql-запросе select через left join я выходил на "Название" значения (вместо айди, которое по умолчанию). Но, как выяснилось с помощью "Sys{объект}Lcz", отображались в запросе значения из другой локализации справочника, не "ru-RU". И на данный момент установлено у меня 2 локализации: RU и EN.



Вопрос. Можно ли как-то избавится от иной локализации вовсе, оставив русскую соответственно? Ну или убрать для уже существующих в системе объектов иную локализацию?

П.с. Мои коллеги подсказали, что, убрав локализацию, это повысило бы чутка быстродействие системы.

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

Нравится

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

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

 

Их можно выключить, отключив признак "активный". Это, а также список всех языков в системе можно увидеть в Languages разделе в дизайнере системы. 

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

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

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

 

IF OBJECT_ID('tempdb..#UsedCultures') IS NOT NULL

       DROP Table #UsedCultures

-- Получение списка используемых культур

SELECT DISTINCT cult.Id

INTO #UsedCultures

FROM SysCulture cult

INNER JOIN SysAdminUnit au

       ON au.SysCultureId = cult.Id

INSERT INTO #UsedCultures

    (Id)

SELECT

    SysSettingsValue.GuidValue

FROM

    SysSettingsValue

INNER JOIN SysSettings

    ON SysSettings.Id = SysSettingsValue.SysSettingsId

WHERE

    SysSettings.Code = 'PrimaryCulture'

-- Получение списка таблиц, из которых нужно удалять данные

DECLARE TableNamesCursor CURSOR FOR

SELECT

        t3.TABLE_NAME AS ChildTableName  

FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS t1 

        INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS t2 ON t1.UNIQUE_CONSTRAINT_NAME = t2.CONSTRAINT_NAME

        INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS t3 ON t1.CONSTRAINT_NAME = t3.CONSTRAINT_NAME

WHERE

       t2.TABLE_NAME = 'SysCulture'

       and t2.COLUMN_NAME = 'Id'

       and t3.COLUMN_NAME = 'SysCultureId'

DECLARE @TableName SYSNAME

OPEN TableNamesCursor

FETCH NEXT FROM TableNamesCursor INTO @TableName

WHILE @@FETCH_STATUS = 0  

BEGIN  

       PRINT @TableName

       DECLARE @Sql NVARCHAR(MAX);

       SET @Sql = 'DELETE FROM ' + @TableName + '

            WHERE SysCultureId NOT IN (SELECT Id FROM #UsedCultures)';

       PRINT @Sql

       EXECUTE sp_executesql @Sql

       FETCH NEXT FROM TableNamesCursor INTO @TableName

END

CLOSE TableNamesCursor

DEALLOCATE TableNamesCursor

DELETE FROM SysCulture

WHERE Id NOT IN (SELECT Id FROM #UsedCultures)

IF OBJECT_ID('tempdb..#UsedCultures') IS NOT NULL

       DROP Table #UsedCultures

K.Ivan,

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



Нет, удалять англ. культуру не собираемся.



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

Не подскажете, как обеспечить сохранение данных в справочнике, а не в таблице локализации? Или как привязать таблицу локализации объекта к пакету?



И после Вашего ответа я поставил на русской культуре признак "по умолчанию", с англ. признак убрался, но признак "активный" на англ. культуре не даёт снять (серый чекбокс).

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

 

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

Доброго дня коллеги, а есть такой скрипт для PostgreSQL?

Носуля Роман Викторович,



Роман, добрый день!

 

BEGIN;

-- Получение списка используемых культур

CREATE TEMP TABLE "UsedCultures" ON COMMIT DROP AS

SELECT DISTINCT cult."Id"

FROM "SysCulture" cult

INNER JOIN "SysAdminUnit" au

ON au."SysCultureId" = cult."Id";

INSERT INTO "UsedCultures" ("Id")

SELECT "SysSettingsValue"."GuidValue"

FROM "SysSettingsValue"

INNER JOIN "SysSettings"

ON "SysSettings"."Id" = "SysSettingsValue"."SysSettingsId"

WHERE "SysSettings"."Code" = 'PrimaryCulture';

-- Получение списка таблиц, из которых нужно удалять данные

DO $$

DECLARE

TableNamesCursor REFCURSOR;

TableName varchar;

BEGIN

OPEN TableNamesCursor FOR

SELECT kcu.TABLE_NAME

FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu

INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc

ON ccu.CONSTRAINT_CATALOG = rc.UNIQUE_CONSTRAINT_CATALOG

AND ccu.CONSTRAINT_SCHEMA = rc.UNIQUE_CONSTRAINT_SCHEMA

AND ccu.CONSTRAINT_NAME = rc.UNIQUE_CONSTRAINT_NAME

INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu

ON kcu.CONSTRAINT_CATALOG = rc.CONSTRAINT_CATALOG

AND kcu.CONSTRAINT_SCHEMA = rc.CONSTRAINT_SCHEMA

AND kcu.CONSTRAINT_NAME = rc.CONSTRAINT_NAME

WHERE ccu.COLUMN_NAME = 'Id'

AND ccu.TABLE_SCHEMA = 'public'

AND ccu.TABLE_NAME = 'SysCulture';

--Удаление локализаций

LOOP

FETCH TableNamesCursor INTO TableName;

EXIT WHEN TableName IS NULL;

RAISE NOTICE 'Deleting from table %', TableName;

EXECUTE format('DELETE FROM %I WHERE "SysCultureId" NOT IN (SELECT "Id" FROM

"UsedCultures")', TableName);

END LOOP;

CLOSE TableNamesCursor;

END $$;

DELETE FROM "SysCulture"

WHERE "Id" NOT IN (SELECT "Id" FROM "UsedCultures");

COMMIT

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

Добрый день!

Подскажите, пожалуйста, можно ли каким-то образом включать и отключать бизнес-правила на странице через механизм Feature Toggle?

Попробовал вот так, не работает:

businessRules: /**SCHEMA_BUSINESS_RULES*/{
"vsDirectCalc": {
              	//Прямой расчет: Показывать элемент на странице
				"b9d8b16c-d477-45cc-acc6-5b0954b609cd": {
					"uId": "b9d8b16c-d477-45cc-acc6-5b0954b609cd",
					"enabled": {"bindTo": "Terrasoft.Features.getIsEnabled('vsTMA1418')"},	
					"removed": false,
					"ruleType": 0,
					"property": 0,
					"logical": 0,
					"conditions": [
						{
							"comparisonType": 3,
							"leftExpression": {
								"type": 1,
								"attribute": "ScTmaMechanic"
... и т. д.

 

Нравится

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

Добрый день.

 

Подобный подход не сработает, свойство enabled принимает только true или false, байндинги для него не работают (только если вопрос касается бизнес-правил).

 

К сожалению, на текущий момент, подобный подход через механизм Feature Toggle отсутствует.

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

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

В логах инсталяции я не увидел никаких ошибок

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

Нравится

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

Логи по обновлению хранятся в той директории, в которую вы распаковали архивы обновления. Файл с логами называется  UpdateExtendedLog, если я Вас правильно понял.

Логи обновления пишутся в папку Log для каждой версии из \InstallPackages. Например, \InstallPackages\7_17_3\Log.

 

Что касается ошибки со скриншота - такая ошибка может возникнуть в случае, если в конфигурации нет пакета CustomerCenterSofkey. Проверьте компиляцию после обновления, если она завершается без ошибок, то ошибку обновления можно игнорировать.

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

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

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

Очень долго выполнялась бизнес-логика, когда пользователь CRM в странице редактирования Обращения пытается подгрузить шаблон письма. 

Запустил в SQL Profiler трасировку, выполнил действие, нашел.

Заметил, что Duration гораздо больше CPU + Reads, и нет никакого плана выполнения для такого запроса.

Сталкивался ли кто с подобной ситуацией? Какие меры предпринимали?

Я так понимаю, что рано или поздно данная ситуация возникает у всех, если развивать СРМ с куча интеграций и т.п., получения обращений в систему с 5 почт, подключением сотрудников в количестве от 30-48.

Ресурсов у сервера БД достаточно, 2 виртуалки, по 2 ТБ памяти, по 98 ГБ ОЗУ, процессор 2.4Ггц X 12 ядер.

Нравится

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

Саид, как видно со скриншота, это запрос на вставку в таблицу активностей записи с названием "Диагностировать и решить инцидент #...".

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

Или дело в какой-то глобальной блокировке на таблицу, наложенную одновременнно работающей другой логикой.

Не пробовали аналогичный запрос (естественно, с другим Id) запускать из Management Studio вручную, так тоже тормозит?

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

Да, это на добавление активности "Диагностировать  и решить инцидент ..." запись в трасировке, я забыл в описании указать. В следующий раз попробую через Management Studio выполнить запрос. Вот не знаю почему, но после добавления 2 индексов в SysCaseRight действия такие, как Отправка письма в обращении и т.д., переход между состояниями в кейсе страницы редактирования, стали работать быстрее заметно.

Саид, после добавления индексов ускорилась же не работа конкретного запроса вставки активности, а всё действие? Может, там перед этим (или после) ещё был длительный запрос чтения обращений с учётом прав, он и ускорился?

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

Да, он ускорился.

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

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

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

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

Нравится

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

Попробуйте пока скачать по временной альтернативной ссылке, сообщим ответственной команде что существует проблема со скачиванием сервиса. https://creatiocom-my.sharepoint.com/:u:/g/personal/t_ponomarov_creatio_com/EVQFFMoVSZRJjfmRAY6guVgBCSrQb1hhWSkPj2KLH4n5uA?e=Uyep6o

Попробуйте пока скачать по временной альтернативной ссылке, сообщим ответственной команде что существует проблема со скачиванием сервиса. https://creatiocom-my.sharepoint.com/:u:/g/personal/t_ponomarov_creatio_com/EVQFFMoVSZRJjfmRAY6guVgBCSrQb1hhWSkPj2KLH4n5uA?e=Uyep6o

t.ponomarov, Спасибо!

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

Добрый день!

 

Хотим настроить в Маркетинговой Кампании автоматическую отправку письма-напоминания при отсутствии регистрации на мероприятие. Задача достаточно стандартная, но реализовать ее через элемент БП "Лендинг" не выходит.

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

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

 

Возможно кто-то сталкивался. Что делаем не правильно?

 

Нравится

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

Максим, сравните настройки своей кампании со стандартной настроенной «Конференция "Дни CRM"». Там тоже лендинг и три ветви для возможных его результатов. Из отличий от Вашего скриншота, там указывается точное время и условие фильтрации, выбран объект «Контакт». Если у Вас настроить аналогично, то тоже не срабатывает?

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

Как реализовать синхронизацию товаров с маркетплейса Prom.ua в Creatio?

Ручной импорт из Excel - не решение, поскольку цены могут меняться несколько раз на день.

Какой либо загрузчик фида или импорт с Гугл таблиц не нашел.

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

Кто сталкивался с такой задачей?

Спасибо.

Нравится

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

Дмитрий, для интеграции в том числе и с  Prom.ua есть дополнение ApiX-Drive connector, которое взаимодействует с сервисом ApiX Drive. Но там товаров действительно нет.

На сайте Prom.ua тоже не нашёл информации о документации разработчика, возможно, её предоставляют по запросу.

В зависимости от характера API, подход может быть противоположным: либо из БП в Creatio вызывать веб-сервис Prom, передавая и получая параметры. Либо на стороне Prom (или промежуточном сервере, взаимодействующем с обоими системами) подключаться к сайту Creatio по OData и добавлять или менять значения в нужном объекте. Наконец, извне можно запускать БП в Creatio, передавая в него нужные значения, а уже процесс будет изменять данные.

 

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

Добрый день!

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

Есть ли способ создать вместо горизонтальных полей вертикальные (вроде однострочной таблицы)?

Пример креплю

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

Нравится

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

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

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

Второй вариант сделать деталью и контролировать чтобы в детали была только запись.

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

Подкопаев Михаил Олегович,

Спасибо! Я думала решить вопрос так же, но возникают времязатратные вопросы, а дело-то маленькое..

 

Спасибо! Думаю, один из этих способов подойдетwink

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

Добрый день!

 

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

Если вставить просто макрос со ссылкой на многострочное поле, то шаблон не находит
и \n в тексте и считает, что переноса строк нет, хотя они и есть.

Возможно есть вариант заменять переносы строк на \n в рамках бизнес-процесса?

Нравится

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

   Отправка письма

 var emailSendService = new EmailSendService(context.UserConnection);

    

    var activityId = Guid.NewGuid();

    var insertActivity = new Terrasoft.Configuration.Activity(context.UserConnection);

    insertActivity.Id = activityId;

    insertActivity.SetDefColumnValues();

    insertActivity.Title = "Тема письма";

    insertActivity.Recepient = email;

    insertActivity.Sender = senderEmail;

    insertActivity.PriorityId = new Guid("D625A9FC-7EE6-DF11-971B-001D60E938C6");

    insertActivity.IsHtmlBody = true;

    insertActivity.Body = "<div>Тело письма</div>";

    insertActivity.TypeId = new Guid("E2831DEC-CFC0-DF11-B00F-001D60E938C6");

    insertActivity.MessageTypeId = new Guid("7F6D3F94-F36B-1410-068C-20CF30B39373");

    insertActivity.Save();

    

    emailSendService.Send(activityId.ToString());

Нормально манипулировать текстом письма можно только используя C#. Делает ScriptTask в нем отправку письма на C# и собираете любое тело письма которое вам нужно.

Полозюков Евгений Петрович,

Спасибо! Подскажите, где можно подробнее прочитать про отправку письма по скрипту?

   Отправка письма

 var emailSendService = new EmailSendService(context.UserConnection);

    

    var activityId = Guid.NewGuid();

    var insertActivity = new Terrasoft.Configuration.Activity(context.UserConnection);

    insertActivity.Id = activityId;

    insertActivity.SetDefColumnValues();

    insertActivity.Title = "Тема письма";

    insertActivity.Recepient = email;

    insertActivity.Sender = senderEmail;

    insertActivity.PriorityId = new Guid("D625A9FC-7EE6-DF11-971B-001D60E938C6");

    insertActivity.IsHtmlBody = true;

    insertActivity.Body = "<div>Тело письма</div>";

    insertActivity.TypeId = new Guid("E2831DEC-CFC0-DF11-B00F-001D60E938C6");

    insertActivity.MessageTypeId = new Guid("7F6D3F94-F36B-1410-068C-20CF30B39373");

    insertActivity.Save();

    

    emailSendService.Send(activityId.ToString());

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