![]() |
![]() |
![]() |
|
Работа с 1с через PHP | ☑ | ||
---|---|---|---|---|
0
Thatatos
31.07.06
✎
15:47
|
Уменя вот такая проблема...
На PHP написан скрипт который через OLE запрашивает в 1С функцию такого вида Функция Функц(Массив1[], Массив2[], х1, х2) //Тут оба массива заполняются Возврат 1; Конец Функции На PHP обращение выглядит так: $c1 = new COM("V77.Application") or die("Unable to instanciate"); $res = $c1->initialize($c1->rmtrade,'/DC:\СУУ /M','NO_SPLASH_SHOW'); $list1=array(); $list2=array(); $adr1=&$list1; $adr2=&$list2; $result = $c1->EvalExpr("Функц(".$adr1.",".$adr2.",1,100)"); В итоге выдает ошибку где пишет вызов функции который передался в 1с таком виде Функц(<array>,<array>,1,100)<>; ОТкуда беруться эти <> в конце строки? Я так понял ошибка именно из за них... Если кто нибудь уже работал с этим может сможет поправить меня... |
|||
1
Кецалькоатль
31.07.06
✎
15:57
|
Хм... нет, я не работал, но идея очень и очень интересная! Попробую ее развить в Web-интерфейс.
|
|||
2
Олдж
31.07.06
✎
16:03
|
Функция Функц(Массив1[], Массив2[], х1, х2) Экспорт
|
|||
3
asady
31.07.06
✎
16:11
|
Массивы в семерке не покатят - лучше строкой передавай, а строку делай из СЗ путем ЗначениеИзСтрокиВнутр и ЗначениеВСтрокуВнутр или еще как-нибудь.
|
|||
4
Camino
31.07.06
✎
16:16
|
(0) Я думаю, что в конце строки <> - это какой-то глюк вывода ошибки. В вызове ошибок я не вижу.
Покажи ошибку так, как ее отдает РНР. |
|||
5
Camino
31.07.06
✎
16:18
|
А ошибка скорее всего действительно из-за того, что ты пытаешься передать через OLE неолешный тип данных.
|
|||
6
Андрюха
31.07.06
✎
16:20
|
(0) Смело можешь подавать свою работу на конкурс "моё извращение".
(1) Что интересного? Что водку через клизьму хлещут? |
|||
7
Camino
31.07.06
✎
16:20
|
(6) Хорошее мнение. Аргументированное.
|
|||
8
Андрюха
31.07.06
✎
16:27
|
(7) Если бы из пакетных файлов DOS тоже можно было бы обращаться к 1С, думаю нашлись бы люди, котрые начали бы делать учетные системы, опираясь на "гибкую систему батников".
|
|||
9
gr13
31.07.06
✎
16:32
|
(8) а где здесь батник? или я наотдыхался до того, что просто не вижу?
|
|||
10
Camino
31.07.06
✎
16:35
|
(8) Ты себе не можешь и представить многообразие ситуаций в которых может потребоваться обращение из РНР по OLE (например, в 1С). У меня такая ситуация (не с 1С, правда, а с другой системой) была не далее чем пару месяцев назад. Поэтому юношеский максимализм на подобные темы меня просто веселит.
|
|||
11
Андрюха
31.07.06
✎
16:36
|
(10) Теперь мне понятен твой отказ.
|
|||
12
gr13
31.07.06
✎
16:37
|
(10) мне вообще этот вопрос интересен. На данный момент как интерсный метод программирования. И возможно скоро прийдется нечто подобное реализовывать.
|
|||
13
andrey1111
31.07.06
✎
16:42
|
мне кажется прав (3). Ты пытаешься передать объект (массив), который существует в контексте процесса PHP в контекст 1С. Попробуй для начала упростить функцию в 1С (убрать массивы) и передай ей простые типы. Посмотри что получиться
|
|||
14
Thanatos
01.08.06
✎
12:55
|
(2) Даже если экспортную функцию сделать все равно не работает по тем же причинам.
Придеться все делать в строках (( |
|||
15
Кецалькоатль
02.08.06
✎
14:06
|
на РНР есть такая штука
$vVar = new VARIANT($var) можно через нее массивы передавать |
|||
16
vitaly
02.08.06
✎
19:38
|
А может кто нибудь сказать как это будет с точки зрения быстродействия?
Мне кажется, что этв вещь: "$c1 = new COM("V77.Application") or die("Unable to instanciate"); $res = $c1->initialize($c1->rmtrade,'/DC:\СУУ /M','NO_SPLASH_SHOW'); " будет каждый раз запускать базу, что само по себе не очень быстро! Или я не прав в таком вопросе???? |
|||
17
Camino
02.08.06
✎
21:17
|
(16) В РНР хитрая система работы с OLE-объектами. В связи со сложностями получения сессии, вся забота о хранении оле-объектов возложена на сам экзешник. Т.е. в большинстве случаев он вернет уже созданный объект, а не будет его уничтожать и создавать заново.
|
|||
18
Ay49Mihas
03.08.06
✎
05:01
|
Народ, использование PHP здесь оправдано только в качестве внутреннего
скрипт-языка для упрощения автоматизации, к Web здесь он не имеет никакого отношения --- так как для Web он будет запускаться в UNIX-окружении. Поэтому истерия здесь поднята зря. |
|||
19
vitaly
03.08.06
✎
13:46
|
А почему именно UNIX-окружении?
Это не истерия, просто интересно стало |
|||
20
Thatatos
07.08.06
✎
15:29
|
(18) Не обязательно в UNIX-окружение...
PHP выбран для доступа к 1С через Веб а не для упрощения автоматизации... |
|||
21
Ay49Mihas
10.08.06
✎
08:48
|
>А почему именно UNIX-окружении?
Потому что PHP в большинстве имеет смысл запускать на UNIX --- у большинства провайдеров так. И потому что нужно делать универсальные решения, а не костыли и затычки дыр. А универсальное решение в данном случае --- событийное управление с промежуточным слоем. Вот так. |
|||
22
Ay49Mihas
10.08.06
✎
08:51
|
Ну и плюс ко всему хотел бы я посмотреть на такую конструкцию (запуск OLE-сервера) при настройках принудительного убивания скрипта через 30сек после начала его работы (это настройка PHP по умолчанию).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |