Добрый день!

Довольно часто требуется выводить пользователю какое-либо модальное окно. Для реализации приходится привлекать разработчиков. Было бы здорово, если бы в элементах бизнес-процесса появился элемент "Модальное окно", который выглядел бы примерно так:

То есть аналитик смог бы настраивать текст и варианты ответов. И после этого элемента использовать условные потоки.

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

Елизавета, уже зафиксирована идея «Возможность открывать страницы по процессу/показывать сообщения как всплывающее/модальное окно / уведомление (не путать с панелью уведомлений)». 

 

Если же первично для Вас не отображение в виде модального окна, а получение от пользователя ответа на один из нескольких вариантов, можно использовать стандартный элемент БП «Автогенерируемая страница», где добавить две кнопки, привязав к ним условные потоки.

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

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

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

Здорово, что идея уже зафиксирована, будем очень ждать реализации.

Елизавета, такого на уровне элементов БП, а не написанием кода на странице, пока нет, идея заведена.

Караваева Елизавета Дмитриевна,

Елизавета, по ссылке есть подходящий темплейт

https://marketplace.creatio.com/template/popup-element-business-process…

Константин, спасибо за уточнение. Тогда уже лучше его же отсюда.

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

Есть необходимость записывать в объект File поля Name и Notes через всплывающее окно. Не могу определить что нужно использовать, ModalBox или MiniPage. Вкратце задача состоит в том, чтобы при вводе поля Name генерировать ссылку и записывать её в поле Notes. 

Получилось создать ModalBox, но не удалось найти как сохранять поля в базу данных, также как через метод this.save(); в BasePage.

А вызывать MiniPage своей же кнопкой, совсем не удалось

Буду благодарен за подробный ответ и конкретные статьи с примерами. Спасибо.

Нравится

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

Здравствуйте, Илья!

 

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

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

Всем доброго времени суток!
Есть задача: по нажатию кнопки в модальном окне открывается окно с выбором
полей текущего раздела. Выбирается любое поле и добавляется в модальное окно. И так далее. То есть получается добавленные поля существуют только пока  открыто модальное окно. Это нужно для создания отчета Excel, где указанные значения в полях будут фильтрами.
В разделе полей много. Плюс в будущем поля могут добавляться. Поэтому забивать их жестко в diff смысла не вижу.
Вопрос: есть ли возможность как-то динамически наполнять массив diff полями? 

Нравится

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

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

 

Либо в этом окне использовать редактируемый реестр с двумя колонками: название и значение. Примерно такой обсуждали в этой теме, но там предлагали решение при помощи view, что может в Вашем случае не подойти.

 

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

 

А вообще, описанное Вами очень похоже на автогенерируемую страницу в БП. Может, с её помощью получится?

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

Спасибо за ответ. Фиксированное количество виртуальных полей не вариант, так как в будущем клиент самостоятельно может добавлять поля, которые тоже должны выбираться. Мне подсказали создать на странице модального окна ContainerList. Вот такой элемент diff:

{
    "operation": "insert",
    "name": "CommunicationsContainer",
    "parentName": "ContainerListContainer",
    "propertyName": "items",
    "values": {
        "generator": "ConfigurationItemGenerator.generateContainerList",
        "idProperty": "Id",
        "collection": "CaseFieldCollection",
        "observableRowNumber": 10,
        "onGetItemConfig": "getCaseItemConfig"
    }
}

"collection" - коллекция всех полей, которые могут быть отображены в модальном окне.

"onGetItemConfig" - метод, где формируется структура каждого поля.

Только вот до конца не ясно как с этим всем работать.

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

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

 

Необходимо добавить в модальное окно количество обращений за промежуток времени с 9-12, 12-15, 15-17 часов на 10 дней.

 

Прилагаю код модального окна.

https://pastebin.com/RP0JvZ8S

Как делать esq запросы и интегрировать в данную схему, чтобы отображалось всё в модальном окне.

Буду очень благодарен любой помощи! 

Нравится

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

Вариантов решения много, мне кажется проще сделать  свое представление в БД  (view) которая бы формировала несколько колонок например 

Дата,

Кол-во обращения поступили с 9 до 12,

Кол-во обращения поступили с 12 до 15,

 

Наложить ваше представления в БД (view) на обїект в конфигурации и выводить в видек грида отфильтровав по диапазону дат...

