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

Нравится

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

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

Из JS нельзя вызвать хранимую процедуру напрямую. Используйте вызов вебсервиса для запуска процедуры.

можете подробнее рассказать про веб сервис и как потом в JS обратиться к веб сервису?
ранее не сталкивался с этим.

Привет.
Прикладываю примерные коды. Из js делаем вызов C# модуля, а в модуле уже вызываем хранимку и оборачиваем все это дело в транзакцию.
"...работать с результатом." - Как вариант: хранимка кладет все нужные данные в таблицу (которую нужно будет предварительно создать в BPM), и в коде, в коллбэке, вы делаете ESQ запрос в эту таблицу, выгребая нужные данные. Как-то так.

"Варфоломеев Данила Викторович" написал:

Привет.

Прикладываю примерные коды.

привет.
спасибо за примеры буду разбираться.

вчера попробовал взять пример работы с веб сервисом из
https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/kak-sozdat-svo…
почему то пример не сработал можете посмотреть в чем проблема?

вот коды сервиса

// Класс конфигурационного сервиса должен быть реализован в пространстве имен Terrasoft.Configuration.
// При необходимости можно создавать для веб-сервиса свое рабочее пространство, но оно должно быть
// обязательно вложенным в Terrasoft.Configuration.
namespace Terrasoft.Configuration.CustomConfigurationService
{
using System;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.ServiceModel.Activation;

// Класс сервиса помечен обязательными атрибутами [ServiceContract] и
// [AspNetCompatibilityRequirements] с параметрами.
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class CustomConfigurationService
{
// Метод сервиса помечен обязательными атрибутами [OperationContract] и
// [WebInvoke] с параметрами.
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
ResponseFormat = WebMessageFormat.Json)]
public string GetTransformValue(string inputParam)
{
var result = inputParam + " + output string";
return result;
}
}
}

а это вызов в JS

poisksumtotal: function()
{

var name = 'привет';
// Объект, инициализирующий входящие параметры для метода сервиса.
var serviceData = {
// Название свойства совпадает с именем входящего параметра метода сервиса.
inputParam: name
};

// Вызов веб-сервиса и обработка результатов.
ServiceHelper.callService("CustomConfigurationService", "GetTransformValue",
function(response) {
var result = response.GetTransformValueResult;
this.showInformationDialog(result);
}, serviceData, this);
// this.showInformationDialog(name);
},

"Евдокимов Евгений" написал:почему то пример не сработал можете посмотреть в чем проблема?

Вроде все правильно. К сожалению, без скрина ошибок в консоли не разберешься.
Из частых проблем - не добавлен ServiceHelper в define или название CustomConfigurationService указано иное (там вроде как namespace, class и название объекта должны совпадать).

"Варфоломеев Данила Викторович" написал:
Евдокимов Евгений пишет:

почему то пример не сработал можете посмотреть в чем проблема?

Вроде все правильно. К сожалению, без скрина ошибок в консоли не разберешься.

Из частых проблем - не добавлен ServiceHelper в define или название CustomConfigurationService указано иное (там вроде как namespace, class и название объекта должны совпадать).


ошибок вроде нет, ServiceHelper добавлен, все имена проверил,
при нажатии на пункт меню не выходит сообщение,

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

кодировка сбилась видимо

"Варфоломеев Данила Викторович" написал:

кодировка сбилась видимо


спасибо

ошибку нашел в консоле прикрепил в файле

"Евдокимов Евгений" написал:ошибку нашел в консоле прикрепил в файле

Хм. Bpm не может достучаться до метода. попробуйте в define прописать ServiceHelper с самого начала.
Что-то вроде:

define("UsrCustomPage",["ServiceHelper", "Terrasoft".....],
	function(ServiceHelper, terrasoft.....) 

"Варфоломеев Данила Викторович" написал:
Евдокимов Евгений пишет:

ошибку нашел в консоле прикрепил в файле

Хм. Bpm не может достучаться до метода. попробуйте в define прописать ServiceHelper с самого

да уж)) даже и не подумал бы что из за порядка написания ServiceHelper может не работать весь код...

спасибо получилось !!

