Здравствуйте, пытаюсь написать приложение с использованием Веб-службы DataService, проблема в следующем при добавлении записей где указываю поля с датами возвращается ответ "Удаленный сервер возвратил ошибку: (500) Внутренняя ошибка сервера." если убираю поля с датами запись добавляется, если кто то сталкивался подобным отпишитесь.

Нравится

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

Сталкивались, но в другом сервисе, конфигурационном PurchaseService.
Тогда оказалось, что:

Похоже, дело в формате даты. Вы передаёте:
<ns1:Date>2013-08-20T00:00:00+04:00</ns1:Date>
А надо:
<ns1:Date>2013-08-20T00:00:00</ns1:Date>
Если написать в этом формате, веб-сервис отрабатывает без ошибки.

"Зверев Александр" написал:

Сталкивались, но в другом сервисе, конфигурационном PurchaseService.

Тогда оказалось, что:

Похоже, дело в формате даты. Вы передаёте:

<ns1:Date>2013-08-20T00:00:00+04:00</ns1:Date>

А надо:

<ns1:Date>2013-08-20T00:00:00</ns1:Date>

Если написать в этом формате, веб-сервис отрабатывает без ошибки.


Пробовал в разных форматах
20-09-2016 13:55:00
20.09.2016 13:55:00
9/20/2016 13:55:00
все ровно ошибка 500

А если так, как в моём примере, первом и втором?

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

Здравствуйте! В sales enterprice 7.8 в карточке лида мы отключили стандартные бизнес-процессы и, чтобы не зависал прогресс-бар, заменили LeadSectionActionsDashboard на SectionActionsDashboard:

"ActionsDashboardModule": {
"config": {
"isSchemaConfigInitialized": true,
"schemaName": "SectionActionsDashboard",
"useHistoryState": false,
"parameters": {
"viewModelConfig": {
"entitySchemaName": "Lead",
"actionsConfig": {
"schemaName": "QualifyStatus",
"columnName": "QualifyStatus",
"colorColumnName": "Color",
"filterColumnName": "IsDisplayed",
"orderColumnName": "StageOrder",
"innerOrderColumnName": "StageInnerOrder",
"decouplingConfig": {
"name": "QualifyStatusDecoupling",
"masterColumnName": "CurrentStatus",
"referenceColumnName": "AvailableStatus"
}
},
"dashboardConfig": {
"Activity": {
"masterColumnName": "Id",
"referenceColumnName": "Lead"
}
}
}
}
}
}

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

Нравится

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

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

Описанное поведение не воспроизвел. Возможно у Вас не настроены вебсоккеты (не открываются автогенерируемые страницы).

Также проверьте есть ли в Вашем процессе элемент "Привязать объект к процессу" для привязывания записи лида к экземпляру процесса.

"Демьяник Алексей" написал:

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

Описанное поведение не воспроизвел. Возможно у Вас не настроены вебсоккеты (не открываются автогенерируемые страницы).

Также проверьте есть ли в Вашем процессе элемент "Привязать объект к процессу" для привязывания записи лида к экземпляру процесса.

Спасибо, Алексей. С автогенерируемыми страницами вопрос решился! Но осталась проблема:
при создании активностей через бизнес-процессы активности появляются в дашборде только после сброса кеша

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

Добрый день, возникла ошибка при попытке добавить левый грид с заказами в раздел "Заказы", по аналогии с "Активностями"

Возникает ошибка на строке "gridData.insert(0, key, item);"

addItemsToGridData: function(dataCollection, options) {
var gridData = this.getGridData();
debugger;
dataCollection = this.clearLoadedRecords(dataCollection);
dataCollection.eachKey(function(key, item) {
gridData.insert(0, key, item);
});
}

"all-combined.js:228 Uncaught Terrasoft.UnsupportedTypeException: null is unsupported type"

код модуля и детали в приложении.

Нравится

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

Здравствуйте.
Подскажите, пожалуйста, как можно решить проблему с веб-сервисом в bpmonline 5.4.
При компиляции ошибки: "Имя типа или пространства имен "ServiceModel" отсутствует в пространстве имен "System" (пропущена ссылка на сборку?)"
И соответственно: "Не удалось найти имя типа или пространства имен "ServiceContract" (пропущена директива using или ссылка на сборку?)"
Не использую EntityDataService.svc, так как нужен сервис, доступный без авторизации.

Нравится

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

Елена, возможно, Вы что-то неправильно заполнили в Using нового сервиса. См. как написан любой готовый сервис в конфигурации, например, CardService в коробке Loyalty 5.3.
Также см. статью.

