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

  • Автор темы Antony
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Antony

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

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

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

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

не работает. В чем ошибка?
За ранее благодарен.
 
L

LSH

Гость
#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.

З.Ы. Через ОЛЕ некорректно передаются дробные числа (округляются), поэтому их предварительно надо преобразовывать в строку.
 
K

kaa

Гость
#3
<!--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+"',""СостояниеФизлица,Ставка,ФормаТруда,ГрафикРаботы"")"));

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

Antony

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

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

Табло = ЗначениеИзСтроки(ТЗ);
Так нельзя. Все, что указывается после EvalExpr должно быть сформировано в строку.
 
K

kaa

Гость
#5
<!--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]
 
Статус
Закрыто для дальнейших ответов.