Добрый день!

Добавил кнопки в DataGrid, но они выбиваются из общего стиля, как это можно исправить?



Код с добавлением кнопки в DataGrid

diff: [{

                    operation: "merge",

                    name: "DataGrid",

                    values: {

                        className: "Terrasoft.ConfigurationGrid",

                        generator: "ConfigurationGridGenerator.generatePartial",

                        generateControlsConfig: { bindTo: "generateActiveRowControlsConfig" },

                        changeRow: { bindTo: "changeRow" },

                        unSelectRow: { bindTo: "unSelectRow" },

                        onGridClick: { bindTo: "onGridClick" },                     

                        activeRowActions: [{

                                className: "Terrasoft.Button",

                                style:this.Terrasoft.controls.ButtonEnums.style.GREEN,

                                markerValue: "CallAction",

                                tag: "CallAction",

                                caption: "\u2706"

                        }],

                        initActiveRowKeyMap: { bindTo: "initActiveRowKeyMap" },

                        activeRowAction: { bindTo: "onActiveRowAction" }

                    }}]

Вот их отображение

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

Нравится

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

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

{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"className": "Terrasoft.ConfigurationGrid",
		"generator": "ConfigurationGridGenerator.generatePartial",
		"generateControlsConfig": {bindTo: "generateActiveRowControlsConfig"},
		"multiSelect": {"bindTo": "MultiSelect"},
		"changeRow": {"bindTo": "changeRow"},
		"selectRow": {"bindTo": "createEditRow"},
		"unSelectRow": {"bindTo": "unSelectRow"},
		"onGridClick": {"bindTo": "onGridClick"},
		"activeRowActions": [
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "save",
				"markerValue": "save",
				"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "cancel",
				"markerValue": "cancel",
				"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "remove",
				"markerValue": "remove",
				"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
			}
		],
		"listedZebra": true,
		"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
		"activeRowAction": {"bindTo": "onActiveRowAction"}
	}
},

Сами картинки, видимо, из BaseConfigurationGridRow, где они добавлены в дизайнере в левом блоке.

Зверев Александр пишет:

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


 
{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"className": "Terrasoft.ConfigurationGrid",
		"generator": "ConfigurationGridGenerator.generatePartial",
		"generateControlsConfig": {bindTo: "generateActiveRowControlsConfig"},
		"multiSelect": {"bindTo": "MultiSelect"},
		"changeRow": {"bindTo": "changeRow"},
		"selectRow": {"bindTo": "createEditRow"},
		"unSelectRow": {"bindTo": "unSelectRow"},
		"onGridClick": {"bindTo": "onGridClick"},
		"activeRowActions": [
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "save",
				"markerValue": "save",
				"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "cancel",
				"markerValue": "cancel",
				"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "remove",
				"markerValue": "remove",
				"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
			}
		],
		"listedZebra": true,
		"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
		"activeRowAction": {"bindTo": "onActiveRowAction"}
	}
},

Сами картинки, видимо, из BaseConfigurationGridRow, где они добавлены в дизайнере в левом блоке.

 

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

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

...
activeRowActions: [{  
    // Моя кнопка,
    // Код кнопок из вашего ответа
}],
...

Если бы кнопка была не в гриде, тогда проблема со стилями не возникает, но такой вариант не подходит, так как мои кнопки находятся в activeRowActions

{
					operation: "insert",
					name: "InfoButton",
					parentName: "ActionButtonsContainer",
					propertyName: "items",
					values: {
						click: { bindTo: "onButtonClick"},
						itemType: this.Terrasoft.ViewItemType.BUTTON,
						style: this.Terrasoft.controls.ButtonEnums.style.GREEN,
						hint: { bindTo: "showHint" },
						caption: "\u29C9",
					},
				},

 

Нет никакого стиля базовых кнопок, это три картинки.

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

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

 

 

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

Нравится

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

Замещаете кл. схему SystemDesigner

В diff

{

                "operation": "insert",

                "propertyName": "items",

                "parentName": "<Название контейнера родительского блока>",

                "name": "Название Элемента ",

                "values": {

                    "itemType": Terrasoft.ViewItemType.LINK,

                    "caption": {

                        "bindTo": "Заголовок"

                    },

                    "tag": "Метод обработчик клика",

                    "click": {"bindTo": "invokeOperation"}

                }

            }

В methods добавляете 

"Метод обработчик клика": function() {

                this.openSection("Название схемы раздела");  //Например

            }

Замещаете кл. схему SystemDesigner

В diff

