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

Нравится

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

Добрый день,

Проблема может быть в типах данных. Если бы вы предоставили скриншоты вашего БП, вам бы быстрей помогли с вашей проблемой.

Добрый день,

Проблема может быть в типах данных. Если бы вы предоставили скриншоты вашего БП, вам бы быстрей помогли с вашей проблемой.

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

Коллеги, как реализовать redirect на preview страницу после синхронизации приложения?

реализовал событие после обновления заказа

Terrasoft.sdk.Model.setModelEventHandler("Order", 
	Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.After].update,function(config){
		var model = "Order";
		var record = config.scope.eventConfig.records[0];
		var pageConfig = {			
			recordId: record.data.Id
		};
		Terrasoft.Configuration.WaSync(model, pageConfig, false);
	});
 
Terrasoft.Configuration.WaSync = function(model, pageConfig, toMainPage = true) {
	Terrasoft.MobileSettingsPageControllerSyncManager.synchronize({
		exportOnly: false ,
		checkForPredefinedDatabase: false,
		redirect: function() {
			debugger;
			if(toMainPage) {
				Terrasoft.core.redirectToMainPage();
			} else {
				Terrasoft.Application.close(() => {
 
				});
			}
		}
	});
};

нашел функцию Terrasoft.util.redirectToPage:

 

Terrasoft.util.redirectToPage = function(to, hash) {
	Terrasoft.Application.close(() => {
		to += location.search;
		if (hash) {
			to += "#" + hash;
		}
		location.href = to;
	});
};

я та понимаю в hash нужно передавать данные по странице заказа, подскажите что можно вообще тут сделать? Не хочется редиректится на главную страницу.

Нравится

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

Опишите подробней свою бизнес задачу.

Довольно странное поведение - открывать страницы после полной синхронизации. К тому же во время полной синхронизации может может изменится структура объектов

Для открытия страницы просмотра обычно используется такой метод:

Terrasoft.util.openPreviewPage("Contact", {
	recordId: contact.getId()
});

P.S. Метод Terrasoft.MobileSettingsPageControllerSyncManager.synchronize является @internal его нельзя использовать!

P.S.S. Класс Terrasoft.MobileSettingsPageControllerSyncManager является устаревшим, сейчас используют Terrasoft.SyncUtils

Наверное вам подойдет метод 

Terrasoft.SyncUtils.synchronizeData

 

Кривонос Максим,

здравствуйте, после сохранения изменения заказа, а именно изменения состояния заказа необходимо осуществлять синхронизацию приложения, что бы заказа сразу уходил в основную БД. После синхронизации нужно открыть этот же заказ на PreviewPage что бы было возможным осуществлять действия - http://prntscr.com/o9nbjt. Сразу скажу онлайн режим не подходит. Уже использую Terrasoft.SyncUtils.synchronizeData

Terrasoft.sdk.Model.setModelEventHandler("Order", 
	Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.After].update, 
	function(config) {
		var record = config.scope.eventConfig.records[0];
		if(record.modified.hasOwnProperty("Status")) {
			Terrasoft.util.Sync.synchronizeData({
				exportOnly: false ,
				isCancelable: true,
				checkIfSyncStarted: true,
				checkForPredefinedDatabase: false,
				ignoreNotifications: true,
				runType: Terrasoft.Sync.RunTypes.Background,
				redirect: true
			});
		}
	}
);

 

Возможно ли делать синхронизацию данных в фоновом режиме без перезагрузки приложения отправить измененный заказ в основную БД? Какие методы использовать?

 


 

Фоновая синхронизация доступна пока что только для Android. Чтоб она работала нужно включить системную настройку RunMobileSyncInService.

Запускать в фоне можно вот так:

Terrasoft.SyncUtils.synchronizeData({

    redirect: false,

    isCancelable: true,

    ignoreNotifications: true, 

    checkForPredefinedDatabase: false

});

Вам нужно дожидаться каких-то данных с сервера?

Кривонос Максим,

нужно понимать что синхронизация прошла успешно и выводить сообщение пользователю

 

Смотрите какое поведение системы(делаю на эмуляторе):

подставил код который Вы написали выше - http://prntscr.com/o9ze1c

Синхронизация проходит без редиректа на основную страницу, но затем после сохранения записи не отрабатывают события, перехожу в другой раздел и затем обратно в раздел заказы и наблюдаю следующее - http://prntscr.com/o9zg5s

Как быть с таким поведением видимо что то где то перезатирается?

1) При подписке на события модели нужно в конце вызывать config.success

2) Если вы хотите что-то отображать пользователю то логику нужно реализовывать на карточке а не на объекте

