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

Что нужно сделать, чтобы они все заработали?

Нравится

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

Добрый день!

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

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

 

Нравится

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

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

Ещё графики переделали в 7.12, например, появилась кнопка разворачивания каждого на весь экран.

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

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

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

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



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

Подскажите, пожалуйста, хотим изменить на странице CaseRatingFeedbackPage (Service Entrprise) background. Исходя из кода необходимо в ресурс background (images) засунуть свою картинку. Это получилось, но не понятно, что необходимо написать в качестве исходного кода в замещаемой странице. Если использовать весь код CaseRatingFeedbackPage  , то ни один контейнер не отображается, отображается только картинка в качестве background.

Исходный код страницы CaseRatingFeedbackPage :

define("CaseRatingFeedbackPage", ["ImageView", "ESNHtmlEditModule",
		"CaseRatingFeedbackPageResources", "css!CaseRatingFeedbackPage"],
	function() {
		return {
			attributes: {
				"Comment": {
					"dataValueType": this.Terrasoft.DataValueType.TEXT,
					"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
				},
				"Token": {
					"dataValueType": this.Terrasoft.DataValueType.GUID,
					"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
				},
				"EnableQuestionToRequestor": {
					"dataValueType": this.Terrasoft.DataValueType.BOOLEAN,
					"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
				}
			},
			diff:/**SCHEMA_DIFF*/[
				{
					"operation": "insert",
					"name": "MainContainer",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							"wrapClassName": ["main-container"]
						},
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "LogoContainer",
					"parentName": "MainContainer",
					"propertyName": "items",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							"wrapClassName": ["logo-container container"]
						},
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "ContentContainer",
					"parentName": "MainContainer",
					"propertyName": "items",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							"wrapClassName": ["content-container"]
						},
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "ThanksMessageContainer",
					"parentName": "ContentContainer",
					"propertyName": "items",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							"wrapClassName": ["thanks-message-container container"]
						},
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "FeedbackContainer",
					"parentName": "ContentContainer",
					"propertyName": "items",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							"wrapClassName": ["feedback-container container"]
						},
						"visible": {
							"bindTo": "EnableQuestionToRequestor"
						},
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "Logo",
					"parentName": "LogoContainer",
					"propertyName": "items",
					"values": {
						"id": "logoImage",
						"itemType": this.Terrasoft.ViewItemType.COMPONENT,
						"className": "Terrasoft.ImageView",
						"imageSrc": {
							"bindTo": "getLogoUrl"
						},
						"classes": {
							"wrapClass": ["logo"]
						}
					}
				},
				{
					"operation": "insert",
					"parentName": "ThanksMessageContainer",
					"propertyName": "items",
					"name": "ThanksLabel",
					"values": {
						"itemType": this.Terrasoft.ViewItemType.LABEL,
						"caption": {
							"bindTo": "Resources.Strings.ThanksMessage"
						},
						"labelConfig": {
							"classes": ["thanks"]
						}
					}
				},
				{
					"operation": "insert",
					"name": "CommentTextEdit",
					"parentName": "FeedbackContainer",
					"propertyName": "items",
					"values": {
						"className": "Terrasoft.MemoEdit",
						"itemType": this.Terrasoft.ViewItemType.MODEL_ITEM,
						"dataValueType": this.Terrasoft.DataValueType.TEXT,
						"contentType": this.Terrasoft.ContentType.LONG_TEXT,
						"labelConfig": {
							"visible": false
						},
						"value": {
							"bindTo": "Comment"
						},
						"placeholder": {
							"bindTo": "Resources.Strings.AddCommentHint"
						},
						"markerValue": "comment-text-edit",
						"height": "102px",
						"autoGrow": false
					}
				},
				{
					"operation": "insert",
					"parentName": "FeedbackContainer",
					"propertyName": "items",
					"name": "PostButton",
					"values": {
						"click": {
							"bindTo": "postComment"
						},
						"itemType": this.Terrasoft.ViewItemType.BUTTON,
						"style": this.Terrasoft.controls.ButtonEnums.style.DEFAULT,
						"classes": {
							"textClass": "post-button"
						},
						"caption": {
							"bindTo": "Resources.Strings.PostButtonCaption"
						}
					}
				},
				{
					"operation": "insert",
					"name": "Background",
					"parentName": "MainGridLayout",
					"propertyName": "items",
					"values": {
						"id": "background",
						"itemType": this.Terrasoft.ViewItemType.COMPONENT,
						"className": "Terrasoft.ImageView",
						"imageSrc": {
							"bindTo": "getBackgroundUrl"
						},
						"classes": {
							"wrapClass": ["background"]
						}
					}
				}
			]/**SCHEMA_DIFF*/,
			methods: {
 
				/**
				 * @inheritDoc BaseSchemaViewModel#init
				 * @overridden
				 */
				init: function() {
					this.callParent(arguments);
					var feedbackConfig = this.Terrasoft.feedbackConfig;
					if (feedbackConfig) {
						this.set("Token", feedbackConfig.token);
						this.Terrasoft.feedbackConfig = null;
					}
					this.Terrasoft.chain(this.setInitialvalues, this);
				},
 
				/**
				 * Sets initial values.
				 * @protected
				 * @virtual
				 */
				setInitialvalues: function() {
					this.Terrasoft.SysSettings.querySysSettingsItem("EnableQuestionToRequestor",
						function(value) {
							this.set("EnableQuestionToRequestor", value);
						}, this);
				},
 
				/**
				 * Returns logo image URL.
				 * @private
				 * @return {String} Logo URL.
				 */
				getLogoUrl: function() {
					var config = {
						source: this.Terrasoft.ImageSources.SYS_SETTING,
						params: {
							r: "LogoImage"
						}
					};
					var url = this.Terrasoft.ImageUrlBuilder.getUrl(config);
					return url;
				},
 
				/**
				 * Removes feedback container from DOM.
				 * @private
				 */
				removeFeedback: function() {
					this.Ext.getCmp("CaseRatingFeedbackPageFeedbackContainerContainer").destroy();
				},
 
				/**
				 * Returns background image URL from resources.
				 * @protected
				 * @return {String} Background image URL.
				 */
				getBackgroundUrl: function() {
					var imageResource = this.get("Resources.Images.Background");
					var url = this.Terrasoft.ImageUrlBuilder.getUrl(imageResource);
					return url;
				},
 
				/**
				 * Prepares config for service call.
				 * @protected
				 * @param {String} comment Comment text.
				 * @return {Object} Service call config.
				 */
				getServiceConfig: function(comment) {
					var sendData = {
						token: this.get("Token"),
						comment: comment
					};
					var config = {
						serviceName: "CaseRatingManagementService",
						methodName: "AddComment",
						data: sendData
					};
					return config;
				},
 
				/**
				 * Logs out.
				 * @protected
				 */
				logout: function() {
					var config = {
						serviceName: "UserManagementService",
						methodName: "Logout"
					};
					this.callService(config, function() {
						window.logout = true;
					}, this);
				},
 
				/**
				 * Post a comment via service.
				 * @protected
				 */
				postComment: function() {
					var comment = this.get("Comment");
					if (!comment || !comment.length) {
						var message = this.get("Resources.Strings.CommentIsEmpty");
						this.showConfirmationDialog(message, this.Terrasoft.emptyFn,
							[this.Terrasoft.MessageBoxButtons.OK]);
						return;
					}
					this.showBodyMask();
					var config = this.getServiceConfig(comment);
					this.callService(config, this.onCommentPost);
				},
 
				/**
				 * Post a comment callback function.
				 * Hides body mask and shows fail message upon it happens.
				 * @protected
				 * @virtual
				 * @param {Object} response Service response object.
				 */
				onCommentPost: function(response) {
					this.hideBodyMask();
					var result = response.AddCommentResult;
					if (result.success) {
						this.removeFeedback();
						this.logout();
					} else {
						var message = this.get("Resources.Strings.PostCommentFailed");
						this.showInformationDialog(message, this.Terrasoft.emptyFn);
					}
				}
			}
		};
	});

 