{

                "operation": "insert",

                "propertyName": "items",

                "parentName": "<Название контейнера родительского блока>",

                "name": "Название Элемента ",

                "values": {

                    "itemType": Terrasoft.ViewItemType.LINK,

                    "caption": {

                        "bindTo": "Заголовок"

                    },

                    "tag": "Метод обработчик клика",

                    "click": {"bindTo": "invokeOperation"}

                }

            }

В methods добавляете 

"Метод обработчик клика": function() {

                this.openSection("Название схемы раздела");  //Например

            }

Показать все комментарии
var usrConn = Get<UserConnection>("UserConnection");
var timeNow = DateTime.Now;
var ESQ = new EntitySchemaQuery(usrConn.EntitySchemaManager, "TemporaryRole");
ESQ.AddAllSchemaColumns();
ESQ.Filters.Add(ESQ.CreateFilterWithParameters(FilterComparisonType.GreaterOrEqual, "EndDate", timeNow));
var expiredRoles = ESQ.GetEntityCollection(usrConn);
foreach (var expiredRole in expiredRoles) {
 
	var unitInRoleId = expiredRole.GetTypedColumnValue<Guid>("UnitInRoleId");
 
	Set<Guid>("UnitInRoleIdLast", unitInRoleId);
 
	var uirESQ = new EntitySchemaQuery(usrConn.EntitySchemaManager, "SysUserInRole");
 
	uirESQ.AddAllSchemaColumns();
	uirESQ.Filters.Add(uirESQ.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", unitInRoleId));
	var expiredUsersInRoles = uirESQ.GetEntityCollection(usrConn);
	foreach(var expiredUserInRole in expiredUsersInRoles)
	{
		var schema = usrConn.EntitySchemaManager.GetInstanceByName("SysUserInRole");
		var entity = schema.CreateEntity(usrConn);
		if (entity.FetchFromDB(expiredUserInRole.PrimaryColumnValue)) {	
			entity.Delete();
		}
	}
}
return true;

Есть код для удаления записей в таблице SysUserInRole. После отработки никаких ошибок не возникает, но записи не удаляются.

Нравится

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

Добрый день!

Хотела бы уточнить, как происходит интеграция Creatio с Google календарём. Возможно, существуют интеграции с другими календарями. Какие? Как происходит интеграция? 

Также вопрос, существует ли двусторонняя синхронизация, при которой CRM извлекает данные из календаря и передает данные из CRM

Нравится

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

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

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

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

Нравится

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

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

Опишите подробнее, что именно не получается. Приведите пример Вашего кода.

Проблема решена при помощи переопредления метода:

getGridRowViewModelConfig: function(config) {

                var result = this.callParent(arguments);

                if (result && result.rowConfig && result.rowConfig.Contact) {

                    result.rowConfig.Contact.lookupListConfig = {

                        "filters": [

                            function() {

                                var vendor = this.get("Vendor");

                                var filterGroup = Ext.create("Terrasoft.FilterGroup");

                                if (vendor && vendor.value) {

                                    filterGroup.add("Account",

                                        Terrasoft.createColumnFilterWithParameter(

                                            Terrasoft.ComparisonType.EQUAL, "[AccountInVendor:Account:Account].Vendor", vendor.value));

                                } else {

                                    filterGroup.add("Empty", Terrasoft.createColumnIsNullFilter("Id"));

                                }

                                

                

                                return filterGroup;

                            }

                        ]

                    };

                }

                return result;

            },

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

Добрый день, создал деталь списка контрагентов для контрагента.

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

Нравится

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

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

 

Не могу понять логику загрузки файлов из папки Files.

Добавляю туда свои js-файлы, и при попытке, как сказано в документации: "Обновить пакеты из файловой системы" и "Компилировать", вижу, что загружается предыдущая версия js-файлов.

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

Нравится

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

Максим, Вы точно заливали нужные файлы в нужную папку? Тут пишут:

  • [ Обновить пакеты из файловой системы ] ([ Update packages from file system ]) — загружает пакеты из каталога ...\Terrasoft.WebApp\Terrasoft.Configuration\Pkg в базу данных.

Спасибо, Александр, за внимание к моему вопросу.

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

Максим, уточнил у разработчиков функциональности:

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

Подтягиваются в приложение файлы js через bootstrap.js, который находится в той же папке Files и зарегистрированный в descriptor.json, и при этом это происходит в режиме реального времени, когда приложение работает.

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

Добрый день!

 

Для меня Террасофт новое ПО, понемногу пытаюсь разбираться. При запуске настройки страницы из мастера разделов автоматически генерируется страница с вкладками "Файлы и примечания" и "Лента". На вкладке "Файлы и примечания" есть деталь Примечания, которая отображает поле RICH_TEXT с визуальным редактором. 

Вот он

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

 

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

 

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

 

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

Нравится

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

Александр, на сколько я помню там все было достаточно просто, я сам не разработчик, но делал так. Добавляем текстовое поле на страницу редактирования (не важно преднастроенная страница или карточка редактирования), а далее в исходном коде схемы вставляем/редактируем свойства этого поля. Примерно так:

{
	"operation": "insert",
	"name": "UsrTextEmaila9104234-0e5e-4e48-8f19-3b2a78a42e99",
	"values": {
		"layout": {
			"colSpan": 24,
			"rowSpan": 1,
			"column": 0,
			"row": 5,
			"layoutName": "LeadPageRegisterInfoBlock"
			},
				"bindTo": "UsrTextEmail", //Ваше текстовое поле
				"enabled": false,
				"contentType": 4,  //добавляем
				"labelConfig": { //добавляем
					"visible": false. //добавляем
				}. //добавляем
				}

Таким образом на текстовое поле нужно навесить ContentType и labelConfig. Код выдирал из одного из старых проектов - года 3 назад оно работало)

 

p.s. свойство enabled - у вас будет, естественно, true. 

Александр, на сколько я помню там все было достаточно просто, я сам не разработчик, но делал так. Добавляем текстовое поле на страницу редактирования (не важно преднастроенная страница или карточка редактирования), а далее в исходном коде схемы вставляем/редактируем свойства этого поля. Примерно так:

{
	"operation": "insert",
	"name": "UsrTextEmaila9104234-0e5e-4e48-8f19-3b2a78a42e99",
	"values": {
		"layout": {
			"colSpan": 24,
			"rowSpan": 1,
			"column": 0,
			"row": 5,
			"layoutName": "LeadPageRegisterInfoBlock"
			},
				"bindTo": "UsrTextEmail", //Ваше текстовое поле
				"enabled": false,
				"contentType": 4,  //добавляем
				"labelConfig": { //добавляем
					"visible": false. //добавляем
				}. //добавляем
				}

Таким образом на текстовое поле нужно навесить ContentType и labelConfig. Код выдирал из одного из старых проектов - года 3 назад оно работало)

 

p.s. свойство enabled - у вас будет, естественно, true. 

Александр, можно создать преднастроенную страницу с обычным текстовым полем, переключиться на код и добавить перед «layout» строку «"contentType": Terrasoft.ContentType.RICH_TEXT,», тем самым получить требуемый результат. При последующих правках в дизайнере страницы константа «Terrasoft.ContentType.RICH_TEXT» автоматически заменится на 4, это одно и то же.

define("UsrClientUnit_ca620a9", [], function() {
	return {
		entitySchemaName: "",
		attributes: {},
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
		methods: {},
		dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "STRING8ab3f912-5eb7-42a5-a397-1e2f1d9455b9",
				"values": {
					"contentType": 4,
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "Header"
					},
					"bindTo": "UsrString1",
					"enabled": true
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 0
			}
		]/**SCHEMA_DIFF*/
	};
});

