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

Как изменить стартовую стадию лида? То есть: сейчас при создании нового лида, стадия =  "Квалификация", а нужно "Новый лид". Где находится реализация данного функционала и как это изменить?

Нравится

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

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

 

Стадия лида устанавливается на объекте, в качестве константы(см. скриншот).  Нужно создать замещающий объект и менять ее уже там.

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

 

Стадия лида устанавливается на объекте, в качестве константы(см. скриншот).  Нужно создать замещающий объект и менять ее уже там.

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

На форуме есть много разных примеров, но ни один из них не заработал на нашей версии. Нужно, чтобы деталь представляла собой таблицу, колонки которой - это колонки объекта, к которому привязана деталь, а каждая строка - это объекты, связанные через деталь с редактируемой страницей (допустим, деталь счета на странице контактов, где каждая строка - это счет текущего контакта). Нужно, чтобы при нажатии на плюс возле названия детали, добавлялась строка, которую пользователь может заполнить. Сейчас при нажатии плюса открывается страница редактирования детали, а нужно, чтобы деталь редактировалась напрямую в Grid'e. 
Financial Services, v7.15

Нравится

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

опишите то как вы добавляете от создания объекта до создания детали, включая примеры кода

Dima Avdoshin,

Я создал объект, привязал его к детали, добавил деталь на страницу. В схему детали добавил следующий код:

define("Schema5Detail", ["ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities"], function() {
	return {
		entitySchemaName: "BankAccount",
		attributes: {
            "IsEditable": {
                dataValueType: Terrasoft.DataValueType.BOOLEAN,
                type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                value: true
            }
        },
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
            {
                "operation": "merge",
                "name": "DataGrid",
                "values": {
                    "className": "Terrasoft.ConfigurationGrid",
                    "generator": "ConfigurationGridGenerator.generatePartial",
                    "generateControlsConfig": { "bindTo": "generatActiveRowControlsConfig" },
                    "changeRow": { "bindTo": "changeRow" },
                    "unSelectRow": { "bindTo": "unSelectRow" },
                    "onGridClick": { "bindTo": "onGridClick" },
                    "activeRowActions": [
                        {
                            "className": "Terrasoft.Button",
                            "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                            "tag": "save",
                            "markerValue": "save",
                            "imageConfig": { "bindTo": "Resources.Images.SaveIcon" }
                        },
                        {
                            "className": "Terrasoft.Button",
                            "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                            "tag": "cancel",
                            "markerValue": "cancel",
                            "imageConfig": { "bindTo": "Resources.Images.CancelIcon" }
                        },
                        // {
                        //     "className": "Terrasoft.Button",
                        //     "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        //     "tag": "remove",
                        //     "markerValue": "remove",
                        //     "imageConfig": { "bindTo": "Resources.Images.RemoveIcon" }
                        // },
                        {
                            "className": "Terrasoft.Button", // последняя кнопка в коде
                            "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                            "tag": "card",
                            "markerValue": "card",
                            "imageConfig": { "bindTo": "Resources.Images.RemoveIcon" }
                        },
                    ],
                    "initActiveRowKeyMap": { "bindTo": "initActiveRowKeyMap" },
                    "activeRowAction": { "bindTo": "onActiveRowAction" },
                    "multiSelect": false
                }
            }
        ]/**SCHEMA_DIFF*/,
		methods: {},
		mixins: {
			ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities"
		}
	};
});

Но я не знаю, как определить, какие именно значения отобразить в гриде. Объект довольно большой, я хочу отобразить только необходимые поля с возможностью отображения карточки по нажатию на последнюю кнопку в коде. Не заполнив в реестре все необходимые поля, нельзя открыть карточку. Или я могу как-то сыгнорировать эту проверку?

Возьмите прекрасное дополнение с Marketplace и используйте готовые шаблоны https://marketplace.terrasoft.ru/template/templates-developing-custom-d…

Владимир Соколов,

большое спасибо, но, увы, это дополнение поддерживается только начиная с 7.16, а у меня установлена 7.15.
Нельзя как-то в коде настроить, в каком порядке отображать колонки объекта на гриде?

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

Вам проще будет обновиться до новой версии :-)

Гусейн Гулиев пишет:
это дополнение поддерживается только начиная с 7.16, а у меня установлена 7.15.

что-то мне подсказывает, что это дополнение просто появилось, когда была версия 7.16, и никто его на ранних не тестировал.  

Ну, и даже с этим дополнением иногда нужно перекомпилировать и очистить Redis, чтобы заработало, как надо

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

Добрый день.

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

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

После редактирования страницы и нажатия на пользовательскую кнопку, я передаю её 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.Х такой подход, кажется, пока не применяли.

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