Вопрос

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

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

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

Ниже код вызова бизнес процесса из 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<string>("Id");
 
var sName = Get<string>("FullName");
 
var sBirthDate = Get<string>("BirthDate");
 
var sTranslitName = Get<string>("TranslitName");
 
var sAdminUnitId = Get<string>("AdminUnitId");
 
 
//var sName = "Иван Иванов";
 
 
string sCLStatus = "XXX";
 
var userConnection = Get<UserConnection>("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.

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