![]() |
![]() |
![]() |
|
PHP + 1С удаленный через COM соединение | ☑ | ||
---|---|---|---|---|
0
negr78
16.09.11
✎
13:51
|
Имеем:
1. Веб-сервер, отдельная машина в дата центре с Windows NT XOR 5.2 build 3790. Там самописный сайт на PHP. 2. Виртуальная машина в офисе, на которой 1C 8.1 файловая. Цель: Сайт должен запустить на 1С функцию (выписку квитанции). Далее данные с квитанцией обратно передать сайту. Что делали на тестовом компьютере (Server2003-R2), в здании: 1. Скопировали все dll от 1С в папку c:/windows/system32/ 2. Выполнили "regsvr32 COMCntr.dll" - библиотека успешно зарегистрировалась в Windows. 3. Запускаем PHP скрипт: $app = new Com("V81.COMConnector"); $res=$app->Connect('Srvr=//server1c; Ref="base"; Usr="user"; Pwd="123";'); $app = new Com("V81.COMConnector"); - срабатывает, все ОК. $res=$app->Connect(...) - ничего не возвращает ни true, ни false. PHP прекращает работу. Лог PHP пустой. Пробовал выполнять тестовый PHP скрипт напрямую скармливая PHP интерпретатору, в составе Apache, в составе IIS. Везде краш... Apache вообще "выполнил недопустимую инструкцию". Тестовый компьютер видит локальную сеть и компьютер с 1C //server1c Почему не работает подключение через PHP ? Может быть есть другой способ связать PHP+1C ? |
|||
1
WickeD
16.09.11
✎
13:58
|
||||
2
negr78
16.09.11
✎
14:22
|
Спасибо. Но это все находил и читал раньше.
1. ссылка: описание синтаксиса, у нас все с ним ок. 2. ссылка: Через URL финансовые данные пускать не хочется. Проблему думается не на уровне PHP, а раньше... |
|||
3
Fragster
гуру
16.09.11
✎
14:28
|
уже давно в 1с ест веб-сервисы, которые работаею не в пример быстрее и удобнее, чем ком
|
|||
4
Serginio1
16.09.11
✎
15:10
|
Вообщето для файловой должен быть путь "File=""c:\InfoBases\Trade"";
Подключите из 1С прежде чем пенять на PHP |
|||
5
Serginio1
16.09.11
✎
15:21
|
(3) А счего же быстрее? Там пул соединений тот же. Преобразование XML в объекты к ускорению не приводит. Просто с сервисами удобнее работать например через C# при генерации классов из схемы и работать со стаической типизацией
|
|||
6
Fragster
гуру
16.09.11
✎
15:49
|
(5) ком - на "клиенте" (который в данном случае - веб сервер с ПХП), а веб сервис - на сервере 1с, ге уже сессии нужные созданы и сразу готовы к обслуживанию, не тратится время на инициализацию ком-объекта. в файловой версии, конечно, ХЗ, но может тоже есть
|
|||
7
Serginio1
16.09.11
✎
16:14
|
Там используется тот же пул соединеий который ты можешь указать MaxConnections,PoolCapacity,PoolTimeout для СОМ соединений,которые ты можешь настраивать и в default.vrd для вэб сервисов
|
|||
8
Fragster
гуру
16.09.11
✎
16:31
|
(7) еще раз - 2 машины, на одной сайт с ПХП и нет 1са, на другой - 1с. автор попробовал влепить на машину с ПХП 1ску и дрючить там ком клиента 1ски, тянуть по сети данные всякие и прочее. в случае с веб сервисом - 1с стоит на 1 месте - там же, где и файл азы расположен, по сети передаются только итоговые данные. + на веб сервере не надо дополнительно делать тот самый пул соединений - он уже и так есть на сервере с 1с. ну и за винду не надо платить на сервере с ПХП, потому как ком там перестает испоьлзоваться
|
|||
9
Serginio1
16.09.11
✎
18:03
|
(7) С таким же успехом сайт и Вэб сервис могут находиться на разных машинах. По сути IIS грузит wsisapi.dll которая по через СОМ загружает базу которая лежит в настройках default.vrd. Сделай сайт на машине где лежит база. Нет пробем. А так у тебя еще и не только межпроцессное взаимодействие но и уже сеть добавляется, а в случае с СОМ на машине с базой такового нет. Но на самом деле я сам за Вэб сервисы. При этом проще разделить работу между 1С и сайтом. Каждый занимается своим, причем разведены по разным машинам.
|
|||
10
Deathless
16.09.11
✎
18:12
|
установи полностью 1с и не будет вылетов. Кроме того насколько я помню при СОМ соединении все равно вызывается именно приложение 1с.
|
|||
11
Deathless
16.09.11
✎
18:13
|
А вообще это не самый лучший вариант создавать СОМ так как там большая нагрузка идет по ресурсам.
|
|||
12
Kreont
16.09.11
✎
18:21
|
(0) Не : Srvr=//server1c; а так: Srvr=server1c;
|
|||
13
Kreont
16.09.11
✎
18:23
|
И кавычек что там много, строку можно прямо вписать:
$res=$app->Connect('server1c; Ref=base; Usr=user; Pwd=123;'); |
|||
14
Deathless
16.09.11
✎
18:26
|
(12) файловая =)
|
|||
15
Kreont
16.09.11
✎
18:30
|
(14) тем более, для файловой строка будет: File=
|
|||
16
Kreont
16.09.11
✎
18:31
|
+(15) File=;Usr=;Pwd=
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |