Имя: Пароль:
1C
Веб-мастеринг
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=