После редактирования страницы и нажатия на пользовательскую кнопку, я передаю её guid (точнее, ид создаваемого в ней объекта) в бизнес-процесс. Но так как  перед вызовом не было нажато "сохранить", объекта с этим guid нет. Я могу эмулировать действие нажатия кнопки "сохранить" из кода? Не хочется вручную создавать объект по данным из страницы, так как пользователь может потом нажать "сохранить". И да, можно ли как-то убрать эту кнопку насовсем, или перехватить вызываемый ей метод, чтобы в коде при определённых обстоятельствах просто не вызывать this.CallParent?

Нравится

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

Думаю, можете вызвать тихое сохранение при нажатии на пользовательскую кнопку: 

this.save({isSilent: true});

 

Думаю, можете вызвать тихое сохранение при нажатии на пользовательскую кнопку: 

this.save({isSilent: true});

 

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

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

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

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

Нравится

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

на страницу, в секцию атрибутов добавить, если надо вкл/выкл по условию

attributes: {
            
            "ButtonEnabled": {
                "dataValueType": Terrasoft.DataValueType.BOOLEAN,
                "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                "value": false
            }

Вызов функции на кнопке

  onButtonClick: function(){ 
                this.SomeFunc();

Сама кнопка в DIFF            

    {
                "operation": "insert",
                "name": "Button",
                "values": {
                    "itemType": 5,
                    "caption": {
                        "bindTo": "Resources.Strings.ButtonCaption"
                    },
                    "click": {
                        "bindTo": "onButtonClick"
                    },
                    "style": "blue",
                    "enabled": {
                        "bindTo": "ButtonEnabled"
                    },
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 0,
                        "layoutName": "Tab72b43268TabLabelGridLayoutfb645753"
                    }
                },
                "parentName": "Tab72b43268TabLabelGridLayoutfb645753",
                "propertyName": "items",
                "index": 0
            },

В LocalizableString
ButtonCaption    - Текст на кнопке

Если расположение кнопки не имеет значения, то можно использовать меню в "Действиях" 

 

			getActions: function() {
				var actionMenuItems = this.callParent(arguments);
				actionMenuItems.addItem(this.getButtonMenuItem({
					"Caption": {"bindTo": "Resources.Strings.MyButtonCaption"},
					"Click": {"bindTo": "onMyButtonClick"}
				}));
				return actionMenuItems;
			},

 

на страницу, в секцию атрибутов добавить, если надо вкл/выкл по условию

attributes: {
            
            "ButtonEnabled": {
                "dataValueType": Terrasoft.DataValueType.BOOLEAN,
                "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                "value": false
            }

Вызов функции на кнопке

  onButtonClick: function(){ 
                this.SomeFunc();

Сама кнопка в DIFF            

    {
                "operation": "insert",
                "name": "Button",
                "values": {
                    "itemType": 5,
                    "caption": {
                        "bindTo": "Resources.Strings.ButtonCaption"
                    },
                    "click": {
                        "bindTo": "onButtonClick"
                    },
                    "style": "blue",
                    "enabled": {
                        "bindTo": "ButtonEnabled"
                    },
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 0,
                        "layoutName": "Tab72b43268TabLabelGridLayoutfb645753"
                    }
                },
                "parentName": "Tab72b43268TabLabelGridLayoutfb645753",
                "propertyName": "items",
                "index": 0
            },

В LocalizableString
ButtonCaption    - Текст на кнопке

Oleg,

Кнопка добавилась, и даже отображается в инспекторе, но при этом она  абсолютно невидима. В enabled установлено true.
В вашем коде изменил только родительский контейнер и, соответственно, layoutName. У других элементов на странице тот же родитель

Гусейн Гулиев,

В LocalizableStrings добавили? 

Oleg,

Спасибо большое, Олег. Хотел ответить "захардкодил", потом заметил, что захардкодил неправильно, но оставлю тут этот неправильный пример, на случай если кто столкнется в будущем.

{
	"operation": "insert",
	"name": "Button",
	"values": {
		"itemType": 5,
		"caption": {// Правильно: "caption" :"Check out",
			"bindTo": "Check out" // неправильное использование bindTo
		},
		"click": {
			"bindTo": "onButtonClick"
		},
		"style": "blue",
		"enabled": true,
		"layout": {
			"colSpan": 8,
			"rowSpan": 1,
			"column": 16,
			"row": 6,
			"layoutName": "Tab84fbfd75TabLabelGridLayout489fb6f3"
		}
	},
	"parentName": "Tab84fbfd75TabLabelGridLayout489fb6f3",
	"propertyName": "items",
	"index": 6
},

 

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

Посоветуйте, пожалуйста, документацию по работе с полем "справочник" на странице пользовательского раздела. Мне нужно получить это поле и в зависимости от его значения рассчитать другие поля. На моей среде используется устаревшая версия 7.15, в которой установка значений бизнес-правилами недоступна. Всё действие происходит на одной странице раздела без перехода по кейсам, поэтому реализация с помощью бизнес процесса не рассматривается, так же как реализация посредстом бизнес-правил. Интересует именно пользовательская реализация в коде страницы посредством JavaScript

Нравится

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

У меня работает таким образом
 

			onEntityInitialized: function(){
 
				this.on("change:CardStatus", function() {
				this.set("CardClosingReason", null);
				this.set("CardSuspendingReason", null);
		//	this.set("CardClosingReason", {value: null});
			}, this);
			},

 

Нужно также перехватывать событие изменение выбранного поля справочника

У меня работает таким образом
 

			onEntityInitialized: function(){
 
				this.on("change:CardStatus", function() {
				this.set("CardClosingReason", null);
				this.set("CardSuspendingReason", null);
		//	this.set("CardClosingReason", {value: null});
			}, this);
			},

 

Oleg, большое спасибо, это то что надо. А где вы этому научились?
Может, где-то есть документация по работе с ExtJS в Creatio? Я обращался за материалам к террасофт, мне сказали, что не могут предоставить курсы/треннинг, охватывающие именно это. 
Где я могу узнать список всех возможных событий с примерами подписки на них? Если синтаксис this.on можно прочитать в туториалах по ExtJS, то аргументы "event":"sender" для Creatio я просто понятия не имею, где посмотреть. Заранее спасибо за ваш ответ

Гусейн Гулиев,

методом тыка, кучей проб и ошибок, а так же по крупицам собирая информацию на форуме.

ОГРОМНЕЙШЕЕ СПАСИБО тем, кто выклыдывает реальные примеры кода - это помогает гораздо больше, чем 1000 строк теории.

Oleg, то есть инструмент террасофт предоставили, а полную инструкцию к нему - нет? Это прям ну очень неприятно. Неужели вот совсем нигде нет прилично собранной инфы по фронту с использованием ExtJS и перечисления всех возможных событий каждого элемента поля и данным, которые из них можно извлечь?
Я правильно понимаю, что CardStatus в вашем примере - это код поля типа "справочник" на странице, верно? Который в diff указывается как bindTo?

 

О нет. Документации нет) Исходники, подсматривания в примеры, вотэтовотвсё. 

Немного помогает практикум по разработке на платформе. https://academy.terrasoft.ua/trainings

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

Всем привет! Есть вопрос касаемо нейромаркетинговых исследований. Моя компания заинтересовалась в исследованиях данного направления. Компания украинская и необходимы специалисты из Украины. Лично я наталкивался только на компанию Neurotrack http://neurotrack.com.ua/, возможно кто то сотрудничал с ними, или может посоветовать других специалистов. Заранее благодарен )

Нравится

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

Дмитрий, насколько понял, их основной продукт — технологии eye-tracking.

Как минимум, гуглится ещё Research & Branding Group, их презентация по eye-tracking тут.

При разработке интерфейса 7.Х такой подход, кажется, пока не применяли.

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