Александр, спасибо. Помогло копирование библиотек в папку bin и добавление ссылок.

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

Через мастер деталей создали 2 детали - Запросы поставщикам и Запросы инженерам на основе одного объекта - Запросы. Теперь нужно на каждой детали отфильтровать записи по типу запроса (запрос поставщикам и запрос инженерам). Вот код на примере одной из деталей:

В детали прописали "filterMethod":

"UsrSchema4Detail19b3960f": {
"schemaName": "UsrSchema4Detail",
"entitySchemaName": "UsrRequest",
"filter": {
"detailColumn": "UsrSale",
"masterColumn": "Id"
},
"filterMethod": "Order1Filter"
}

Затем в массиве metthods карточки раздела прописали функцию фильтрации:
Order1Filter: function() {
var filterGroup = new this.Terrasoft.createFilterGroup();
filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
filterGroup.add("UsrTypeRequestFilter", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "UsrTypeRequest", "d0fbeb54-1381-4b01-a1f4-2bf074639122") // Образцы
);
filterGroup.add("ByOpportunityFilter", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "Opportunity", this.get("Id"))
);
return filterGroup;
}

Но фильтрация не работает. Что делаем не так?

Нравится

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

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

Рекомендую посмотреть схему детали ActivityDetailV2 - там добавлен фильтр, который отсеивает активности с типом Email.
Вам необходимо реализовать такую же логику в схеме UsrSchema4Detail.

Алексей, здравствуйте!

Вопрос такой: сейчас фильтрация работает, но только при загрузке. Как вызвать фильтр при добавлении нового элемента на деталь с реестром?

"Демьяник Алексей" написал:

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

Рекомендую посмотреть схему детали ActivityDetailV2 - там добавлен фильтр, который отсеивает активности с типом Email.

Вам необходимо реализовать такую же логику в схеме UsrSchema4Detail.

Вопрос Дениса очень актуален! Нужно, чтобы фильтрация срабатывала сразу после добавления записи на деталь, а не после сброса кеша в браузере.

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

возник вопрос, как отслеживать изменения в текстовом поле карточки.
а именно, в зависимости от введенного [Числа] в определенное текстовое поле нужно изменять значение справочного поля. подобные изменения необходимо выполнять каждый раз, когда [Число] изменяется.
подскажите, как привязать к текстовому полю событие onChange (если таковое имеется), или каким образом вообще можно решить эту задачу.

заранее благодарен

Нравится

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

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

Есть два варианта решения:
1) На странице редактирования
2) На стороне сервера по событию изменения записи бизнес-процессом

Пример реализации на стороне страницы редактирования Вы можете посмотреть в схеме OrderProductPageV2:

"PrimaryPrice": {
	dependencies: [
		{
			columns: ["Price", "Amount", "DiscountAmount", "TaxAmount", "TotalAmount"],
			methodName: "calculatePrimaryValues"
		}
	]
}

Значение поля PrimaryPrice изменяется методом calculatePrimaryValues при изменении полей "Price", "Amount", "DiscountAmount", "TaxAmount", "TotalAmount".

Что касается бизнес-процесса, то реализуйте изменение записи элементом "Изменить данные". Процесс будет запускаться по событию "Изменение данных" в Вашем объекте. Обязательно укажите, какие поля должны быть изменены.

благодарю за ответ. попробую сделать так.

Сделал по первому способу. Поля устанавливаются, но при нажатии на "Сохранить" значения остаются прежними. Если устанавливать значение справочного поля вручную, то все сохраняется.

Беда, как говорится, не приходит одна.

Приведу примерный механизм изменения данных:

var UsrL = this.get("UsrL");

далее идет поиск нужного значения справочника и установка этого значения в справочное поле

var n =  item.get("Name");
var t = {
	displayValue: n,
	value: UsrLoial.value
};
this.set("UsrL", t);

Для справочника есть следующий метод для установки значения:

this.loadLookupDisplayValue("ИмяСправочника", значение);

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

Уважаемые форумчане!
На странице продажи OpportunityPageV2 создал справочное поле "Статус оплаты" со значениями "Не выставлен" и "Ожидание оплаты". В объекте Opportunity создал колонку "WaitForPay" типа дата/время.
Как мне сделать так, чтобы после сохранения продажи в WaitForPay заносилось значение даты и времени только, если выбрано значения "Ожидание оплаты"?

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

Нравится

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

Добрый день!
Можно добавить проверку на моименте сохранения, каким значением заполнено справочное поле "Статус оплаты". В случае, если указано состояние "Ожидание оплаты", записывать дату в поле "WaitForPay". Для проверки соответствующих значений, лучше использовать константы, чтобы не сравнивать два значения типа GUID, потому что через некторое время Вы сами забудете, что Вы тут сравниваете и код станет не читаемым и не сопросождаемым.
Можно переопределить метод onSaved: function() {...} на странице OpportunityPageV2 и написать что-нибудь подобное:

onSaved: function() {
this.callParent(arguments);
this.checkIfWaitForPayStatus();
if (!this.isNewMode() && !this.get("IsProcessMode")) {
this.calculateCompleteness();
}
this.updateDetail({detail: "OpportunityTacticHistory"});
//... продолжение тела метода onSaved ... //
}

checkIfWaitForPayStatus: function () {
var payStatus = this.get("PayStatusLookup");
var waitForPayStatus = UserConstants.WaitForPayStatus.value;
var currentDate = this.getSysDefaultValue(Terrasoft.SystemValueType.CURRENT_DATE_TIME);
if (payStatus && payStatus.value === "waitForPayStatus") {
this.set("WaitForPay", currentDate);
}
}

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

Вы можете создать бизнес-процесс, который будет запускаться по событию изменения записи в объекте "Продажа", должна быть изменено значение в поле "Статус оплаты", фильтр "Статус оплаты" = "Ожидание оплаты".

Далее элементом "Изменить данные" Вы можете установить нужное значение в поле WaitForPay.

Спасибо, помогло

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

В продукте sales enterprice 7.8 нужно добавить на страницу раздела "Звонки" поле с типом "файл" для сохранения одной записи звонка.
В конфигурации , в объекте раздела "Звонки" я добавила поле с типом "файл". В мастере раздела это поле недоступно для добавления в схему.
Как добавить это поле на страницу редактирования раздела "Звонки"?

Нравится

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

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

Мастер раздела bpm'online не умеет работать с полями с типом "Изображение", "Файл".
Для решения Вы можете сделать следующее:
1) Создать поле с типом "Справочник", которое будет ссылаться на объект "Файл и ссылка звонка"
2) Прикрепить запись разговора на деталь "Файлы и ссылки"
3) Реализовать логику переноса ссылки на добавленный файл в созданное Вами поле.

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

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

Добрый день.
Что необходимо проверить если быстродействие упало?
Ситуация такова, есть рабочая и тестовая среда.
Настройки одинаковые.
Но тестовая работает в разы быстрее чем рабочая. С учётом того что в рабочей подключений 3.
Всё пересмотрели.
Поделитесь опытом на что обратить внимание.
Спасибо.

Нравится

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

Добрый день.

Попробуйте проверить скорость работая в разных браузерах, или второе приложение открывать в режиме инкогнито. Т.к. два приложения не смогут работать одновременно в одном браузере.
Дополнительно нужно убедиться, что для каждого из сайтов указано разное значение redis db (в диапазоне от db=0 до 13) в файле ConnectionStrings:

<add name="redis" connectionString="host=localhost;db=0;port=6379;maxReadPoolSize=25;maxWritePoolSize=25" />

Илья, почему от 0 до 13?

Это значение индекса базы данных сервера сессий Redis.
Можно и больше, если изменить параметр databases в конфигурационном файле redis.conf

Коллеги. Все ваши рекомендации выполненные. Все равно производительность тестовой больше чем продуктива. Даже если делаем клон продуктива он также тупит.

Мне кажется, дело в другом.

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

Первым делом надо понять, кто тормозит: веб-сервер, SQL-сервер или вообще браузер пользлователя.

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

Если сайт — могут быть запущены БП, потребляющие много ресурсов.

Понять, в чём проблема, можно по загрузке процессора и памяти на обоих серверах, веб и SQL.

Мы начали смотреть и анализировать все по порядку.
Нам очень сильно помог инструмент RedisDesktopManager который визуально показывает сколько баз крутиться. Мы поняли что у нас есть ряд БД которых нет, но они работают. И в настройках редиса нашли ошибку которую исправив все заработало.

То есть дело было всё же в Redis?
О RedisDesktopManager не знал, спасибо, надо поставить, посмотреть.

Да. Конкретно у нас да.

А до этого еще была проблема с web.config
Использовался старый MicrosoftWSService вместо нового SuperWSService. Но имхо это не так было существенно как Редис)))

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

Только начал изучать платформу, нужную информацию что-то не нашел.
Задача: есть два поля: чекбокс и поле справочника. Необходимо при установке галочки чекбокса устанавливать одно определенное значение из справочника, при снятии - другое. Проблема в том, как привязать чекбокс ко второму полю и как устанавливать значение поля из справочника.

Нравится

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