3) у synchronizeData есть метод finish по идее он должен вызываться в конце

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

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

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

Нравится

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

Или же необходимо после синхронизации делать редирект на preview страницу сохраненного Заказа.

Terrasoft.Configuration.WaSync = function(model, pageConfig) {
	Terrasoft.MobileSettingsPageControllerSyncManager.synchronize({
		exportOnly:false ,
		checkForPredefinedDatabase: false,
		redirect: function() {
			//Terrasoft.util.openPreviewPage(model, pageConfig);
		}
	});
};
 
Terrasoft.sdk.Model.setModelEventHandler("Order", 
	Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.After].update, 
	function(config){
		debugger;
		var model = "Order";
		var record = config.scope.eventConfig.records[0];
		var pageConfig = {
			recordId: record.data.Id
		};
		Terrasoft.Configuration.WaSync(model, pageConfig);
	});

Terrasoft.util.openPreviewPage - не срабатывает!

См. документацию по расширению синхронизации.

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

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

Написано:

Модули синхронизации являются внутренними (internal) классами и не подлежат расширению. Но часто возникает необходимость ограничить передаваемые во время синхронизации данные в соответствии с определенными правилами. Для этого была добавлена возможность управления этапами синхронизации с помощью класса управления.

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

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

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

Сделал замещение страницы BaseModulePageV2 (ESN)

Написал такой код.

define("BaseModulePageV2", [], function() {
	return {
		methods: {
			init: function() {
				this.callParent(arguments);
				this.setESNTabCaptionNumber();
			},
			setESNTabCaptionNumber: function() {
				var esnTabCaption = this.get("Resources.Strings.ESNTabCaption") + "()";
				this.$ESNTabCaptionNumber = esnTabCaption;
			}
		},
		attributes: {
			"ESNTabCaptionNumber": {
				type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				dataValueType: this.Terrasoft.DataValueType.LONG_TEXT,
				value: ""
			}
		},
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "merge",
				"name": "ESNTab",
				"values": {
					"caption": {"bindTo": "ESNTabCaptionNumber"},
				}
			},
		]/**SCHEMA_DIFF*/
	};
});

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

Нравится

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

Добрый день!

Скорее всего вместо this.$ESNTabCaptionNumber = esnTabCaption нужно написать this.set("ESNTabCaptionNumber", esnTabCaption)

Сидоров Александр В., нет, так тоже не работает

Нашел похожую тему https://community.terrasoft.ru/questions/izmenit-ima-vkladki-tab

Придется писать напрямую в коллекцию.

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

Нужно сделать сложную выборку из БД и загрузить ее в gridData.

Столбцы gridData создал все подготовил. Теперь нужно загрузить данные.

gridData.loadAll - загружает данные из выборки EntitySchemaQuery.

Я планирую данные получать из исходного кода, там будет обычный SQLText который вернет мне таблицу с результатом. теперь эту таблицу нужно загрузить в gridData. Кто сталкивался или знает как в gridData загрузить строку?

Нравится

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

Добрый день!

1) Если возможно, сделайте представление для вашей сложной выборки: в системе и в базе данных. И уже работайте с представлением, как с обычным EntitySchemaQuery.

2) Если выборку сложно оформить в представление, то с сервера вам нужно воссоздать объект, который возвращает esq (создать свои классы), что то типа

{
	nextPrcElReady: false,
	notFoundColumns: [],
	rowsAffected: 0,
	success: true,
	rows: [],
	rowConfig: []
}

а на клиенте загружать этот объект:

var r = query._getResponseEntityCollection(result);
grid.loadAll(r.collection);

 

Добрый день!

1) Если возможно, сделайте представление для вашей сложной выборки: в системе и в базе данных. И уже работайте с представлением, как с обычным EntitySchemaQuery.

2) Если выборку сложно оформить в представление, то с сервера вам нужно воссоздать объект, который возвращает esq (создать свои классы), что то типа

{
	nextPrcElReady: false,
	notFoundColumns: [],
	rowsAffected: 0,
	success: true,
	rows: [],
	rowConfig: []
}

а на клиенте загружать этот объект:

var r = query._getResponseEntityCollection(result);
grid.loadAll(r.collection);

 

Сидоров Александр В.,

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

Воссоздать объект... Там множество свойств и методов, как это все воссоздать? В СДК 

https://academy.terrasoft.ru/jscoresdk/#!/api/Terrasoft.data.model.BaseViewModelCollection

пишет следующее:

items : Object/Terrasoft.Collection/Array

Следовательно можно передать Array, только я нигде не смог найти пример как это сделать.

Радчук Виталий Владимирович,