Нравится

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

Если вам нужно только изменить background попробуйте изменить ситсемную натсройку с кодом (Code) "ImageThanksForRaiting". Никаких страниц тогда менять не надо.

Золотарев Артем Андреевич,

Спасибо за предложение.  Но не помогает ...redis чистили )

Там есть небольшая тонкость, необходимо сначала очистить значение, потом выбрать файл. И если нажать закрыть, то картинка не сохранится, т.к. по этим кнопкам страница не видит изменений. Нужно нажать на поле Название, например, и тогда появится кнопка Сохранить (вместо Закрыть). Вот тогда файл реально должен сохраниться.

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

Могу ли я запретить создавать новые записи в реестре, имея только "Администрирование по записям"?

Если я в "Доступ к записям по умолчанию: Изменение" сделаю "кто создает: группа документооборот" и не будет "все сотрудники компании" это поможет сделать так, чтобы создавать могли только люди из группы документооборота?

Нравится

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

Это задаётся не в администрировании по записям, а по объекту.

Можно убрать всем сотрудникам право на добавление и дать той группе, кому нужно.

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

Настроили и отладили печатные формы на сервере разработки.

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

Нравится

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

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

Прошу поделиться опытом по следующим вопросам:

1. Как корректно привязать в данные пакета признак актуальности версии БП (На данный момент делаю через insert в таблицу SysSchemaProperties)?

