Приветствую!
Занимался тем, что делал механизм импорта из 1С'a в аксапту , и наткнулся на то, что многие поля в 1С'e имеют тип binary , даже поле Пол (не понимаю, почему не могли 0/1 использовать).
X++:
static void Ic8_testTradeQueryCom(Args _args)
{
str text;
com query,md;
com Result;
com Choose;
EmplTable emplTable;
Com cc = new Com("v81.COMConnector");
// Подключение к БД
com con = cc.Connect("srvr=\"cs005\";ref=\"db_1c_hrm_test\";Usr=\"Администратор\";pwd=\"\";");
// Вывод сообщения о названии конфигурации
md = con.Metadata();
print md.name();
Text = " ВЫБРАТЬ * ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица"
+ " ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц КАК ФИОФизЛиц"
+ " ПО ФизическиеЛица.Ссылка = ФИОФизЛиц.ФизЛицо"
+ " ГДЕ ФизическиеЛица.Код <> \"000000001\"";
// Создаем объект Запрос
Query = con.NewObject("Запрос");
Query.Text(Text);
// Выполнение запроса
Result = Query.Execute();
Choose = Result.Choose();
// Выборка результата выполнения запроса
While (Choose.Next())
{
select forupdate firstonly firstfast
emplTable
where emplTable.EmplId == strLTrim(strRTrim(Choose.()));
emplTable.EmplId = strLTrim(strRTrim(Choose.()));
emplTable.lastName = Choose.();
emplTable.firstName = Choose.();
emplTable.middleName = Choose.();
emplTable.BirthDate = Choose.();
EmplTable.PayInn_RU = Choose.();
EmplTable.PayInnPf_RU = Choose.();
if (Choose.() == "0x863A7C890BC7DB6849BB5C5D636552AA
") // в БД пол лежит в формате binary(16). мужчина выглядит, как 0x863A7C890BC7DB6849BB5C5D636552AA
//то мужчина
else
//иначе женщина
}
}
на сравнении есстно вылетает ошибка. Как же все-таки сравнить бинарные данные из 1С?