Посмотрите в Network на результат любого запрос SelectQuery. Там будет json, который я приложил выше.

Пример:

Сидоров Александр В.,

Если у вас есть код, который преобразует эту строку объект который можно загрузить в грид - тогда это решит проблему

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

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

Зверев Александр, Можно пример где это реализовано?

Из самых сложных view, вызывающих функцию — например, VwRecentCall. Но примерно такое построение на стороне базы, как Вы ищете видел в одном из проектов на Terrasoft 3.Х, где формировался отчёт в виде таблицы и графиков на HTML и отправлялся по почте, или там же в «шахматке» (схеме этажа с квартирами).

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

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

Ещё обходной вариант, наполнять данными записи в специальной таблице в базе и строить по ней. Чтобы пользователи не мешали друг другу, добавить поле с Id сессии и фильтровать по нему. После завершения — чистить.

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

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

Столкнулся с такой проблемой. Есть орг. роли в которых есть поле Область/Штат, заполнено неким значением, в эту роль входит пользователь Иванов. При работе с моб. приложения под этим пользователем необходимо отображать только те контакты у которых на детали есть адрес с полем Область/Штат соответсвующий полю Область/Штат орг. роли.

Реализовал функцию которая считывает роли данного пользователя и заносит в глобальную переменную.

Далее добавил фильтр в реестре:

Terrasoft.sdk.Module.addFilter("Contact", Ext.create("Terrasoft.Filter", {
	type: Terrasoft.FilterTypes.Group,
	logicalOperation: Terrasoft.FilterLogicalOperations.Or,
	subfilters: Terrasoft.WaContactFiltersByRegionInCurrentUserRole()
}));
 
 
Terrasoft.WaContactFiltersByRegionInCurrentUserRole = function () {
	var subfilters = [];
	for (var i = 0; i < Terrasoft.WaRoleRegions.length; i++) {
		subfilters.push({property:"[ContactAddress:Contact:Id].Region", value:Terrasoft.WaRoleRegions[i]});
	}
	return subfilters;
};



В оффлайн режиме фильтрует, в онлайн нет, иногда выдает ошибки.

Так вот собственно вопрос, с чем это может быть связанно и как с этим бороться?

Заранее благодарен!

Нравится

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

Мне кажется, такое вообще лучше делать не программным скрытием, а раздачей прав доступа на чтение на записи в разделе контактов. Логику реализовать на стороне БП на событиях добавления и изменения объектов адреса и  роли. В итоге в мобильную версию, хоть онлайн, хоть оффлайн, будет подтягивать только те, что ему положено видеть.

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

 Здравствуйте! Согласен, изначально так и было, но в стандартном реестре записи не отображаются пользователи видят следующее -

http://prntscr.com/o6ypsp. Пользователям не нравится такой вид, поэтому задавал фильтр по ответсвенному - фильтровало, но потом как оказалось не подходит по бизнес логике фильтрации, пришлось придумать такой костыль, вот и выплыло следующее в оффе фильрует в онлайн нет - http://prntscr.com/o6yr3i

Как с таким бороться?

Вообще, это стандартное поведение с 14 версии, отображает сначала пустой список, а потом — последние посещённые 10 записей:

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

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

это понятно. Однако помимо реестра нужно ещё накладывать фильтр в справочных полях Контакт что бы фильтровало какие описано выше))

Разобрался чего не фильтровало, я в фильтр передавал объект - https://prnt.sc/o7a23e

перестроил фильтрацию по Id и все заработало как в оффлайн так и в онлайн режиме

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

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

Нашел инструкцию в "Терасофт академии" https://academy.terrasoft.ru/documents/technic-sdk/7-10/primer-ispolzovaniya-vstroennogo-processa-obekta-dobavlenie-avtonumeracii-k-polyu-stranicy 

Выполнил все по инструкции, но не удалось настроить данное поле(ничего не происходит, номер не присваивается и не генерируется). Можете помочь в данной ситуации? Возможно есть другие инструкции по выполнению данной операции? Или другие шаги выполнения? Заранее Благодарю!

Нравится

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

Fenix Agro,

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

Для использования механизма автонумерации независимо от выбранного варианта решения, необходимо добавить две системные настройки:
 
[Entity]CodeMask — маска номера объекта,
[Entity]LastNumber — текущий номер объекта,
где [Entity] — это наименование того объекта, к колонке которого будет применяться автонумерация. Например, InvoiceCodeMask (Маска номера счета) и InvoiceLastNumber (Текущий номер счета).

В примере на Академии [Entity] называется 'Invoice'.

Добрый день,