скажите а в чем разница в вашем примере сервис вызывается с помощью Terrasoft.AjaxProvider.request
а в этом примере через
ServiceHelper.callService("CustomConfigurationService", "GetTransformValue",
function(response) {

в чем разница и какой лучше использовать в дальнейшем??

"Евдокимов Евгений" написал:в чем разница и какой лучше использовать в дальнейшем??

Поищите ServiceHelper в конфигурации. Там используется тот же самый AJAX.request. Так что разницы никакой. Просто хэлпер предоставляет пользователю более удобную/простую форму вызова.

Но, блин, ни в каких SDK не написано, что оказывается в ServiceHelper, в конфиге, можно указывать timeout. Если его не указывать и хранимка долго собирает данные, то запрос просто обрывается (столкнулся с этим).

да посмотрел так и есть Helper поудобнее,
насчет тайм-аута учту

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

"Евдокимов Евгений" написал:так же нужно описывать или другой код будет?

Через mixins. Посмотрите в конфигурации BaseGridDetailV2 (базовая деталь с гридом), в define подключается "GridUtilitiesV2" (JS модуль, конкретно методы по работе с гридом), в Mixins:

GridUtilities: "Terrasoft.GridUtilities". 

В схеме BaseGridDetailV2 куча кода, относящегося к детали, однако как только нужно, допустим, обновить данные в гриде, пишется this.reloadGridData(), где reloadGridData - это метод из GridUtilitiesV2. Единственное - подключаемый в этом случае модуль с доп.методами немного по другому описывается.

Ну или, опять же, смотрите в сторону ServiceHelper) Это же JS модуль с 1 встроенной функцией. И вызывается он отовсюду, подключается в схемы через define.

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

"Варфоломеев Данила Викторович" написал:

Привет.

нт: хранимка кладет все нужные данные в таблицу (которую нужно будет предварительно создать в BPM), и в коде, в коллбэке, вы делаете ESQ запрос в эту таблицу, выгребая нужные данные. Как-то так.

Добрый день!
Практически применил ваши примеры к своей задаче, обращение работает,
хотел спросить, каким образом результат работы процедуры вывести в JS
т е вместо return "OK"; значение которое подсчитывается в процедуре.

или в дальнейшем набор строк (результат select) без создания таблиц и дополнительных запросов типа ESQ

"Евдокимов Евгений" написал:или в дальнейшем набор строк (результат select) без создания таблиц и дополнительных запросов типа ESQ

В конце хранимки дописать select нужных столбцов. В коде немного по другому вызвать процедуру:

string sqlText = "exec [dbo].[tsp_Procedure] '"+UserConnection.CurrentUser.ContactId+"',30, ...куча параметров..."'";
var resultQuery = new CustomQuery(UserConnection, sqlText);
DataTable dt = new DataTable();
using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection()) {
	using(var dr = resultQuery.ExecuteReader(dbExecutor)) {
		dt.Load(dr);      
	}
}

Ну и потом в C# коде работать с datatable как вам угодно. И в конце return нужного вам параметра. Ну или public string[] в объявлении функции и в конце возвращать массивы из datatable.
Или гуглить

спасибо буду разбираться

"Варфоломеев Данила Викторович" написал:
вы делаете ESQ запрос в эту таблицу, выгребая нужные данные. Как-то так.

Добрый день!
Могу я у вас еще спросить кое что,
разобрался с процедурой с вызовом и обработкой результата, теперь пытаюсь выгрузить результат в Excel с помощью метода
DataUtilities.exportToCsvFile("TestReportTable");
передаю имя схемы откуда выгружать все данные.
система выдает ошибку
"Объект не поддерживает свойство или метод "on"" (см прикрепл файл)
не могу понять в чем ошибка.

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

Добрый день.

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

В связи с этим вопрос:
Возможно ли открыть карточку редактирования без использования стандартный элемент БП "Открыть страницу редактирования"

И ещё один вопрос:
Можно ли отключить создание активности при использовании элемента "Открыть страницу редактирования"?

Нравится

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

Добрый день!