Для этого необходимо создать в БД представление,  создать в Конфигурации объект, где установить признак для свойства [Представление в БД] Объект в Конфигурации должен иметь такое же название, как и представление в БД.
В системе есть объекты, имя которых начинается на "VW*"

Вариантов решения много, мне кажется проще сделать  свое представление в БД  (view) которая бы формировала несколько колонок например 

Дата,

Кол-во обращения поступили с 9 до 12,

Кол-во обращения поступили с 12 до 15,

 

Наложить ваше представления в БД (view) на обїект в конфигурации и выводить в видек грида отфильтровав по диапазону дат...

Для этого необходимо создать в БД представление,  создать в Конфигурации объект, где установить признак для свойства [Представление в БД] Объект в Конфигурации должен иметь такое же название, как и представление в БД.
В системе есть объекты, имя которых начинается на "VW*"

Как вообще использовать ESQ в странице модального окна (https://pastebin.com/RP0JvZ8S). Чтобы отобразить хоть какой нибудь результат.  GRID создал, VIEW создал. 

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

 

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

 

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

Здравсвуйте! Создал View, нужно открыть модальное окно этой вьюшки, в конфиге для LookupUtilities.Open указываю эту вьюшку.

var config = {
	entitySchemaName: "ScVwSLPBalanseFApp",
);
 
LookupUtilities.Open(this.sandbox, config, this.loadFinStatementForPeriod, this, null, false, false);

Модальное окно открывается, но видна только одна запись. Хотя во вьюшке 20 записей, и самое интересное, что при поиске выдает нужные записи). Может кто-нибудь подскажет в чем причина?

Нравится

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

Скорее всего, накладывается какой-то фильтр.

Посмотрите через SQL Profiler, какой запрос уходит в базу.

В response приходят все записи, что странно, почему отображаются не все.

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

Какая колонка у вас указана как идентификатор и как вы ее заполняете в вашей вьюхе?

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

Спасибо за ответ, да дело было в Id во вьюшке.

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

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

Вызов модального окна 
 

var sandbox = this.sandbox;
var config = {
	heightPixels: 300,
	widthPixels: 700
};
var moduleName = "GrsModalModule";
var moduleId = sandbox.id + "_" + moduleName;
var renderTo = ModalBox.show(config, function() {
	sandbox.unloadModule(moduleId, renderTo);
});
sandbox.loadModule(moduleName, {
	id: moduleId,
	renderTo: renderTo,
});

 

Нравится

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

Пример из  TagUtilitiesV2 (заполнение parameters) и вызов модуля

openTagModule: function(config) {
	var scope = config.scope;
	var sandbox = config.sandbox || scope.sandbox;
	var tagModulePageId = this.getTagModulePageId(sandbox);
	this.prepareModalBox();
	var tagModuleConfig = {
		renderTo: this.getGridContainer(),
		id: tagModulePageId,
		parameters: {
			TagSchemaName: config.entityTagSchemaName,
			InTagSchemaName: config.entityInTagSchemaName,
			RecordId: config.entityRecordId
		}
	};
	sandbox.loadModule("TagModule", tagModuleConfig);
},

Пример чтения переданных параметров в модуле TagModule 

createViewModel: function() {
	var viewModel = this.callParent(arguments);
	var parameters = this.parameters;
	if (parameters) {
		viewModel.set("TagSchemaName", parameters.TagSchemaName);
		viewModel.set("InTagSchemaName", parameters.InTagSchemaName);
		viewModel.set("RecordId", parameters.RecordId);
	}
	return viewModel;
}

 

Пример из  TagUtilitiesV2 (заполнение parameters) и вызов модуля

openTagModule: function(config) {
	var scope = config.scope;
	var sandbox = config.sandbox || scope.sandbox;
	var tagModulePageId = this.getTagModulePageId(sandbox);
	this.prepareModalBox();
	var tagModuleConfig = {
		renderTo: this.getGridContainer(),
		id: tagModulePageId,
		parameters: {
			TagSchemaName: config.entityTagSchemaName,
			InTagSchemaName: config.entityInTagSchemaName,
			RecordId: config.entityRecordId
		}
	};
	sandbox.loadModule("TagModule", tagModuleConfig);
},

Пример чтения переданных параметров в модуле TagModule 

createViewModel: function() {
	var viewModel = this.callParent(arguments);
	var parameters = this.parameters;
	if (parameters) {
		viewModel.set("TagSchemaName", parameters.TagSchemaName);
		viewModel.set("InTagSchemaName", parameters.InTagSchemaName);
		viewModel.set("RecordId", parameters.RecordId);
	}
	return viewModel;
}

 

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

