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

Нравится

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

Добрый день.

 

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

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

 

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

Ivan Kuchma,

Такой вопрос, можно ли добавить уже созданную деталь просто на форму мини-карточки при помощи разработки? И обязательно ли создавать под это контейнер с полями tabs?

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

почему при добавлении фильтра нельзя использовать значение поля NrbCity.Name?

                                    esqResult.AddAllSchemaColumns();
                                    esqResult.AddColumn("NrbCity.Name");           
                        var entity = esqResult.GetEntity(UserConnection, purchaseId);

этот код выполняется без ошибок.

а вот дальше:

esqMatching.CreateFilterWithParameters(FilterComparisonType.Equal, "UsrCity", entity.GetColumnValue("NrbCity.Name").ToString());
ругается что 

Terrasoft.Common.ItemNotFoundException: 'Значение с именем "NrbCity.Name" не найдено'
что не так-то? как использовать значение этого поля дальше в другом фильтре?

Нравится

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

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

 

Для работы с такой колонкой можно сохранить её название в переменную и потом обращаться по нему:

string cityColumnName = esqResult.AddColumn("NrbCity.Name").Name;
...
entity.GetColumnValue(cityColumnName).ToString();

Система формирует названия таких колонок по-другому, по-моему, через подчеркивание. Вот таким образом: 'NrbCity_Name'.

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

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

 

Для работы с такой колонкой можно сохранить её название в переменную и потом обращаться по нему:

string cityColumnName = esqResult.AddColumn("NrbCity.Name").Name;
...
entity.GetColumnValue(cityColumnName).ToString();

Система формирует названия таких колонок по-другому, по-моему, через подчеркивание. Вот таким образом: 'NrbCity_Name'.

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

entity.GetColumnValue<string>("NrbCity.Name").Name

 

Dima Avdoshin,

это ничем не отличается от моего варианта

entity.GetColumnValue<string>("NrbCity.Name") - не будет найден

 

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

да, спасибо! именно так все и оказалось.

Gladushkin Peter,

("NrbCity.Name").Name у вас приведение к стрингу, а у меня взято свойство Name , как Аллы показано при добавлении колонки
Показать все комментарии

в проекте Terrasoft.Configuration.sln

через метадату отображатся вот такие описания встроенных методов:

public EntitySchemaQueryColumn AddColumn(EntitySchemaQueryFunction function);
        //
        // Summary:
        //     ####### # ######### ####### # ####### ###### # ##### ####### ## ######### ####
        //     # ####### ############ ######## #####.
        //
        // Parameters:
        //   columnPath:
        //     #### # ####### ##### ############ ######## #####.
        //
        // Returns:
        //     ######### ######### #######.
        //
        // Exceptions:
        //   T:Terrasoft.Common.ArgumentNullOrEmptyException:
        //     #### # ######## ######### columnPath ######## ###### ######## ### null.

почему так и как исправить на читаемое?

Нравится

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

Добрый день.

В ядре Creatio некоторые классы и методы описаны комментариями на русском языке и итоге затираются. Это уже обсуждалось тут.

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

Добрый день, коллеги! Столкнулся с такой проблемой. Создал шаблон email-сообщения. Когда я отправляю письмо в бизнес-процессе по этому шаблону, оно приходит без фона блока (в качестве фона используется картинка, а не заливка). Нашёл такую закономерность, что если картинку фона сжать до 15 КБ, то она приходит в качестве фона. Но при таком сильном сжатии (с 80 КБ до 15 КБ) сильно ухудшается качество. Картинка в base64 тега table в background. Как мне заставить Creatio отправить фон, не теряя при этом в качестве изображения?  

Нравится

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

Заикин Дмитрий, добрый день!
Фоновое изображение должно отправляться независимо от размера.
Возможно проблема в блокировках изображений\вложений\файлов со стороны почтового провайдера. 
Убедитесь, что email с которого уходят письма доверенный. Также, попробуйте проверить отправку на разные почтовые провайдеры.

Заикин Дмитрий, добрый день!
Фоновое изображение должно отправляться независимо от размера.
Возможно проблема в блокировках изображений\вложений\файлов со стороны почтового провайдера. 
Убедитесь, что email с которого уходят письма доверенный. Также, попробуйте проверить отправку на разные почтовые провайдеры.

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

