7.7
bank_customer_journey

Кодировка параметров БП

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

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

Ниже код вызова бизнес процесса из ContactPageV2:

GetCLStatus: function() {

var ContactId = this.get("Id");

var ContactName = this.get("Name");

var ContactBirthDate = this.get("BirthDate").toDateString();

var ContactTranslitName = this.get("TsTranslitName");

var ContactAdminUnitId = Terrasoft.SysValue.CURRENT_USER.value;

var ContactCLStatus;

var processArgs = {

sysProcessName: "CLCheckClientProc",

parameters: {

Id: ContactId,

FullName: ContactName,

BirthDate: ContactBirthDate,

TranslitName: ContactTranslitName,

AdminUnitId: ContactAdminUnitId,

CLStatus: ContactCLStatus

}

};

ProcessModuleUtilities.executeProcess(processArgs);

}

Еще ниже уже код вызова хранимой процедуры (сценарий в БП):

var sContactId = Get("Id");

var sName = Get("FullName");

var sBirthDate = Get("BirthDate");

var sTranslitName = Get("TranslitName");

var sAdminUnitId = Get("AdminUnitId");


//var sName = "Иван Иванов";


string sCLStatus = "XXX";

var userConnection = Get("UserConnection");


DataValueTypeManager dataValueTypeManager = userConnection.DataValueTypeManager;

var textDataValueType = new TextDataValueType(dataValueTypeManager);


StoredProcedure storedProcedure = new StoredProcedure(userConnection, "ACCCHECKCLIENT")

.WithParameter("sName", sName)

.WithParameter("dob", sBirthDate)

.WithParameter("sTranslitName", sTranslitName)

.WithParameter("sContactId", sContactId)

.WithParameter("sSysAdminUnitId", sAdminUnitId)

.WithOutputParameter("sStatus", textDataValueType) as StoredProcedure;


storedProcedure.Execute();

sCLStatus = storedProcedure.Parameters.FindByName("sStatus").Value as string;

Set("CLStatus", sCLStatus);

При таком вызове мне в базу пишутся только нечитаемые символы. Если в коде C# не читать из параметров, а вызывать напрямую, к примеру, "Иван Иванов" – все ок.

Изображение удалено.

Изображение удалено.

Отсюда я делаю вывод, что проблема либо при передаче параметров в БП, либо при начитке параметров в сценарии.

Подскажите, пожалуйста, в чем может быть проблема? Есть ли какая-то возможность посмотреть вообще, что передается в параметры бизнес процесса? Есть может какая-то возможность отладки БП?

Нравится

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

Попробуйте добавить в скриптаске логгер, 

Для этого необходимо самом бизнес-процесса добавить 

	using global::Common.Logging;

После, в самой скриптаске можно вызывать Log.Debug("Message"); или Log.Error("Message");.

Сообщение можно будет просмотреть в логах приложения, которые по умолчанию находятся C:\Windows\TEMP\[id сайта], а именно в файле Common.

Также, что бы однозначно увидеть ошибку в логах, стоит использовать Log.Error("Message"); либо повысить уровень логгирования, это можно сделать в log4net.config.

 

Также, можно просмотреть какие запросы приходят в БД при помощи MS SQL Profiler, в случае если Вы используете MS SQL.

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