Вопрос

Попытался вставить  console.log("test") в текст модуля замещающего  FileDetailV2

получил ошибку 'console' is not defined

почему? как исправить?

У меня такой же вопрос

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

показалось что нашел решение в примерах сообщества = есть вариант (правда непонятно почему не работает классика - она в примерах так же присутствует) :


 
window.console.log("test")

однако он позволяет обойтись без ругани BPM на ошибки не работая фактически - в консоль ничего не выводится все равно

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

Зверев Александр, прошу прощения , я видимо неточно выразился. НЕРАБОТАЕТ имеется ввиду что BPM отказывается вообще его воспринимать в коде - выдает ошибку 'console' is not defined при попытке сохранить модуль. Вариант window.console.log такой ошибки не выдает - хотя и не выводит ничего в консоль. Естественно - я пользуюсь панелью разработчика.

Значит, в Вашем браузере такого объекта не предусмотрено.

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

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

В дизайнере страницы я добавил виджет "веб-страница". В настройках виджета одно единственное поле - веб адрес страницы. Ради теста вставил туда www.yandex.ru однако после сохранения и релогона на месте виджета отображается пустое поле, а в HTML коде на его месте написано <div id="undefinedContainer"></div>

У меня такой же вопрос

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

Вот ссылки на документацию на Академию

https://academy.terrasoft.ua/documents/base/7-13/paneli-itogov?document…

https://academy.terrasoft.ua/documents/base/7-13/blok-itogov-web-strani…

Если вы все делаете так как описано на Сайте Академии то прошу прислать скриншоты Настройки "Блока Итогов Web-Страница"

Вот ссылки на документацию на Академию

https://academy.terrasoft.ua/documents/base/7-13/paneli-itogov?document…

https://academy.terrasoft.ua/documents/base/7-13/blok-itogov-web-strani…

Если вы все делаете так как описано на Сайте Академии то прошу прислать скриншоты Настройки "Блока Итогов Web-Страница"

Власов Михаил Викторович,

 более менее разобрался. BPM таким образом блочит все внешние ресурсы. Типа он лучше меня знает что опасно, а что нет. Внутри доверенных доменов - все открывается.

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

Подскажите пожалуйста в чем проблема и кк ее решить. Я настроил по инструкции Visual Studio, выгрузил проект, запустил на компиляцию. В итоге - 250 ошибок следующего содержания (например) :

Ошибка    CS0121    Неоднозначный вызов следующих методов или свойств: 'Terrasoft.Configuration.ExchangeUtility.IsEmpty(Microsoft.Exchange.WebServices.Data.PhysicalAddressEntry)" и "Terrasoft.Configuration.ExchangeUtility.IsEmpty(Microsoft.Exchange.WebServices.Data.PhysicalAddressEntry)"    Terrasoft.Configuration.Dev    C:\wwwroot\DEV\Terrasoft.WebApp\Terrasoft.Configuration\Autogenerated\Src\ExchangeContactSyncProvider.Exchange_Entity.cs

У меня такой же вопрос

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

У вас есть методы, которые уже где-то определены в системе, в одной из подключенных библиотек, добавьте собственные префиксы например, чтобы однозначно идентифицировались ваши методы

Литвинко Павел,

Это не мои методы я еще ничего не писал. Это ругается на базовые методы самого Террасофта. 11 ошибок такого рода я смог исправить в ручную (когда забыли подставить Terrasoft вместо System например), в оставшихся типа вышеприведенного примера непонятно чего подставлять потому что в качестве конфликтных он пишет два идентичных навания

Terrasoft.Configuration.ExchangeUtility.IsEmpty(Microsoft.Exchange.WebServices.Data.PhysicalAddressEntry)

BVG,

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

Обратите внимание, что при разработке в студии компилировать нужно не стандартной кнопкой, а особой командой, которую перед этим нужно создать. Если так и делали, нужно смотреть подробнее, что и как настроили.

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

Добрый день! Столкнулся со следующей проблемой. Cайт работает по протоколу https. При настройке подключения к сайту в интерфейсе плагина ReportDesigner, для указанной строки подключения не подтягивается конфигурация для входа.
Подскажите, если ли какие-то дополнительные настройки для работы плагина с сайтом на https.

У меня такой же вопрос

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

Подключился в BPMonlineReportDesigner к демо-сайту, по https пускает нормально.

