redis
очистка Redis
7.11
sales_enterprise

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

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

Нравится

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

Добрый день!

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

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

 

Нравится

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

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

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

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

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

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

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



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

Подскажите, пожалуйста, хотим изменить на странице 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 чистили )

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

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

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

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

Нравится

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

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

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

Показать все комментарии
печатные формы
7.11
sales_enterprise

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

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

Нравится

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

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

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

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

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

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

Нравится

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

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

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

Версия 7.11.

Нравится

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

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

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

Показать все комментарии
CORS
Технические вопросы
7.11
sales

Добрый день!

Нужно выполнить авторизацию из стороннего приложения, но этому препятствует технология 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 параметр приходит тег

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

Показать все комментарии
Lookup
Filter
7.11
sales_enterprise

            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)

 

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