EvalExpr
Вычислить выражение системы 1С:Предприятие.
Синтаксис:
EvalExpr(<СтрокаВыражения>)
Англоязычный синоним:
EvalExpr
Параметры:
<СтрокаВыражения>
Строковое выражение — выражение, записанное на встроенном языке 1С:Предприятие.
Возвращаемое значение:
Результат вычисленного выражения.
Описание:
Метод EvalExpr вычисляет выражение, записанное в параметре <СтрокаВыражения> на встроенном языке 1С:Предприятие и возвращает результат вычисления. Результатом выражения может быть число, строка, дата или значение любого агрегатного типа данных. Результат с неопределенным типом данных преобразуются к строковому типу.
Таком образом, для того чтобы подключиться к Серверу надо выполнить последовательность действий:
* Создать ссылку на объект
* Произвести инициализацию
Ниже код:
serv = CreateOleObject("V77s.Application");
trade = serv.OlePropertyGet("RMTrade");
if (CheckBox1->State == cbChecked)
{
serv.OleProcedure("Initialize", trade,"/DC:\\ETA /NManager","NO_SPLASH_SHOW");
else
serv.OleProcedure("Initialize", trade,"",""); //А вот так открывается
//стартер 1С для выбора и запуска базы.
}
Некоторые пояснения по строке запуска 1с:
На форме находится ЧекБокс включенный по умолчанию. Главный его смысл в том, что мне было влом постоянно щелкать на Стартере 1С во время отладки. Поэтому использую по умолчанию путь реальной базы.
Внимание: При написании в строке запуска есть засада:путь надо писать через два обратных слэша, вот так: /DC:\\ETA, а не так как написано везде: /DC:\ETA. (ETA - это у меня каталог где лежит база, у вас д.б. свой). Если напишите неправильно, то будете лицезреть:"Project Project1.exe raised exception class EOleSysError with message 'Ошибка'. Process stopped" и долго мучаться.
Итак, к базе подключились: и теперь имеем доступ к свойствам и методам объектов 1С. Здесь у нас в распоряжении два способа: через функцию Exec или через OLE-функции. Оба способа равноправны, дело вкуса, я выбрал второй способ, т.к. выражения получаются компактнее. Поэтому с помощью этих функций для примера откроем любой справочник (у меня это справочник Организации, для проверки на типовых надо изменить на Контрагенты). Ниже код и небольшие пояснения:
ref = serv.OleFunction("EvalExpr","СоздатьОбъект(\"Справочник.Организации\")");
ref.OleFunction("ВыбратьЭлементы",1);
while (ref.OleFunction("ПолучитьЭлемент")== 1)
{
TreeView1->Items->Add(NULL,ref.OlePropertyGet("Наименование"));
}