Настройки разных веб-сервисов сайта для работы по http и https прописываются в config-файлах, находящихся в папках Terrasoft.WebApp\ServiceModel\http\ и Terrasoft.WebApp\ServiceModel\https\.

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

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

Александр, спасибо за рекомендацию. Все получилось

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

Добрый день!

Хочу сделать актуализацию курсов валют, указывая актуальные значения, полученные через веб-сервис. Возникает проблема с сохранением значения курса. Пишу новое значение как новую запись в таблицу CurrencyRate, заполняю поля CurrencyId, Rate, StartDate. Проблема в том, что система обрабатывает значения Rate, вычисляя обратный курс, мантиссу и на выходе в интерфейсе имею совсем другой курс и при расчетах получаю неверные значения. Подскажите каким образом корректно сохранить полученное прямое значение курса в системе и корректно вывести его в интерфейсе в справочнике Валюты.

У меня такой же вопрос

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

Добрый день, вам нужно учесть что система производит расчеты относительно базовой валюты соответсвенно вам необходимо указывать курсы валют относительно базовой валюты. Так же следует учитывать что курс валют кешируется на уровне сессии пользователя, тоесть новый курс валюты при расчете на стороне клиента будет использоваться только после того как пользователь выйдет и войдет в систему(после обновления курса).
Пример реализации логики можете посмотреть тут https://marketplace.terrasoft.ru/app/exchange-rate-update-bpmonline

Добрый день, вам нужно учесть что система производит расчеты относительно базовой валюты соответсвенно вам необходимо указывать курсы валют относительно базовой валюты. Так же следует учитывать что курс валют кешируется на уровне сессии пользователя, тоесть новый курс валюты при расчете на стороне клиента будет использоваться только после того как пользователь выйдет и войдет в систему(после обновления курса).
Пример реализации логики можете посмотреть тут https://marketplace.terrasoft.ru/app/exchange-rate-update-bpmonline

Добрый день!

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

System.ServiceModel.EndpointNotFoundException: Прослушивание на http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx не выполняла ни одна конечная точка, которая могла бы принять сообщение. Среди прочих причин это могло быть вызвано неправильным адресом или действием SOAP. Подробнее см. в описании InnerException (если имеется). ---> System.Net.WebException: Невозможно соединиться с удаленным сервером ---> System.Net.Sockets.SocketException: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера 212.40.192.49:80
   в System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   в System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
   --- Конец трассировки внутреннего стека исключений ---
   в System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
   в System.Net.HttpWebRequest.GetRequestStream()
   в System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream()
   --- Конец трассировки внутреннего стека исключений ---
 
Server stack trace: 
   в System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream()
   в System.ServiceModel.Channels.HttpOutput.Send(TimeSpan timeout)
   в System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.SendRequest(Message message, TimeSpan timeout)
   в System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   в System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
   в System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   в System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
 
Exception rethrown at [0]: 
   в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   в Terrasoft.Configuration.CbrfDI.DailyInfoSoap.GetCursOnDate(DateTime On_date)
   в Terrasoft.Configuration.TscCbrfLoader.Load()
   в Terrasoft.Core.Process.TscLoadCurrencyRateMethodsWrapper.RunLoadCurrencyRateExecute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

Сталкивались ли вы с этим? В чем может быть причина?

Этот механизм реализован компанией «Техносерв консалтинг», лучше связаться с ними. А по тексту в журнале, может, с Вашего веб-сервера не было доступа к адресу http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx.

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

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

 

2018-10-26 17:22:07,220 [5] ERROR IIS APPPOOL\ArdshinBank7102-3 Terrasoft.WebApp.FileWebEventProvider ProcessEvent - Date: 26.10.2018 17:22:07
Date (UTC): 26.10.2018 13:22:07

Exception Message: Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следует после =, !=, <, <=, >, >= или используется в качестве выражения.
Exception Type: System.Data.SqlClient.SqlException
Exception Source: .Net SqlClient Data Provider