Добрый день, 

 

Подскажите, есть ли в Creatio контрол для загрузки изображения в колонку типа Image? 

 

Есть реализации, которые позволяют загружать изображение в колонку с типом Image link, когда картинка в итоге загружается в таблицу SysImage, но это решение не подходит. 

Нравится

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

Добрый день, можете более детально описать, что вам необходимо сделать?

У меня есть карточка раздела, в которой пользователю нужно загрузить 3 картинки. Раздел привязан к сущности, у которой есть соответственно 3 колонки с типом Image. Эти изображения потом обрабатываются в событийном процессе сущности и их удобно хранить именно в самой сущности, а не в SysImage. Поэтому хотелось бы узнать существует ли способ загрузить изображение с помощью какого либо клиентского контрола прямо в сущность.

 

 

Рекомендую ознакомиться со статьей https://academy.terrasoft.ua/docs/developer/elements_and_components/bas…. Возможно она вам поможет

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

Всем доброго времени суток.

Есть класс SideBar и я создал модуль NrbSideBarWithCountersModule который наследуется от него. 

define("NrbSideBarWithCountersModule", ["terrasoft", "ext-base"], function() {
	Ext.define("Terrasoft.controls.NrbSideBarWithCountersModule", {
		extend: "Terrasoft.SideBar",
		alternateClassName: "Terrasoft.NrbSideBarWithCountersModule",
		Ext: null,
		sandbox: null,
		Terrasoft: null,
		itemTplMap: [
			"caption",
			"imageUrl",
			"href",
			"domAttributes",
			"availableEntities"
		],
 
		itemTpl: [
			"&lt;tpl if=\"visible != false\"&gt;",
			"&lt;li data-item-index=\"{itemIndex}\"",
			"&lt;tpl if=\"isSelected == true\"&gt;",
			"class=\"ts-sidebar-selected-item\"",
			"&lt;/tpl&gt;",
			"&gt;",
			"&lt;span class=\"vertical-strip\"&gt;&lt;/span&gt;",
			"&lt;tpl if=\"href\"&gt;&lt;a target=\"_self\" class=\"sidebar-item-link\" href=\"{href}\"&gt;&lt;/tpl&gt;",
			"&lt;div id=\"sidebar-item-wrapper-{itemIndex}\" class=\"ts-sidebar-item-wrapper\"&gt;",
			"&lt;div id=\"sidebar-item-image-{itemIndex}\" class=\"ts-sidebar-item-image\" data-item-marker=\"{caption}\" " +
			"style=\"background-image:url({imageUrl})\" &lt;tpl foreach=\"domAttributes\"&gt;{$}=\"{.}\"&lt;/tpl&gt;&gt;&lt;/div&gt;",
			"&lt;div id=\"sidebar-item-text-{itemIndex}\" class=\"ts-sidebar-item-text\"&gt; {caption} ",
			"&lt;div id=\"sidebar-item-counter-{itemIndex}\" class=\"ts-sidebar-item-counter\"&gt; {availableEntities} ",
			"&lt;/div&gt;",
			"&lt;/div&gt;",
			"&lt;tpl if=\"href\"&gt;&lt;/a&gt;&lt;/tpl&gt;",
			"&lt;/li&gt;",
			"&lt;/tpl&gt;"
		],
 
	});
	return Terrasoft.NrbSideBarWithCountersModule;
});

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

define("NrbSectionMenuModule", ["ServiceHelper", "NrbSectionMenuModuleResources", "ModuleUtils", "MaskHelper",
		"LeftPanelUtilitiesV2", "CheckModuleDestroyMixin"],
	function (resources, ModuleUtils, ServiceHelper, MaskHelper, LeftPanelUtilities) {
		Ext.define("Terrasoft.configuration.NrbSectionMenuModule", {
			alternateClassName: "Terrasoft.NrbSectionMenuModule",
			override: "Terrasoft.SectionMenuModule",
			render: function (renderTo) {
				if (!Ext.isEmpty(viewModel) &amp;&amp; !Ext.isEmpty(sideBar)) {
					sideBar.destroy();
				}
				sideBar = Ext.create("Terrasoft.NrbSideBarWithCountersModule", Terrasoft.deepClone(sideBarConfig));
				sideBar.bind(viewModel);
				sideBar.render(renderTo);
				MaskHelper.HideBodyMask();
			},
			getSideBarItems: function () {
				var config = [];
				var moduleStructure = Terrasoft.configuration.ModuleStructure;
				var modules = info &amp;&amp; info.modules ? info.modules : Object.keys(moduleStructure);
				if (!modules) {
					return;
				}
				var availableSections = info.AvailableSections;
				var defaultIconUrl = Terrasoft.ImageUrlBuilder.getUrl(resources.localizableImages.DefaultIconSvg);
				modules.forEach(function (module) {
					if (module.moduleId !== Terrasoft.GUID_EMPTY) {
						var moduleName = module.moduleName ? module.moduleName : module;
						var moduleConfig = moduleStructure[moduleName];
						if (moduleConfig.hide !== "true") {
							if (!Ext.isArray(availableSections) || availableSections.indexOf(moduleName) &gt;= 0) {
								var caption = moduleStructure[moduleName].moduleCaption;
								var tag = ModuleUtils.getModuleTag(moduleName);
								var imageId = moduleStructure[moduleName].imageId;
								var imageUrl = imageId ? getImageUrl(imageId) : defaultIconUrl;
								var itemUrl = Terrasoft.workspaceBaseUrl + "/Nui/ViewModule.aspx#" + tag;
								var count = this.getCountOfAvailableProjects();
								var itemConfig = {
									caption: caption,
									tag: tag,
									imageUrl: imageUrl,
									href: itemUrl,
									domAttributes: { "module-name": module.moduleName },
									availableEntities: count
								};
								if (!Terrasoft.Features.getIsEnabled("SectionMenuLink")) {
									itemConfig.href = null;
								}
								config.push(itemConfig);
							}
						}
					}
				});
				return config;
			},
 
			getCountOfAvailableProjects: function () {
				var requestConfig = {
					serviceName: "NrbProjectCounterService",
					methodName: "GetNumberOfAvailableProjects",
					callback: this.showResult
				};
				this.callService(requestConfig, this);
			},
 
			showResult: function (result) {
				console.log(result);
			},
		});
 
		return Terrasoft.NrbSectionMenuModule;
	});

Переопределение не даёт нужного результата и возник такой вопрос. Правильно ли тут использовать переопределение или лучше использовать наследование? 
И как я понял мне надо будет переопределить все модули которые взаимодействовали с SectionMenuModule и поменять на NrbSectionMenuModule?

Нравится

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

Модули не замещаются как карточки. То что создали свой модуль NrbSideBarWithCountersModule это ваш модуль. А левую панель так и продолжает выводить SectionMenuModule.

Динар, для того, чтобы Ваш класс заменил стандартный, нужно в нём указать override и название того, что он замещает. А затем упомянуть название Вашего модуля в замещённом BootstrapModulesV2, который загружается при старте. Более подробно о таком подходе см. пример в этой теме.

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

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

Мы команда крупного предприятия в Москве, внедряем сами себе Creatio. На данный момент ищем человека в команду, который мог бы нам помочь с интеграциями и другими задачами по внедрению платформы (более 700 рабочих мест и куча бизнес-процессов). Для внедрения есть целый проектный офис, который уже описал большую часть процессов в bpmn и провел другие работы. В общем мы знаем что и как, только рук не хватает).

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

Нравится

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

Всем добрый день!

Столкнулся с следующей проблемой перестали выгружаться пакеты в ФС, пишет. что изменений не обнаружено. Редис чистил, пересоздавал приложение в IIS, удалял пакеты из папки Pkg в конфигурации - не помогает.

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

Нравится

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

