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

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

Antony

Как через 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]
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab