Есть ли способ сохранить sql сценарий без проверки?

У меня проблема с доступом с сервера разработки на связанные сервера и сценарий не привязывается к пакету.

Есть способ это обойти?

Нравится

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

Создаете пустой скрипт. Потом в в файловой системе в вашем пакете в папке SqlScripts находите скрипт и вставляете в него код. Коммит скрипта делаете из файловой системы.

 

Либо создаете и коммитите пустой скрипт. Находите этот скрипт в Tortoise Repository Browser и меняете в нем код,

Создаете пустой скрипт. Потом в в файловой системе в вашем пакете в папке SqlScripts находите скрипт и вставляете в него код. Коммит скрипта делаете из файловой системы.

 

Либо создаете и коммитите пустой скрипт. Находите этот скрипт в Tortoise Repository Browser и меняете в нем код,

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

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

{
	"SyncExtensions": [
		"ScpMobileSyncExtensions"
	],
	"SyncOptions": {
//Настройки синхронизации
  }
}

Однако этот модуль не загружается вообще при синхронизации с реального устройства (в моём случае под Android). Пробовал отдельно просто выводить окошко с сообщение Terrasoft.MessageBox.showMessage("Тест"); При синхронизации с эмулятора окно с сообщением выводится как и положено, но при синхронизации с телефона ничего не происходит.

Кто сталкивался с подобным, как удалось решить?

Нравится

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

SyncExtensions стал deprecated c версии 7.16.0 так как перешли на «нативную» синхронизацию написаную на Java.

Соответсвенно, пользовательский javascript подключить туда нельзя.

Есть обходное решение — отключить нативную синхронизацию.

Но делать это настоятельно не рекомендуем, т.к. все новые «фишки» у Вас перестанут работать.

Опишите свою проблему, может, её «в коробке» исправят в новых версиях.

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

Добрый день, всем. Очень долго выполняются запросы связанные с UpdateQuery, SelectQuery, InsertQuery. Кто-нибудь сталкивался с этим? Какие пути использовали, для нахождения проблемы?

Нравится

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

Для анализа запросов есть профайлер в mssql. Запускаете профайлере, делаете запрос из клиентской части. Смотрите какой sql для select получается в профайлере.

Еще может быть, что у вас тормозит обмен по websocket. Надо посмотреть в консоль разработчика в браузере, нет ли там ошибки с подключение к websocket.

И еще creatio требовательна к ресурсам, если вам кажется что все работает медленно, то стоит проанализировать производительность ваших серверов.

Для анализа запросов есть профайлер в mssql. Запускаете профайлере, делаете запрос из клиентской части. Смотрите какой sql для select получается в профайлере.

Еще может быть, что у вас тормозит обмен по websocket. Надо посмотреть в консоль разработчика в браузере, нет ли там ошибки с подключение к websocket.

И еще creatio требовательна к ресурсам, если вам кажется что все работает медленно, то стоит проанализировать производительность ваших серверов.

В profiler смотрел, запросы выполняются за доли миллисекунд.

Websocket работает отлично.

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

Саид Иманмагомедов,

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

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

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

Столкнулись с ситуацией, когда у пользователя не отображается значение Lookup поля, если в lookupListConfig.columns указать дополнительные колонки и у пользователя не прав на запись из этого поля. Также имеется логика, которая завязана на изменение этого поля, поэтому использование this.set не представляется возможным (при использовании silent: false значение устанавливается, но не отображается на странице). Есть какие-либо варианты решения данной ситуации с сохранением lookupListConfig.columns?

Нравится

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

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

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

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

Есть задача у заказчика: нужны дашборды (мы выбрали "Показатель"), которые будут динамически меняться, в зависимости от текущей недели. Точнее - по неделям на 5 недель вперед. По общей сути - эти показатели отображают сумму по конкретному полю по всем записям в разделе.

Например. Нужны показатели тек. недели, показатель след. недели, показатель недели после следующей и т.д. до 5 недель. Как только наступает понедельник новой недели, эти показатели также передвигаются на неделю. 