Скорее всего включена разработка в файловой системе, когда она включена то при разратобке используется локальный статический контент (к примеру C# файлы)

Скорее всего включена разработка в файловой системе, когда она включена то при разратобке используется локальный статический контент (к примеру C# файлы)

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

Доброго дня, имеется bpm которая при GET запросе 0/ServiceModel/EntityDataService.svc/ContactColletion возвращает xml с контактами, можно ли GET запросом возвращать JSON и если да, то где про это написанно? Если нельзя, то как вернуть JSON для oData 3?

Нравится

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

Добавьте header к запросу

Accept: application/json;odata=verbose

Добавьте header к запросу

Accept: application/json;odata=verbose

я смог сделать это в постмане, но все же не понятно, мб подскажете возможно ли в террасофте возвращать json по обращению к uri, если можно сделать это не переписывая сервис, буду благодарен за подсказку)
условно я иду по адресу /0/ServiceModel/EntityDataService.svc/ContactCollection и мне падает 
 

{

    "d": {

        "results": [

            {

                "__metadata": {

                    "id": "http://localhost:85/0/ServiceModel/EntityDataService.svc/ContactCollect…",

                    "uri": "http://localhost:85/0/ServiceModel/EntityDataService.svc/ContactCollect…",

                    "type": "Terrasoft.Configuration.Contact"

                },

                "Photo": {

                    "__deferred": {

                        "uri": "http://localhost:85/0/ServiceModel/EntityDataService.svc/ContactCollect…"

                    }

                },

                "Owner": {

                    "__deferred": {

                        "uri": "http://localhost:85/0/ServiceModel/EntityDataService.svc/ContactCollect…"

                    }
...и т.д.

Насколько понял, только заголовком. Такой формат здесь не поддерживается: «ContactCollection?$format=json». А в OData 4 по умолчанию идёт JSON.

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

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

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

Устанавливаю пакет через CLIO - выдает ошибки - https://prnt.sc/tqkuyw

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

Версия системы 7.16.2.1600 

 

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

Нравится

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

так же при выполнении команды clio install-gate -e dev выдает ошибки - https://prnt.sc/tqnh3s

Алексей, по первому скриншоту, похоже, дело в файловой системе Вашего ПК, не может получить доступ к определённой папке.

 

По второму, у Вас как-то получилось вместо названия объекта «7.16.2», что делать нельзя, названия должны быть с латинскими буквами и без точек. Возможно, при оформлении перепутали с версией.

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

Странно как то получается создаю новый пакет Test и сразу  пушу его в систему и выдает такое - 

https://prnt.sc/tr3etj. Тут ну никак и нигде не задается имя 7.16.

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

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

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

"Вы создали пакет командой к clio?" - пакет Test да. 

 

Просто создали так?

Creating new package

To create new package project, use the next command:

 clio new-pkg &lt;PACKAGE_NAME&gt;

you can set reference on local core assembly with using Creatio file design mode with command in Pkg directory

 clio new-pkg &lt;PACKAGE_NAME&gt; -r bin

Может, что-то делали с версией?

Set package version

Set a specified package version into descriptor.json by specified package path.

clio set-pkg-version &lt;PACKAGE PATH&gt; -v &lt;PACKAGE VERSION&gt;

 

Вообще, не видя создавшегося пакета, сложно  сказать, что в нём не так.

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

просто clio new-pkg <PACKAGE_NAME>

Значит, смотреть внутрь пакета, где там упоминается «7.16.2». А падает только при установке на конкретный Ваш сайт? А если ставить на демку, то то же самое?

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

Устанавливал созданный пакет через clio на облачный дев, через интерфейс системы, стал без ошибок.

 

Значит, всё же дело не в пакете, а в сайте, куда его ставили? Может, версии отличаются?

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

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

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

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

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

Мотков Илья,

Добрый день. Я бы добавил, что есть способы достучаться из схем в функциональность Files. Через тот же ClassFactory

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

 

Ещё дополню, что все классы схем располагаются в неймспейсе Terrasoft.Configuration, если другое не задано.

 

Пакеты по сути просто папки, а конфигурация компилируется целиком, и все классы в конфигурации видны другим классам в конфигурации не зависимо от пакета.

 

Если речь о классах во внешних библиотеках – то обращаться так же как и из пакета в котором эта библиотека привязана.

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

Коллеги, разобрался в чем проблема... при создании нового пакета в этих папках - https://prnt.sc/u638lk генерируется текстовый файл placeholder, вот из-за него и вываливается ошибка при деплое пакета в среду, после удаления деплой прошел корректно и ошибка -

"Terrasoft.Common.InvalidNameException: Название объекта "7.16.2" некорректно" не выскакивала

Алексей, разработчики сообщили, что мы поищут способ решения этой проблемы, на текущий момент данную проблему можно обойти, указав в ConnectionStrings.config в секции tempDirectoryPath простой пусть С:\Temp

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

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