1. Элемент “Страница редактирования” считается выполненным после сохранения карточки. Т.е. если в процессе последовательно стоят 2 элемента “Страница редактирования” – для того, чтобы открылась вторая страница пользователь должен нажать кнопку [Сохранить] на первой странице.
По другому страницу редактирования открыть не получится.

2. Элементы Вопрос пользователю/Страница редактирования/Автогенерируемая страница при выполнении создают служебную активность, которая выполняет переадресацию пользователя на целевую страницу. Это базовый механизм работы элементов.

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

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

Нравится

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

Добрый день.
Можно отфильтровать это поле в атрибутах

attributes: {
       "Type": {
                    lookupListConfig: {
                        filter: function () {
                            var filters = Terrasoft.createFilterGroup();
                            filters.addItem(Terrasoft.createColumnFilterWithParameter(
                                Terrasoft.ComparisonType.NOT_EQUAL, 'Id', Constants.DocumentType.ActWork));
                            return filters;
                        }
                    }
                }
}

Вместо Constants.DocumentType.ActWork указать Id записи из вашего справочника.

Пример аналогичного функционала, но через бизнес-правила:

rules: {
          "WeightUnit":{
					"FiltrationUnitsWeight":{
						ruleType: BusinessRuleModule.enums.RuleType.FILTRATION,
						baseAttributePatch: 'UseforWeight',
						comparisonType: Terrasoft.ComparisonType.NOT_EQUAL,
						type: BusinessRuleModule.enums.ValueType.CONSTANT,
						value: true
					}
				}
}

Спасибо за подсказку, реализовал через атрибуты, что прекрасно работает).

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

Добрый день!
Подскажите, может быть кто-то сталкивался с подобной ситуацией...
Настраиваю БП по обработке обращения, выполняю действия: при добавлении нового обращения , проверяется поле статус, в зависимости от статуса обращение распределяется на разных ответственных.
БП работал, все верно, как только внесла изменение(изменение несущественное), бп перестал запускаться.
В журнале процесса его нет. Удалила все изменения, однако бп не запустился.
Обнаружила,что все новые бп не запускаются, в конфигурации при обновлении структуры бд появляется ошибка.
Подскажите, пожалуйста, с чем это может быть связано?

Нравится

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

Картинка, к сожалению, не читабельна
Может быль связано с тем, что бп не был правильно скомпилирован.

Нашла временное решение.

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

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

Еще новичок в разработке. Нужно создать замещающий клиентский модуль.
Вот родительская схема:

define('CityPage', ['ext-base', 'terrasoft', 'sandbox',
'City', 'CityPageStructure', 'CityPageResources', 'GeneralDetails', 'LookupUtilities', 'BusinessRuleModule'],
function(Ext, Terrasoft, sandbox, entitySchema, structure, resources, GeneralDetails, LookupUtilities,
BusinessRuleModule) {
structure.userCode = function() {
this.entitySchema = entitySchema;
this.name = 'CityCardViewModel';
this.schema.leftPanel = LookupUtilities.GetBaseLookupPageStructure();
};
structure.finalizeStructure = function() {
var baseElementsControlGroup = this.find('baseElementsControlGroup');
if (baseElementsControlGroup) {
var items = baseElementsControlGroup.items;
items.splice(2, 0, {
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'Country',
columnPath: 'Country',
dataValueType: Terrasoft.DataValueType.LOOKUP,
visible: true
});
items.splice(3, 0, {
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'Region',
columnPath: 'Region',
dataValueType: Terrasoft.DataValueType.LOOKUP,
visible: true,
rules: [{
ruleType: BusinessRuleModule.enums.RuleType.FILTRATION,
autocomplete: true,
baseAttributePatch: 'Country',
comparisonType: Terrasoft.ComparisonType.EQUAL,
type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
attribute: 'Country',
attributePath: '',
value: ''
}]
});
items.splice(4, 0, {
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'TimeZone',
columnPath: 'TimeZone',
dataValueType: Terrasoft.DataValueType.LOOKUP,
visible: true
});
baseElementsControlGroup.items = items;
}
};
return structure;
});

Вот моя схема, которая должна замещать родительскую (выше). Что не так в коде замещающей схемы:
define("CityPage", ['ext-base', 'terrasoft', 'sandbox',
'City', 'CityPageStructure', 'CityPageResources', 'GeneralDetails', 'LookupUtilities', 'BusinessRuleModule'],
function(Ext, Terrasoft, sandbox, entitySchema, structure, resources, GeneralDetails, LookupUtilities,
BusinessRuleModule) {
return {
structure: "City",
items.splice(4, 0, {
type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
name: 'UsrRayon',
columnPath: 'UsrRayon',
dataValueType: Terrasoft.DataValueType.LOOKUP,
visible: true
});
};
});

Нравится

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

Здравствуйте, Анастасия.

"Злыднева Анастасия Сергеевна" написал:Что не так в коде замещающей схемы:

Все зависит от задачи, которую вы себе поставили

Во первых, вы должны создать замещающий модуль так, как указано с статье https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/sozdanie-polzo… (если вдруг вы не знали этого, т.к.

"Злыднева Анастасия Сергеевна" написал:Еще новичок в разработке.

Во вторых, судя по исходному коду базового модуля, он является моделью представления в связке MVVM. Подробнее смотрите здесь https://academy.terrasoft.ru/documents/technic-sdk/7-7-0/shablon-mvvm-e…

В третьих. В базовой схеме функция, обявленная в модуле, возвращает модифицированный объект structure, дополненный двумя свойствами-методами. Вы же возвращаете новый объект с новыми свойствами.
Примерное решение будет выглядеть так (нужно проверить, т.к. набирал в блокноте без проверки)

define("CityPage", ['ext-base', 'terrasoft', 'sandbox','City', 'CityPageStructure', 'CityPageResources', 'GeneralDetails', 'LookupUtilities', 'BusinessRuleModule'],
	function(Ext, Terrasoft, sandbox, entitySchema, structure, resources, GeneralDetails, LookupUtilities, BusinessRuleModule) {
	return {
		//Запомнить свойство-метод в локальную переменную
		var s = structure.finalizeStructure;
		//Переопределить свойство-метод базового модуля в замещающем
		structure.finalizeStructure = function() {
			//вызвать свойство-метод базового модуля
			s();
			// получить группу контролов
			var baseElementsControlGroup = this.find('baseElementsControlGroup');
			//если найдена
			if (baseElementsControlGroup) {
				//получить ее элементы
				var items = baseElementsControlGroup.items;
				// добавить атрибут в элемент
				items.splice(4, 0, {
					type: Terrasoft.core.enums.ViewModelSchemaItem.ATTRIBUTE,
					name: 'UsrRayon',
					columnPath: 'UsrRayon',
					dataValueType: Terrasoft.DataValueType.LOOKUP,
					visible: true
				});
			};
		};
	};
});
Показать все комментарии

Добрый день.
Возникла следующая ошибка при фиксации доработок в хранилище.
Ранее фиксировал в этот репозиторий без проблем.
Доступ к рабочей копии BPMOnline открыт для всех пользователей.
Обновление пакета / Восстановление из хранилища/ Установка пакета происходят без ошибок.
Кто подскажет, что за проблема?

Нравится

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

Здравствуйте, Игорь.

Попробуйте обновить пакет _RcGorizont

"Сергей Кy6риш" написал:Здравствуйте, Игорь.

Попробуйте обновить пакет _RcGorizont

Делал не однократно. Не помогло

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

В версии bpm'online 7.7 real estate в карточках сущности "Объект недвижимости" есть деталь Параметры, на которую нужно бизнес-процессом добавить значения параметров.

Процесс стартует при ручном запуске. В бизнес-процессе используем только элемент "Добавление данных". В свойствах элемента пишем:

В какой объект добавить данные : Параметры.
Режим добавления данных: результат выборки
Выборка по объекту: значения параметров объекта или листинга.

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

Нравится

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

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

Неправильный объект, в который записываются данные.

Пробовали также выбирать записывать в объект "Значения параметра объекта или листинга" с различными выборками и значениями полей. Все равно процесс не работает.

Как бы понять, в чем ошибка. В журнале процессов статусы процессов - Завершен.

Добрый день!

Интересуют два момента:
1) Каким образом процесс понимает к какому объекту необходимо прикрепить параметры выборки?
2) Какие настройки элемента "Добавить данные"?