Привет всем !
Возник такой вопрос, как сделать модальное окно с нужными полями и чекбоксами ?
нужно что то вроде:
Ответственному - (Логический тип), Время - (Дата/Время) 

Нашёл различные статьи, но там написано как сделать просто окно или вообще что то другое или вообще не чего, вообщем всё не то.
Я так понимаю нужно сделать что то вроде ModalBox после чего передать параметры поля размер и т.д . Но как это сделать не знаю.
Если кто знает подскажите.

Нравится

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

Тут расписано как создать окно, в нем добавляете нужные вам атрибуты (столбцы) и задаете в diff их прорисовку.

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

Тут расписано как создать окно, в нем добавляете нужные вам атрибуты (столбцы) и задаете в diff их прорисовку.

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

Григорий Чех,

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

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

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

Добрый день,

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

 

После решил попробовать заполнить справочник вручную нужными значениями

//attributes
"RIBDocType": {
    "dataValueType": Terrasoft.DataValueType.ENUM,
    "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
    "caption": "RIBDocType"
},
"documentTypeList": {
    "dataValueType": Terrasoft.DataValueType.ENUM,
    "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
    "isCollection": true
}
 
//diff
{
	"operation": "insert",
	"parentName": "Header1",
	"propertyName": "items",
	"name": "RIBDocType",
	"values": {
		"bindTo": "RIBDocType",
		"caption": "Тип документа",
		"classes": {"wrapperClass": ["base-edit"]},
		"layout": {"column": 0, "row": 3, "colSpan": 24},
		"textSize": "Default",
		"contentType": Terrasoft.ContentType.ENUM,
		"labelConfig": {
			"visible": true
		},
		"controlConfig": {
			"className": "Terrasoft.ComboBoxEdit",
			"list": {
				"bindTo": "documentTypeList"
			},
			"change": {
				"bindTo": "onMyValueChange"
			},
			"prepareList": {
				"bindTo": "prepareDocumentTypeList"
			}
		}
	},
	"index": 3
}
 
//methods
 
onRender: function() {
	if (!this.get("documentTypeList")) {
		this.set("documentTypeList", this.Ext.create("Terrasoft.Collection"));
	}
 
},
 
prepareDocumentTypeList: function(filter, list) {
	if (list === null) {
		return;
	}
	list.clear();
	var columns = {};
	var value1 = {
		displayValue: "Type1",
		value: "e8670398-603b-43ca-820d-03e5b03fc275"
	};
	var value2 = {
		displayValue: "Type2",
		value: "14fcef3a-7d9e-4737-810f-52d57db3673a"
	};
	var value3 = {
		displayValue: "Type3",
		value: "672606f8-da25-40bd-a4ef-95c958331743"
	};
	columns[1] = value1;
	columns[2] = value2;
	columns[3] = value3;
	list.loadAll(columns);
	console.log(list);
},
 
onMyValueChange: function(val) {
	if (val && val.displayValue) {
		console.log("you pick: ", val.displayValue);
	}
},

Однако таким образом данные не отображаются в выборке совсем, просто пустой справочник.

 

Нравится

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

Сериков Асхат Кайратович,

Вот, например, код страницы с проекта. Если в attributes добавить lookupListConfig для поля Contact, всё подтянется