Exception Stack Trace:
   в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   в System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   в System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)
   в System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)
   в System.Data.SqlClient.SqlDataReader.Read()
   в Terrasoft.Core.DB.DBSecurityEngine.GetCurrentUserAdminOperationsFromDB()
   в Terrasoft.Core.DB.DBSecurityEngine.InitializeCurrentUserAdministratedOperations(String code)
   в Terrasoft.Core.DB.DBSecurityEngine.GetCanExecuteOperation(String code)
   в Terrasoft.Core.DB.DBSecurityEngine.GetEntitySchemaOperationsRightLevels(String schemaName)
   в Terrasoft.Core.DB.DBSecurityEngine.GetEntitySchemaOperationsRightLevel(String schemaName)
   в Terrasoft.Core.DB.DBSecurityEngine.GetIsEntitySchemaReadingAllowed(String schemaName)
   в Terrasoft.Core.Entities.EntitySchemaQuery.CreateSelect()
   в Terrasoft.Core.Entities.EntitySchemaQuery.GetSelectQuery(UserConnection userConnection)
   в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntityCollection(UserConnection userConnection)
   в Terrasoft.Configuration.FeatureUtilities.GetFeatureState(UserConnection source, String code)
   в Terrasoft.Configuration.FeatureUtilities.GetIsFeatureEnabled(UserConnection source, String code)
   в Terrasoft.Configuration.ConfigurationSectionHelper.GetModuleStructure(UserConnection userConnection)
   в Terrasoft.Configuration.ConfigurationSectionHelper.GetConfigurationScript(UserConnection userConnection)
   в Terrasoft.Configuration.SectionHelper.GetConfigurationScript(UserConnection userConnection)
   в Terrasoft.WebApp.Nui.ViewModuleHelper.CreateModulesConfigScript(UserConnection userConnection, HttpResponse response)
   в Terrasoft.WebApp.Nui.ViewModule.SetupModulesConfig()
   в Terrasoft.WebApp.Nui.ViewModule.Page_Load(Object sender, EventArgs e)
   в System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
   в System.Web.UI.Control.OnLoad(EventArgs e)
   в System.Web.UI.Control.LoadRecursive()
   в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

У меня такой же вопрос

6 комментариев
Лучший ответ
SELECT SysAdminOperationId, SysAdminUnitId, COUNT(*)
FROM dbo.SysAdminOperationGrantee
GROUP BY SysAdminOperationId, SysAdminUnitId
HAVING COUNT(*) > 1
 
 
SELECT SysAdminOperationId, Position, COUNT(*)
FROM dbo.SysAdminOperationGrantee
GROUP BY SysAdminOperationId, Position
HAVING COUNT(*) > 1

Если любой из этих запросов вернул что-то, то в этом проблема. Необходимо почистить данную таблицу дублирующих данных.

Без ошибок из лога  и сообщений в консоли броузера трудно чтото сказать. Разве что посоветовать обратится в тех поддержку.

Запросите у поддержке sql скрипты для перераздачи прав на существующие обекты и выполните их для тех объектов что вы меняли! Свежий бэкап есть или вы делали на среде разработки?

Есть приложение на маркет плэйсе  которое раздает права на созданные записи (актуальнот если изминили права и хотите распространить это на существующие объекты)  но если входа не происходит это вам не поможет!

Где-то есть подзапрос, который выдаёт более одной строки, хотя логика внешнего SQL-запроса ожидает одну. Вызывается он в стандартной функции ядра GetCurrentUserAdminOperationsFromDB. Видимо, при работе скрипта или переносе залилось некорректное наполнение в таблицы прав.

Где именно, можно увидеть, записав в профайлере запрос, происходящий перед падением.

вот же

TOP (1) ставьте 

Я так понимаю что это из-за неправильно разданных прав происходит ошибка, в явном виде никто sql не корректировал. Так что  про TOP 1 єто не в тему 

SELECT SysAdminOperationId, SysAdminUnitId, COUNT(*)
FROM dbo.SysAdminOperationGrantee
GROUP BY SysAdminOperationId, SysAdminUnitId
HAVING COUNT(*) > 1
 
 
SELECT SysAdminOperationId, Position, COUNT(*)
FROM dbo.SysAdminOperationGrantee
GROUP BY SysAdminOperationId, Position
HAVING COUNT(*) > 1

Если любой из этих запросов вернул что-то, то в этом проблема. Необходимо почистить данную таблицу дублирующих данных.

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

День добрый всем, может кто либо сталкивался или знает, суть задачи такова:
Нужно отфильтровать стандартный фильтр, а именно оставить лишь пару колонок из множества в section, что бы в глаза не бросались остальные. Ковырялся в сторону QuickFilterModuleV2, но что-то не разобрался с ним.

У меня такой же вопрос

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