1) это мы указываем в "Условиях фильтрации выборки".
2) вот последние варианты настройки, которые также не работают:

1 вариант.
В какой объект добавить данные : Подтип параметра.
Режим добавления данных: результат выборки
Выборка по объекту: Параметр.

Условие фильтрации выборки:
Название равно Номер квартиры
Раздел Объекты Да

2 вариант.
В какой объект добавить данные : Подтип параметра.
Режим добавления данных: результат выборки
Выборка по объекту: Значение параметра объекта или листинга.

Условие фильтрации выборки:
Параметр равно Номер квартиры
Объект недвижимости.Тип равно Квартира

Анастасия, добрый день!

Перед тем как строить бизнес-процесс рекомендую предварительно посмотреть в каком виде хранятся параметры и связь между параметрами и объектами недвижимости в БД.
1. Параметры – таблица Amenity.
2. Значения параметров – AmenitySubtype (AmenityId – ссылка на Amenity).
3. Объекты недвижимости – Property.
4. Связь между параметрами и объектами недвижимости – AmenityInObject. (AmenityId – ссылка на Amenity, PropertyId – ссылка на Property)

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

Добрый день!

Вопрос по BPM'Online 7.8 - существует ли техническая возможность взять с SVN-репозитория пакет определенной ревизии, например, через WorkspaceConsole?

Условно, есть на SVN пакет MyCustom, его разрабатывали, вносили изменения, делали коммиты, и сейчас он имеет ревизию, пусть, 15. Как можно загрузить в конфигурацию, скажем, 13-ю ревизию этого пакета?

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

Нравится

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

Здравствуйте, Алексей
Приложение всегда работает с последней версией пользовательских пакетов. Так уж настроен его механизм работы с SVN.
Не уверен насчет правильности подхода, который предложу, но можно попробовать настроить приложение для разработки в файловой системе, как указано в статье https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/rabota-s-serve…
Тогда исходный код схем из SVN будет выгружаться в папку
[Путь к каталогу с установленным приложением]\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\[Имя пакета]
Затем используя, например, Tortuise откатить пакет до нужной ревизии. Скопировать файлы с исходным кодом в отдельный каталог. Вернуть пакет в актуальную ревизию. Заместить файлы с исходниками в скопировнными ранее.
Возможно, получится не только с файлами с исходным кодом, но и с j-son файлами схем, надо пробовать.
Возможно, простое замещение файлов не поможет, и придется переносить содержимое файлов. Надо пробовать.
Надеюсь, мой ответ хоть как-то проможет.

PS поскольку рабочая ширина сайта академии очень маленькая, то содержимое таблиц читается не во всех браузерах. Просто скопируйте содержимое статьи в MS Word, например.

Роман, спасибо большое за Ваш ответ! Буду пробовать.

Единственный теоретический вариант, который приходит на ум, это взять и скопировать нужную ревизию в новую, средствами svn(в данном случае в 16 скопировать 13). А новая ревизия отобразится в конфигурации.
Только это неправильно идеологически конечно и нужно тестировать.

Алексей, можно узнать, у Вас что-нибудь получилось?

"Роман Симута" написал:Тогда исходный код схем из SVN будет выгружаться в папку

Там не будет метаданных да и структура банально не та что в SVN.
В 7.10 вроде как появился нормальный экспорт/импорт пакетов в ФС, но пока еще пишут доку, обещали через 3 недели (неделю назад) :)
По сути вопроса - единственный нормальный способ - такой:
В SVN репе делаете чекаут нужной ревизии в отдельную папку в branches
потом искомую папку (как правило номер версии платформы, н/п 7.9.0) переименовываете в скажем 7.9.0_old
а каталог с чекаутом нужной ревизии в искомый 7.9.0
Ну и потом обновляете пакет из конфигуратора (Это если надо обновить установленный)
Если надо просто засетапить конкретную ревизию - то прям каталог чекаута назовите как ни будь "7.9.1" ну и при установке пакета выбирайте в дропдауне "Версия пакета"

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

Добрый день!