2. Как корректно привязать в данные пакета признак активности кейса раздела (На данный момент Update записи в SysSchemaUserProperty)?

3. Как корректно отключить БП и привязать в данные пакета этот признак (На данный момент Insert в SysProcessDisabled) 

Нравится

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

Можно ли создать новую и привязать её к объекту?

Если да, то как это сделать?

Версия 7.11.

Нравится

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

Денис, здравствуйте!

Да, конечно. На Community есть несколько постов по ручной регистрации раздела (например, https://community.terrasoft.ru/node/26721), алгоритм установки нужных связей с объектом там также есть. Для страницы справочника достаточно будет создать схему и зарегистрировать связи с объектом в таблицах SysModuleEntity и SysModuleEdit аналогично регистрации страниц раздела. 

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

Добрый день!

Нужно выполнить авторизацию из стороннего приложения, но этому препятствует технология CORS. Каким образом можно ее обойти?

Возникают такие ошибки:

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

Нравится

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

Нужно в IIS разрешить доступ с другого домена, как описано тут.

 

 

Добавил раздел CORS в секцию <system.webServer> файла web.config сайта как описано в инструкции, после чего сайт перестал работать - выходит ошибка сервера:

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

 

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

Вернул. Сделал как описано тут. Но ошибка осталась или поменялась, вот такая выходит:

policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Такое сообщение и его причины обсуждаются тут.

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

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

На детали с редактируемым реестром можно добавлять кнопки (см. скриншот)

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

Добавил туда две дополнительных кнопки:

// Настройка действия [Открыть].
                        {
                            "className": "Terrasoft.Button",
                            "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                            "tag": "card",
                            "markerValue": "card",
                            "imageConfig": {"bindTo": "Resources.Images.CardIcon"}
                        },
                        // Настройка действия [Открыть внешнюю ссылку].
                        {
                            "className": "Terrasoft.Button",
                            "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                            "click": {
								"bindTo": "openDoc"
							},
                            //"tag": "open",
                            //"markerValue": "open",
                            "imageConfig": {"bindTo": "Resources.Images.CardIcon"}
                        },

С открытием - всё хорошо, поправил обработчик в функции editRecord. А где происходит перехват тега? Нужен полностью свой обработчик.

Вариант с "click" (в примере кода) - не сработал.

Нравится

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

Обычно обработчик этих кнопок указывается в настройке грида:

и в Conf.GridUtilities содержится метод. Туда в 1 параметр приходит тег

Данила, спасибо, помогло.

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

            attributes: {

                "SpeakAddress": {

                    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                    dataValueType: Terrasoft.DataValueType.LOOKUP,

                    referenceSchemaName: "AccountAddress",

                    isLookup: true,

                    lookupListConfig: {

                        "filter": function () {

Как написать sql запрос

select ad.id, ad.Address

from 

  AddressType at, 

  AccountAddress ad

where 

    at.Name = 'Собеседования' and 

    at.Id = ad.AddressTypeId

                        }

                    }

                    //isRequired: true

                },

Нравится

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

Здравствуйте попробуйте что то вроде такого:

 

lookupListConfig: {
    "filters": [ 
        function () {
            var addressTypeId = this.get("AddressType").value;            
            var filterGroup = Ext.create("Terrasoft.FilterGroup");
            filterGroup.add("CV", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,"[AccountAddress:AddressType].Name", "Собеседования"));
            filterGroup.add("Type", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,"[AccountAddress:AddressType].Id", addressTypeId));
            return filterGroup;
             }
    ]
}

 

как работать с фильтрами описано в статье - https://academy.terrasoft.ru/documents/technic-sdk/7-12/primenenie-filt…

Нигрескул Алексей,

Спасибо. 

Своими силами попробовал написать и совпало с вашим советом

 "filter": function () {

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

                            filterGroup.add("IsAddressType",

                                Terrasoft.createColumnFilterWithParameter(

                                    Terrasoft.ComparisonType.EQUAL,

                                    "[AccountAddress:AddressType].Id",

                                    "[AccountAddress.AddressType].Id"));//из таблицы

                            filterGroup.add("IsSpeak",

                                Terrasoft.createColumnFilterWithParameter(

                                    Terrasoft.ComparisonType.EQUAL,

                                    "[AccountAddress:AddressType].Name",

                                    "Собеседования"));

                            return filterGroup;

                        }

Делал как раз по той статье, клиентский esq синтаксис - это для наркоманов :)

QArt,

Нигрескул Алексей,

Не заработало

Добрый день.

Вот оптимизированный sql запрос:

Вот esq строка для фильтра:

Так же проверьте устраивает ли вас результат исходного sql запроса (т.е. выполните запрос непосредственно из SQL Server Management Studio)

 

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