/*jshint ignore: start*/
define("UsrSchema", [],
	function() {
		return {
			mixins: {},
			messages: {},
			attributes: {},
			details: {},
			diff: /**SCHEMA_DIFF*/[
				{
					"operation": "insert",
					"name": "mainBoxContainer",
					"values": {
						"id": "mainBoxContainer",
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "mainBoxContainerGrid",
					"parentName": "mainBoxContainer",
					"propertyName": "items",
					"values": {
						"itemType": Terrasoft.ViewItemType.GRID_LAYOUT,
						"items": []
					}
				},
				{
					"operation": "insert",
					"parentName": "mainBoxContainerGrid",
					"propertyName": "items",
					"name": "Contact",
					"values": {
						"bindTo": "Contact",
						"caption": "Контакт",
						"contentType": Terrasoft.ContentType.ENUM,
						"layout": {
							"column": 0,
							"row": 0,
							"colSpan": 24
						}
					},
				}
			]/**SCHEMA_DIFF*/,
			methods: {
				init: function() {
					this.callParent(arguments);
				},
 
				getLookupQuery: function(filter, column) {
					var esq = this.callParent(arguments);
					var lookupListConfig = this.getLookupListConfig(column);
					if (lookupListConfig) {
						this.Terrasoft.each(lookupListConfig.columns, function(column) {
							if (!esq.columns.contains(column)) {
								esq.addColumn(column);
							}
						}, this);
					}
 
					var schemaColumn = this.getColumnByName(column);
					if (schemaColumn.lookupListConfig && schemaColumn.lookupListConfig.filter) {
						esq.filters.addItem(schemaColumn.lookupListConfig.filter());
					}
 
					return esq;
				},
				getLookupListConfig: function(columnName) {
					var schemaColumn = this.getColumnByName(columnName);
					if (!schemaColumn) {
						return null;
					}
					var lookupListConfig = schemaColumn.lookupListConfig;
					if (!lookupListConfig) {
						return null;
					}
					var excludedProperty = ["filters", "filter"];
					var config = {};
					this.Terrasoft.each(lookupListConfig, function(property, propertyName) {
						if (excludedProperty.indexOf(propertyName) === -1) {
							config[propertyName] = property;
						}
					});
					return config;
				}
			}
		};
	});
/*jshint ignore: end*/

 

1) Я бы попробовал 

columns[value1.value] = value1;
columns[value2.value] = value2;
columns[value3.value] = value3;

+ в каждом объекте продублировал 

var value1 = {
	displayValue: "Type1",
        name: "Type1",
	value: "e8670398-603b-43ca-820d-03e5b03fc275"
};

чисто на всякий случай

2) Если это своё модальное окно, не унаследованное от basePage, то придётся копировать логику из getLookupQuery (BasePageV2). Там как раз таки и идёт перебор аттрибутов на фильтры, доп колонки и т.п.

Варфоломеев Данила,

Спасибо, да не наследованное, пойду пробовать 

Сериков Асхат Кайратович,

Вот, например, код страницы с проекта. Если в attributes добавить lookupListConfig для поля Contact, всё подтянется

/*jshint ignore: start*/
define("UsrSchema", [],
	function() {
		return {
			mixins: {},
			messages: {},
			attributes: {},
			details: {},
			diff: /**SCHEMA_DIFF*/[
				{
					"operation": "insert",
					"name": "mainBoxContainer",
					"values": {
						"id": "mainBoxContainer",
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"items": []
					}
				},
				{
					"operation": "insert",
					"name": "mainBoxContainerGrid",
					"parentName": "mainBoxContainer",
					"propertyName": "items",
					"values": {
						"itemType": Terrasoft.ViewItemType.GRID_LAYOUT,
						"items": []
					}
				},
				{
					"operation": "insert",
					"parentName": "mainBoxContainerGrid",
					"propertyName": "items",
					"name": "Contact",
					"values": {
						"bindTo": "Contact",
						"caption": "Контакт",
						"contentType": Terrasoft.ContentType.ENUM,
						"layout": {
							"column": 0,
							"row": 0,
							"colSpan": 24
						}
					},
				}
			]/**SCHEMA_DIFF*/,
			methods: {
				init: function() {
					this.callParent(arguments);
				},
 
				getLookupQuery: function(filter, column) {
					var esq = this.callParent(arguments);
					var lookupListConfig = this.getLookupListConfig(column);
					if (lookupListConfig) {
						this.Terrasoft.each(lookupListConfig.columns, function(column) {
							if (!esq.columns.contains(column)) {
								esq.addColumn(column);
							}
						}, this);
					}
 
					var schemaColumn = this.getColumnByName(column);
					if (schemaColumn.lookupListConfig && schemaColumn.lookupListConfig.filter) {
						esq.filters.addItem(schemaColumn.lookupListConfig.filter());
					}
 
					return esq;
				},
				getLookupListConfig: function(columnName) {
					var schemaColumn = this.getColumnByName(columnName);
					if (!schemaColumn) {
						return null;
					}
					var lookupListConfig = schemaColumn.lookupListConfig;
					if (!lookupListConfig) {
						return null;
					}
					var excludedProperty = ["filters", "filter"];
					var config = {};
					this.Terrasoft.each(lookupListConfig, function(property, propertyName) {
						if (excludedProperty.indexOf(propertyName) === -1) {
							config[propertyName] = property;
						}
					});
					return config;
				}
			}
		};
	});