bpm'online marketing прекрасно отслеживает источник лида, если переход с другого сайта перешел прямо на Landing. Однако, если посетитель пришёл на наш сайт, погулял по нему, а затем попал на Landing, то источником становится уже сам наш сайт.

Как-то эту ситуацию можно исправить, чтобы не терять источник при переходах по сайту (без использования utm-меток)?

Спасибо!

Нравится

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

Добрый день!

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

solut.lv – только что в техподдержку послал картинки с доказательствами.

"Мария Ватулина" написал:

Добрый день!

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

Добрый день, Андрей!

В рамках обращения №0342850 было предоставлено решение.

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

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

Здравствуйте!
Добавил в деталь Платежные реквизиты, свойство "Основной", чтобы в Счете при выборе Контрагента по умолчанию подставлялся реквизит с признаком Основной.
Как получить я понял:

var esq = Ext.create('Terrasoft.EntitySchemaQuery', {
                                                rootSchemaName: "AccountBillingInfo"
                                        });
                                        esq.addColumn("Account");
                                        esq.addColumn("qrtIsMain");
                                        esq.addColumn("Name");
                                        esq.filters.add("AccId", Terrasoft.createColumnFilterWithParameter(
                                                Terrasoft.ComparisonType.EQUAL, "Account", this.get("qrtAccount").Id));
                                        esq.filters.add("IsMain", Terrasoft.createColumnFilterWithParameter(
                                                Terrasoft.ComparisonType.EQUAL, "qrtIsMain", true));
                                        esq.getEntityCollection(function(result) {
                                                if (result.success) {
                                                        Terrasoft.each(result.collection.getItems(), function(item) {
                                                                //self.set("qrtClientBilling", item.get("Id"));
                                                                //self.setValue("qrtClientBilling", item.get("Id"));
                                                        });
                                                }
                                        });

А как установить значение (то есть выбрать из существующих программно) ComboBox'а не пойму, подскажите, пожалуйста

Нравится

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

Для того чтобы установить новые значения для колонки записи (объекта) из клиентской части приложения необходимо использовать Terrasoft.InsertQuery. К сожалению, статьи по добавлению данных в конфигурационных схемах в документации разработчика пока нет.
Единственный пример, который может вам помочь, приведен в статье по созданию детали с выбором из справочника. Правда здесь используется пакетный запрос, аггрегирующий несколько запросов InsertQuery.
Стаья находится здесь:
https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/sozdanie-detal…

Обратите внимание на этот кусок кода из примера

                // Добавление выбранных продуктов.
                addCallBack: function(args) {
                    // Экземпляр класса пакетного запроса BatchQuery.
                    var bq = this.Ext.create("Terrasoft.BatchQuery");
                    var OrderId = this.get("MasterRecordId");
                    // Коллекция выбранных в справочнике документов.
                    this.selectedRows = args.selectedRows.getItems();
                    // Коллекция, передаваемая в запрос.
                    this.selectedItems = [];
                    // Копирование необходимых данных.
                    this.selectedRows.forEach(function(item) {
                        item.OrderId = OrderId;
                        item.DocumentId = item.value;
                        bq.add(this.getDocumentInsertQuery(item));
                        this.selectedItems.push(item.value);
                    }, this);
                    // Выполнение пакетного запроса, если он не пустой.
                    if (bq.queries.length) {
                        this.showBodyMask.call(this);
                        bq.execute(this.onDocumentInsert, this);
                    }
                },
 
                //Возвращает запрос на добавление текущего объекта.
                getDocumentInsertQuery: function(item) {
                    var insert = Ext.create("Terrasoft.InsertQuery", {
                        rootSchemaName: this.entitySchemaName
                    });
                    insert.setParameterValue("Order", item.OrderId, this.Terrasoft.DataValueType.GUID);
                    insert.setParameterValue("Document", item.DocumentId, this.Terrasoft.DataValueType.GUID);
                    return insert;
                },

Всем спасибо за помощь, всё получилось...

"Владимир Соколов" написал:

Здесь я давал решение:

http://www.community.terrasoft.ua/forum/topic/21807

... отдельное спасибо за пример

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