Надо было искать не в QuickFilterModuleV2, а в CustomFilterViewModelV2.

Список колонок получает функция:

function getSimpleFilterColumnList(filters, list) {
	list.clear();
	var columnList = {};
	var columnNames = [];
	var columns = this.entitySchema.columns;
	Terrasoft.each(columns, function(column) {
if (column.dataValueType !== Terrasoft.DataValueType.GUID &&
	column.dataValueType !== Terrasoft.DataValueType.TIME &&
	column.dataValueType !== Terrasoft.DataValueType.BLOB &&
	column.dataValueType !== Terrasoft.DataValueType.IMAGELOOKUP &&
	column.usageType !== ConfigurationEnums.EntitySchemaColumnUsageType.None) {
	if (this.isColumnDeprecated(column)) {
return;
	}
	columnNames.push({
name: column.name,
caption: column.caption
	});
}
	}, this);
	var sortedColumnNames = columnNames.sort(function(a, b) {
if (a.caption === b.caption) {
	return 0;
} else {
	return a.caption > b.caption ? 1 : -1;
}
	});
	Terrasoft.each(sortedColumnNames, function(item) {
var column = columns[item.name];
columnList[column.name] = {
	value: column.name,
	displayValue: column.caption,
	dataValueType: column.dataValueType,
	referenceSchemaName: column.referenceSchemaName
};
	});
	list.loadAll(columnList);
}

 

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

Добрый день!

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

У меня такой же вопрос

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

нет, точнее так:

1. Если запускаете из пользовательского интерфейса - там только на запуск, нельзя отследить окончание выполнения.

2. Если есть преднастроенные страницы (кастомные), то можно в них последовательно включать и выключать маску.

3. Никто не помешает пользователю нажать рефреш :)

нет, точнее так:

1. Если запускаете из пользовательского интерфейса - там только на запуск, нельзя отследить окончание выполнения.

2. Если есть преднастроенные страницы (кастомные), то можно в них последовательно включать и выключать маску.

3. Никто не помешает пользователю нажать рефреш :)

Дмитрий Степанов,

Дмитрий, добрый день!
Спасибо за предложенные варианты.
Мне не совсем они подходят, возможно я не совсем точно описал кейс.
Кейс состоит в том, что:
последовательно выполняются три подпроцесса:
1) Первый заканчивается

преднастроенной страницей, далее идет переход во 2-й подпроцесс

2) Второй подпроцесс без страниц, и он выполняется достаточно долго(порядка 10 сек). В это время отображается единое окно и пользователь может быть сбит с толку.

3) После выполнения 2-го процесса запускается 3-й процесс с преднастроенной страницей. 

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

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

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

 

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

Александр, спасибо за идею. Похоже на самый реалистичный вариант.

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

Добрый день!

Есть БП с элементом преднастроенная страницы. Список параметров страницы в процессе работы изменился. Часть параметров была удалена (знаю, что так нельзя, но уже свершившийся факт). Тем не менее в процессе удаленные параметры закешировались и при настройке отображения страницы отображаются. Но при добавлении нового параметра на страницу, в списке параметров в БП новые параметры не отображаются. При создании нового элемента процесса новые параметры подтягиваются, но при попытке сохранения выдает ошибку.

Открываю метаданные страницы и вижу что с этим ID как раз прописан удаленный параметр данной страницы. Вопрос: как решить данную проблему и обновить список параметров для страницы?

У меня такой же вопрос

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

Добрый день, Дмитрий!

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

Пробовали удалить из процесса и добавить заново элемент с данной преднастроенной страницей?

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

Добрый день!

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

Terrasoft.Common.ItemNotFoundException: Элемент с идентификатором "00000000-0000-0000-0000-000000000000" не найден
   в Terrasoft.Core.ManagerItemCollection`1.GetByUId(Guid uid)
   в Terrasoft.Core.Manager`2.GetInstanceByUId(Guid uid)
   в Terrasoft.Core.Process.GetGoldWarrantyAmountProcess.get_ProductConditionCollection()
   в Terrasoft.Core.Process.GetGoldWarrantyAmountProcess.ScriptTask1Execute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

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

У меня такой же вопрос

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

Судя по тому, что в первый раз передалось нормально, потом значение переменной кто-то очищает. Если есть возможность, можно произвести отладку и посмотреть, какое значение в разные моменты находится в параметре.

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

Войдите или зарегистрируйтесь, чтобы комментировать