А какой вариант из двух предложенных вы реализовывали? В карточке или во внутреннем бизнес-процессе объекта? На фронте проще отладить проблему - можно просто отладчиком в браузере посмотреть что возвращает сервис.

Тёскин Дмитрий Валерьеви,

Я реализовал первый вариант. Просто суть в чем поле с номером остается пустое. Возможно вы знаете как подвязать это поле к маске номера (создавал в системных настройках), или оно автоматически понимает какой код а какое поле вставлять? Возможно поле с номером должно по особенному называться? Спасибо!

Fenix Agro,

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

Для использования механизма автонумерации независимо от выбранного варианта решения, необходимо добавить две системные настройки:
 
[Entity]CodeMask — маска номера объекта,
[Entity]LastNumber — текущий номер объекта,
где [Entity] — это наименование того объекта, к колонке которого будет применяться автонумерация. Например, InvoiceCodeMask (Маска номера счета) и InvoiceLastNumber (Текущий номер счета).

В примере на Академии [Entity] называется 'Invoice'.

Алла Савельева,

Так как раздел у меня называется "Продажи new" его код 

"CHOpportunityNew" , создал для него две настройки "Маска номера продажи new" с кодом "CHOpportunityNewCodeMask" и "Текущий номер продажи new" с кодом "CHOpportunityNewLastNumber" .  Верно сделал? Поле с номером -  название "Номер" код "CHNumber" 

Fenix Agro,

Нужно смотреть не на код раздела, а на название схемы таблицы раздела. Если таблица раздела тоже называется "CHOpportunityNew", значит верно.

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

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

Доброе утро!

Подскажите можно ли как то перезапустить процесс с выполненного шага?

Например сотрудник при завершении активности выполнил активность не с тем результатом - как можно откатиться до данной активности? Или может есть другие пути решения?

Нравится

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

Доброе утро!

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

Также нужно найти активность, которая соответствует данному элементу и у неё тоже изменить статус на не конечное значение, например, 'В работе'.

После этого вручную запустить на выполнение элемент процесса через кнопку [Выполнить элемент].

Доброе утро!

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

Также нужно найти активность, которая соответствует данному элементу и у неё тоже изменить статус на не конечное значение, например, 'В работе'.

После этого вручную запустить на выполнение элемент процесса через кнопку [Выполнить элемент].

Подскажите, пожалуйста, какое поле нужно менять для возврата элемента в работу

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

Всем доброго времени суток.

Возможно ли настроить конфигурацию мобильного приложения следующим образом, что бы при срабатывании бизнес правила и обработки модели текущей записи возможно было доставать значения данных из связанных записей? В данном случае меня интересует Контакт - http://prntscr.com/o5yxe7. Без написания запроса. или запрос нужно писать в любом случае? Стоит задача при изменении Контакта необходимо в заказе перезаписывать контактный номер телефона, как лучше реализовать?

Нравится

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

Стоит задача при изменении Контакта необходимо в заказе перезаписывать контактный номер телефона, как лучше реализовать?

Мне кажется, такое нужно делать не в мобильной версии, а на стороне сервера при синхронизации. Ведь новые данные контакта могут прийти с разных сторон, например, их может исправить пользователь, работающий в веб-версии, интеграция с сайтом, 1С или ещё чем-то. Если менять будут при помощи класса EntitySchemaQuery, можно реализовать логику во встроенном или обычном процессе.

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

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

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

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

Пытаюсь создать объект с помощью протокола OData и метода POST.

HTTP запрос выглядит так:

<АдресБазы>/0/ServiceModel/EntityDataService.svc/PaymentsCollection/

Использую следующий XML в теле запроса:

<?xml  version="1.0" encoding="utf-8"?> 

            xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"

            xmlns:georss="http://www.georss.org/georss"

            xmlns:gml="http://www.opengis.net/gml"

            xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"

            xml:base="https://dev-maksimedia.bpmonline.com/0/ServiceModel/EntityDataService.s…">            

     

         

            0000-000001

            2019-06-11T00:00:00

            110636.25

            Кафе-кондитерская "Зефир"

            

            681c7f54-2a15-4e6e-8888-249ce691dcf6

            2019-06-11T00:00:00

            2019-06-11T00:00:00

            410006e1-ca4e-4502-a9ec-e54d922d2c00

            410006e1-ca4e-4502-a9ec-e54d922d2c00

            5fb76920-53e6-df11-971b-001d60e938c6

            0

            0

            

            

            

            

            

            

            false

            false

            34917119-1e98-11e6-a31d-14dae9b19a48

           

    

 

HTTP запрос возвращает код 201 - объект создан. И даже возвращает XML  с описанием созданного объекта, где даже id присвоен:

 