На счет фильтра по "Тек. недели" и "След. недели" знаю, использую, но этого заказчику недостаточно.

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



Ниже прикреплю скриншоты, о чем идёт речь.



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

Работаю на 7.16.1

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

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

Нравится

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

Добрый день, Андрей!

Базовой логикой приложения нет возможности построить данный тип показателей.

Самый оптимальный вариант, с минимумом затрат и загрузкой сервера, для решения Вашей бизнес-задачи будет создание представление (VIEW), которое будет содержать нужные данные. А потом использовать его для построения Показателя. В Вашем случаи, представление с расчётными полями: Дней, Недель, Месяцев и Лет. Которые будут считать разницу в днях, неделях, месяцах, годах между датой того что Вам надо получить и текущей датой.

Например на активностях:

SELECT datepart(wk, getdate()) - datepart(wk, StartDate) as 'Недель', * -- другие необходимые поля

FROM Activity

А потом строить Показатель на основании этого представления, с фильтрами "Недель" = -2 (для позапрошлой недели) или "Недель" = 2 для след. следующей недели. where (datepart(wk, getdate()) - datepart(wk, StartDate)) = -17 (событие которые было 17 недель назад

На ответственной команде разработки уже есть задача по совершенствованию фильтром для возможности построения Дашбордов без использования представлений.

Детальнее о работе с представлениями Вы можете ознакомиться на сайте Академии:

https://academy.terrasoft.ru/documents/technic-sdk/7-16/lokalizaciya-pr…

А также просмотреть похожие посты на здесь на Сommunity. Вот один из примеров построения представления https://community.terrasoft.ru/questions/sozdanie-obekta-na-osnove-db-v…

С уважением, Елена.

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

Добрый день. 

Столкнулись с такой проблемой, что на больших объёмах данных (несколько миллионов записей) в таблице продуктов в заказе. Настройка синхронизации объекта стандартная, в которой в SyncOptions установлен параметр "SyncByParentColumnWithRights": "Order"

Проверили запрос непосредственно в базе. Он выполняется несколько минут. В результате всего одна строка. Основное время исполнения уходит на проверку прав. 

Кто сталкивался с подобными проблемами, как удавалось решить?

Нравится

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

Стоит уточнить производительность сервера на котором стоит бд.

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

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

Стоит уточнить производительность сервера на котором стоит бд.

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

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

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

Добрый день!

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

 

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

Заранее спасибо!

Нравится

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

Создаете отдельный модуль

define("SfDatePicker", ["LookupQuickAddMixin"], function() {

    Ext.define("Terrasoft.SfDatePicker", {

        override: "Terrasoft.DatePicker",

      

        shortDayNames: ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"]

    });

});

и замещаете BootstrapModulesV2

define("BootstrapModulesV2", ["SfDatePicker"], function() {

    return {};

});

аналогичный вопрос пока без ответа https://community.terrasoft.ua/questions/kak-nachat-nedelyu-s-ponedelni…

Создаете отдельный модуль

define("SfDatePicker", ["LookupQuickAddMixin"], function() {

    Ext.define("Terrasoft.SfDatePicker", {

        override: "Terrasoft.DatePicker",

      

        shortDayNames: ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"]

    });

});

и замещаете BootstrapModulesV2

define("BootstrapModulesV2", ["SfDatePicker"], function() {

    return {};

});

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

Большое спасибо!

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

Добрый день! Подскажите, можно ли настроить отображение сайта для написания комментария к оценке уровня удовлетворенности, если нет портальных лицензий?

Нравится

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

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

Нет.

См. инструкцию:

1. Выдайте системному портальному пользователю SysPortalConnection портальную лицензию

Идея добавить возможность оценки в Sales зарегистрирована.

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

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

Голосованием путём нажатия на кнопки в письме, тем самым механизмом, о котором Вы и спрашиваете.

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

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

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

Но вот как именно загрузить ее я не понимаю

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

Или мне надо загрузить изображение в эту таблицу, далее получить ее uri  или data и так грузить?

Может где то в стандартных схемах такое видели 

Нравится

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

Dima Avdoshin,

Грузим просто создав запись в  C# в таблице SysImage.

 

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

 

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

Stream stream = new MemoryStream(byteArray);

var size = Convert.ToInt32(stream.Length);

var insertActivityFile = new Terrasoft.Configuration.ActivityFile(context.UserConnection);

        insertActivityFile.Id = Guid.NewGuid();

        insertActivityFile.SetDefColumnValues();

        insertActivityFile.Name = "Name.txt";

        insertActivityFile.SetStreamValue("Data", stream);

        insertActivityFile.Size = size;

        insertActivityFile.TypeId = new Guid("529BC2F8-0EE0-DF11-971B-001D60E938C6");

        insertActivityFile.Version = 1;

        insertActivityFile.ActivityId = activityId;

        insertActivityFile.Save();

Куда вы их грузить собрались, какая бизнес задача?

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

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

В карточке контрагента есть вверху слева элемент с изображением. Вам нужен упрощенный вариант, смотрите как это реализовано в карточке. Изображение хранится в SysImage, поле в контрагенте AccountLogo ссылается на SysImage. В SysImage данные хранятся в виде байт, без base64, поле Data и PreviewData.

В AccountPageV2 изучите элемент "name": "Photo", "parentName": "AccountPhotoContainer".

 

Вот еще статья https://academy.terrasoft.ru/docs/developer/elements_and_components/bas…

                        

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

Понял, скорее всего как, мы обращаемся в таблицу sysImage , далее грузим изображение и получаем guid новосозданного изображения , который и грузим куда нам необходимо так ?

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

 

private static Guid AddImage(string ImgUrl)
		{
			UserConnection userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"];
			Guid newId = Guid.NewGuid();
			EntitySchema schemaImage = userConnection.EntitySchemaManager.GetInstanceByName("SysImage");
			Entity addImage = schemaImage.CreateEntity(userConnection);
			addImage.SetColumnValue("Id", newId.ToString());
			//addImage.SetColumnValue("Name", "lol");
			addImage.SetColumnValue("Data", ImgToByte(ImgUrl));
			addImage.Save();
			return newId;
		}

 

Dima Avdoshin,

Грузим просто создав запись в  C# в таблице SysImage.

 

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

 

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

Stream stream = new MemoryStream(byteArray);

var size = Convert.ToInt32(stream.Length);

var insertActivityFile = new Terrasoft.Configuration.ActivityFile(context.UserConnection);

        insertActivityFile.Id = Guid.NewGuid();

        insertActivityFile.SetDefColumnValues();

        insertActivityFile.Name = "Name.txt";

        insertActivityFile.SetStreamValue("Data", stream);

        insertActivityFile.Size = size;

        insertActivityFile.TypeId = new Guid("529BC2F8-0EE0-DF11-971B-001D60E938C6");

        insertActivityFile.Version = 1;

        insertActivityFile.ActivityId = activityId;

        insertActivityFile.Save();

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

да , щас сделаю спасибо

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

да все помогло спасибо

на будущее для тех кто будет искать ответ пример подобного реализован в 

ProfileImageLoader пакета OmnichannelMessaging

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

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

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

в метаданных объекта тоже не нашел такой ключ

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

Нравится

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

Dima Avdoshin,

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

Надо смотреть таблицы SysModule, SysModuleEdit, SysModuleEntity, что там не так с вашим разделом.

Попробуйте посмотреть системную настройку текущий пакет. Возможно в вашем текущем пакете не настроены зависимости, которые позволяют замещать раздел?

Можете установить пакет "Custom" текущим и попробовать зайти в мастер. Если ошибке не будет, то это ваш случай

Сломали значит раздел. Подробней опишите последовательность действий и проблему.

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

Последнее что я делал с этим объектом,  создавал на основании объекта, который использовался для детали сам раздел


 

Дмитрий А.,

нет, не вышло

Dima Avdoshin,

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

Надо смотреть таблицы SysModule, SysModuleEdit, SysModuleEntity, что там не так с вашим разделом.

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