Добрый день, коллеги!
У меня возникла задача по запуску хранимой процедуры с карточки контакта. Я на карточке добавил действие, где вызываю бизнес процесс. Из бизнес процесса выполняю вызов хранимой процедуры.
Ниже код вызова бизнес процесса из 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# не читать из параметров, а вызывать напрямую, к примеру, "Иван Иванов" – все ок.
Отсюда я делаю вывод, что проблема либо при передаче параметров в БП, либо при начитке параметров в сценарии.
Подскажите, пожалуйста, в чем может быть проблема? Есть ли какая-то возможность посмотреть вообще, что передается в параметры бизнес процесса? Есть может какая-то возможность отладки БП?
Нравится
Попробуйте добавить в скриптаске логгер,
Для этого необходимо самом бизнес-процесса добавить
using global::Common.Logging;
После, в самой скриптаске можно вызывать Log.Debug("Message"); или Log.Error("Message");.
Сообщение можно будет просмотреть в логах приложения, которые по умолчанию находятся C:\Windows\TEMP\[id сайта], а именно в файле Common.
Также, что бы однозначно увидеть ошибку в логах, стоит использовать Log.Error("Message"); либо повысить уровень логгирования, это можно сделать в log4net.config.