<?xml version="1.0" encoding="UTF-8"?>

        xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"

        xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"

        xml:base="<Здесь адрес базы>/0/ServiceModel/EntityDataService.svc/">

    https://dev-maksimedia.bpmonline.com/0/ServiceModel/EntityDataService.s…

    
            scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>

    
            title="Payments"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')"/>

    
            type="application/atom+xml;type=entry"

            title="CreatedBy"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/CreatedBy"/>

    
            type="application/atom+xml;type=entry"

            title="ModifiedBy"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/ModifiedBy"/>

    
            type="application/atom+xml;type=entry"

            title="Currency"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/Currency"/>

    
            type="application/atom+xml;type=entry"

            title="UsrLookupKontragentOplata"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/UsrLookupKontragentOplata"/>

    
            type="application/atom+xml;type=entry"

            title="UsrLookupOrderPP"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/UsrLookupOrderPP"/>

    
            type="application/atom+xml;type=entry"

            title="UsrTypeOperation"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/UsrTypeOperation"/>

    
            type="application/atom+xml;type=feed"

            title="InvoicePaymentsCollectionByPayment"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/InvoicePaymentsCollectionByPayment"/>

    
            type="application/atom+xml;type=feed"

            title="PaymentsFileCollectionByPayments"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/PaymentsFileCollectionByPayments"/>

    
            type="application/atom+xml;type=feed"

            title="PaymentsInFolderCollectionByPayments"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/PaymentsInFolderCollectionByPayments"/>

    
            type="application/atom+xml;type=feed"

            title="PaymentsInTagCollectionByEntity"

            href="PaymentsCollection(guid'6952eb12-ca22-4014-8376-cad0981dd21e')/PaymentsInTagCollectionByEntity"/>

    

    2019-06-20T10:21:49Z

    

        

    

    

        

            Id m:type="Edm.Guid">6952eb12-ca22-4014-8376-cad0981dd21e

            0000-000001

            2019-06-11T02:00:00

            410006e1-ca4e-4502-a9ec-e54d922d2c00

            2019-06-11T02:00:00

            410006e1-ca4e-4502-a9ec-e54d922d2c00

            0

            5fb76920-53e6-df11-971b-001d60e938c6

            2019-06-11T02:00:00

            110636.25

            0

            0

            

            

            Кафе-кондитерская "Зефир"

            

            

            

            00000000-0000-0000-0000-000000000000

            00000000-0000-0000-0000-000000000000

            

            

            false

            false

            681c7f54-2a15-4e6e-8888-249ce691dcf6

            34917119-1e98-11e6-a31d-14dae9b19a48

        

    

 

НО!!! В BPM'online объект не появляется!

При попытке найти объект по ключевым полям так же ничего не находится.

В чём может быть проблема???

Нравится

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

Здравствуйте! Возможно у Вас нет прав на данную запись. Что бы наверняка отобразилась необходимо просматривать под пользователем который входит в роль системные администраторы.

Права уже полнее некуда. Попробовал через фидлер делать запрос. Та же история. Сообщает об успешности создания, даже даёт ссылка на переход к новому элементу. Но после перехода по ссылке

<АдресБазы>/0/ServiceModel/EntityDataService.svc/PaymentsCollection(guid'a1e115fc-70f6-414e-a506-e535dba00fba')

выдает: 

<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" class=" FB_FW_ext Bco">

<code>4</code>

<message xml:lang="">

Resource not found for the segment 'PaymentsCollection'.

</message>

<innererror>

<message>

Resource not found for the segment 'PaymentsCollection'.

</message>

<type>System.Data.Services.DataServiceException</type>

<stacktrace>

at System.Data.Services.Providers.DataServiceExecutionProviderWrapper.GetSingleResultFromRequest(SegmentInfo segmentInfo) at System.Data.Services.DataService`1.CompareETagAndWriteResponse(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage) at System.Data.Services.DataService`1.HandleRequest()

</stacktrace>

</innererror>

</error>

 

Проблема по прежнему не решена.

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

А если на уровне объекта вставка происходит, а реально в базе записи не появилось, дело может быть в какой-то встроенной в БП объекта логике на Saving, либо в базе на триггере instead of insert на вставку в эту таблицу. Либо запись на мгновение вставляется, но потом удаляется логикой БП по сигналу вставки или по таймеру.

Кроме фиддлера, если есть возможность, посмотрите профайлером запросы в базу.

В других справочниках создание объектов проходит отлично, а именно в справочник Payments не хочет добавлять. Никаких тригеров и бизнес логики, которая бы чтото удаляля и правила не нашел. В итоге просто создал новый юзерский справочник для ввода оплат.

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