В результате в параметр, который далее можно считать в БП, попадёт введенная строка, окружённая HTML-тегами: 

&lt;div&gt;Hello world!&lt;/div&gt;

Но в реальной детали заметок есть ещё обработка вставляемых по кнопке картинок, реализованная в функции insertImagesToNotes из схемы GeneralDetails и в схеме NotesUtilities. Если она Вам важна, нужно вносить ещё доработки.

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

Добрый день. 

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

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

Все объекты хранятся в отдельном каталоге (не Custom), стоят чекеры "доступ по записям", "доступ по операциям", "Объект доступен на портале как раздел". В настройках доступа объекта прописаны пользователи и права.

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

 

Нравится

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

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

Проверьте наполнение справочников "Список объектов, доступных пользователям портала" и "Список доступных полей объектов на портале". Почистите Redis и перезайти под портальным пользователем.

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

Проверьте наполнение справочников "Список объектов, доступных пользователям портала" и "Список доступных полей объектов на портале". Почистите Redis и перезайти под портальным пользователем.

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

Добрый день, Друзья!

 

Прошу помочь с одним вопросам!

Такая ситуация, компания на 2 страны.

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

Но этого не произошло, данные все сели, а вот карты не активировались.

До этого все контакты садились также и активировались.

Может кто то знающий поможет.

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

Нравится

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

Асу, о каких картах речь? В Studio нет такого раздела. Вы используете продукт Loyalty от Samarasoft, Consimple или Banza?

Или это свои разработки?

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

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