ОБСУЖДЕНИЕ

Взаимодействие через Ole

4 ответов 5,7 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Как через EvalExpr передать элемент справочника "Сотрудники" в функцию базы ЗиК из Бух.учета?
//--->
СпрСотрудники = базаЗиК.createobject("Справочник.Сотрудники");

после там найден нужный сотрудник.

Далее нужно передать его в функцию, делаю так:

ТаблицаРеквизитов = базаЗиК.EvalExpr("глПолучитьТаблицуИсторииРеквизитов('"+Сотрудник+"','"+Дата1+"','"+Дата2+"',""СостояниеФизлица,Ставка,ФормаТруда,ГрафикРаботы"")");

не работает. В чем ошибка?
За ранее благодарен.
 
<!--QuoteBegin-Antony+4:09:2007, 14:31 -->
<span class="vbquote">(Antony @ 4:09:2007, 14:31 )</span><!--QuoteEBegin-->ТаблицаРеквизитов = базаЗиК.EvalExpr("глПолучитьТаблицуИсторииРеквизитов('"+Сотрудник+"','"+Дата1+"','"+Дата2+"',""СостояниеФизлица,Ставка,ФормаТруда,ГрафикРаботы"")");
[snapback]77193" rel="nofollow" target="_blank[/snapback]​
[/quote]

Через ОЛЕ можно передавать только простые типы данных (дата, число, строка)
Следовательно, если некая функция, вызванная через EvalExpr() возвращает НЕ простой тип данных, то к нам она перейдет как тип OLE.

З.Ы. Через ОЛЕ некорректно передаются дробные числа (округляются), поэтому их предварительно надо преобразовывать в строку.
 
<!--QuoteBegin-Antony+4:09:2007, 13:31 -->
<span class="vbquote">(Antony @ 4:09:2007, 13:31 )</span><!--QuoteEBegin-->СпрСотрудники = базаЗиК.createobject("Справочник.Сотрудники");

после там найден нужный сотрудник.

Далее нужно передать его в функцию, делаю так:

ТаблицаРеквизитов = базаЗиК.EvalExpr("глПолучитьТаблицуИсторииРеквизитов('"+Сотрудник+"','"+Дата1+"','"+Дата2+"',""СостояниеФизлица,Ставка,ФормаТруда,ГрафикРаботы"")");
[snapback]77193" rel="nofollow" target="_blank[/snapback]​
[/quote]

Попробуйте так
ТЗ = базаЗиК.EvalExpr(ЗначениеВСтроку("глПолучитьТаблицуИсторииРеквизитов('"+Сотрудник+"','"+Дата1+"','"+Дата2+"',""СостояниеФизлица,Ставка,ФормаТруда,ГрафикРаботы"")"));

Табло = ЗначениеИзСтроки(ТЗ);
 
Через ОЛЕ можно передавать только простые типы данных (дата, число, строка)
Следовательно, если некая функция, вызванная через EvalExpr() возвращает НЕ простой тип данных, то к нам она перейдет как тип OLE.

Это я и так знаю, вопрос не в этом. :rolleyes:
Но все равно спасибо.

Попробуйте так
ТЗ = базаЗиК.EvalExpr(ЗначениеВСтроку("глПолучитьТаблицуИсторииРеквизитов('"+Сотрудник+"','"+Дата1+"','"+Дата2+"',""СостояниеФизлица,Ставка,ФормаТруда,ГрафикРаботы"")"));

Табло = ЗначениеИзСтроки(ТЗ);

Так нельзя. Все, что указывается после EvalExpr должно быть сформировано в строку.
 
<!--QuoteBegin-Antony+6:09:2007, 07:35 -->
<span class="vbquote">(Antony @ 6:09:2007, 07:35 )</span><!--QuoteEBegin-->Так нельзя. Все, что указывается после EvalExpr должно быть сформировано в строку
[snapback]77334" rel="nofollow" target="_blank[/snapback]​
[/quote]
<!--QuoteBegin-Antony+6:09:2007, 07:35 -->
<span class="vbquote">(Antony @ 6:09:2007, 07:35 )</span><!--QuoteEBegin-->(ЗначениеВСтроку
[snapback]77334" rel="nofollow" target="_blank[/snapback]​
[/quote]
 
Статус
Закрыто для дальнейших ответов.