/*jshint ignore: end*/

 

Варфоломеев Данила,

Спасибо

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

Добрый день, 

Подскажите пожалуйста как сделать стили для модального окна по стандартному гриду как на любой другой странице,

У меня по нажатию кнопки вызывается модальное окно

var sandbox = this.sandbox;
var config = {
    heightPixels: 550,
    widthPixels: 950
};
var moduleName = "UsrMyModalModule";
var moduleId = sandbox.id + "_" + moduleName;
var renderTo = ModalBox.show(config, function() {
    sandbox.unloadModule(moduleId, renderTo);
});
sandbox.loadModule(moduleName, {
    id: moduleId,
    renderTo: renderTo
});

Само модальное окно  было создано через "Схема модели представления карточки" ни от кого не наследовано.

на выходе получается так:

на странице окна добавлял обычным средством:
 

{
	"operation": "insert",
	"name": "HeaderContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.CONTAINER,
		"items": []
	}
},
{
	"operation": "insert",
	"parentName": "HeaderContainer",
	"propertyName": "items",
	"name": "Header",
	"values": {
		"itemType": Terrasoft.ViewItemType.GRID_LAYOUT,
		"items": []
	}
},
{
	"operation": "insert",
	"parentName": "Header",
	"propertyName": "items",
	"name": "TestText",
	"values": {
		"bindTo": "TestText",
		"caption": "Test text",
		"layout": {"column": 0, "row": 0, "colSpan": 10}
	}
},
{
	"operation": "insert",
	"parentName": "Header",
	"name": "CloseButton",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.BUTTON,
		"style": Terrasoft.controls.ButtonEnums.style.BLUE,
		"click": {bindTo: "onCloseButtonClick"},
		"markerValue": "CloseButton",
		"caption": "OK",
		"layout": { "column": 0, "row": 1, "colSpan": 3 }
	}
}

 

Нравится

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

Открываете модуль UsrMyModalModule, в нём на вкладке Less прописываете стили для элементов.

В странице в define, в перечислении подгружаемых модулей добавляете "css!UsrMyModalModule"

Варфоломеев Данила,

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

 

Сериков Асхат Кайратович пишет:
а можно как нибудь грид сетку из страниц редактирования взять?

 Так вы же её уже добавили)

{
	"operation": "insert",
	"parentName": "HeaderContainer",
	"propertyName": "items",
	"name": "Header",
	"values": {
		"itemType": Terrasoft.ViewItemType.GRID_LAYOUT,
		"items": []
	}
},

 

Варфоломеев Данила,

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

Проблема решается если унаследовать от Базовой схемы карточки, но тогда ругается на getCardInfo message, что нет такого сообщения

Сериков Асхат Кайратович пишет:
сами поля скукожены,

 Тогда вам нужно прописать стили(собственно говоря, с чего вы и начали тему). Я обычно прописываю width/height модуля, потом width/height главного контейнера (в вашем случае HeaderContainer)

Варфоломеев Данила,

Жаль, я надеялся, что есть способ как то унаследовать именно разметку, Спасибо

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

Здравствуйте, подскажите как вытянуть данные из модального окна.
Программно вызываю открытие модального окна(Контрагенты).
Задача: по клику на элемент, вернуть данные(Например "название" или "ID") в вызывающий код.
Вот мой код:
 

//Выводим модальное окно
viewModal:function(){
var config = {
                    entitySchemaName: "Account",
                     multiSelect: false,
                     columns: ["Name","UsrINN"],
                     hideActions: false,//Скрываем кнопку "Добавить"
                     filters: contactFiler
                    };
               this.openLookup(config, this.myCallBack, this);
},
 
//Колбэк
 myCallBack:function(args){
 
                 args.???????????????????????????????(Что должно быть здесь?)
                 this.showInformationDialog("Callback");
  }

 

Нравится

2 комментария
myCallBack:function(args){
   debugger;
   //args.???????????????????????????????(Что должно быть здесь?)
   this.showInformationDialog("Callback");
}

Вы пишете дебаггер, открываете консоль(f12), ресстартите с кешем страницу, открываете ваше модальное окно(консоль всё ещё открыта), нажимате кнопку выбрать и тут выполнение кода должно приотстановиться. и уже через консоль смотрите какие переменные, что в них и т.п
По теме: в args вроде как хранится коллекция selectedRows, её уже перебирать через terrasoft.each

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

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