php и 1С предприятие v8

t3[0one]

Новичок
php и 1С предприятие v8

Ищу классы, любые готовые решения на php для работы с сервером 1С предприятие v8.
При возможности поделитесь своими решениями в проектировании и тп!
Спасибо !
 
$v8App = new COM('V8Application');

и далее вперед с песней в мануал 1cки

win32 only, естественно
 
Ну это то понятно com на php , через httpconnect на 1с.
Просто хотелось посмотреть , может чего перенять в падходе сией связки у людей каторые с этим уже сталкивались!

-~{}~ 30.01.07 16:54:

Alexandre
спасибо почитаю !
 
было реализованно следующее решение (не мной)

был разработал прокси объект, который обращался к 1С (как к COM), он был к ней подконекчен постоянно и работал в режиме прокси.

Если коннектится к 1С каждый раз, то много (даже очень мнего ) время уходит на соединение. По этому был реализован именно схема - прокси.

Все обращения шли на сервак, транслировались на прокси, там формироался "уродский запрос" в стиле 1С, и вызывались объекты 1С, полученный запрос транслировался на WEB сервер.

По меркам для 1С - работало довольно-таки шустро.

-~{}~ 30.01.07 17:46:

вообще-то посмотри http://phpclub.ru/talk/showthread.php?s=&threadid=95887&rand=0
Тут немного иной подход, инициатором обмена является 1С, она по команде оператора отправляет запрос (экспорт прайса на сервер).

Минус конкретного скрипта - отправляется веь прайс - большой трафик при больших данных. Нужно хранить еще столбик (или таблицу) - актуальные данные на сервере.
 
Спасибо !


Сейчас в планах есть не плахой проект, там судя по техническому заданию нужно ставить сервер 1с и веб сервер в одну интрасеть. Вот там надо будет обеспечить максимально быструю работу , с постоянным обменом данных. От думаю как лучше организовать.
 
От думаю как лучше организовать.
Тогда вариант с прокси объектом может тебе помочь.

Но все зависит от задачи, ну и от архитектуры - кто будет являться инициатором обмена.
 
я уже давно пишу код 1С прямо в вебстраницах пхп :)
 
PHP:
<?php
  $v8COM = new COM('v8.COMConnector') or die("Couldn't create the COM Component");
  $v8 = $v8COM->Connect("Srvr=имя_сервера;Ref=имя_базы;Usr=пользователь;pwd=пароль");
  $query = $v8->NewObject("Запрос");
  $query->Текст = "ВЫБРАТЬ первые 100 
        ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровКомпании.Регистратор) КАК Регистратор,
        ОстаткиТоваровКомпании.Номенклатура.Код КАК НоменклатураКод,
        ОстаткиТоваровКомпании.Период КАК Период,
        ОстаткиТоваровКомпании.СкладКомпании.Код КАК СкладКод,

      ИЗ
        РегистрНакопления.ОстаткиТоваровКомпании КАК ОстаткиТоваровКомпании";
  $result = $query->Выполнить();
  $row = $result->Выбрать();
    while ($row->Следующий()) {
       echo date('Y-m-d',strtotime($row->Период)) . "', '". $row->НоменклатураКод."', '" . sprintf('%.3f',$row->Количество);
    }

  $row=NULL;
  $result=NULL;
  $query=NULL;
  $v8=NULL;
  $v8COM=NULL;
?>
 
Конечно нет, ибо страницы выдаются за 0.1 сек, а сам сервер стартует за 20-22 секунды (т.е. тот самый коннект к внешнему серверу 1С).
 
никто на лету из 1С8 никаких данных не получает
я просто привел кусок РАБОЧЕГО кода который коннектится и выбирает данные

там вообще просто ДИКО тормозной сервер приложений

ORM под php на MSSQL ито гораздо быстрее работает
 
други, срочно нужна ваша помощь!
код ниже опробовал, не работает
уже с ног сбился ища причину, может все же хоть кто-то подскажет, может у меня настройки не те?
php 5.3 при выполнении кода ниже получаю такие ошибки:

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> V82.COMConnection<br/><b>Description:</b> ��� �� ��������� 'Запрос'' in C:\_Site\localhost\www\drupal_6.24\sites\all\modules\fas_tasks\fas_tasks.module:383 Stack trace: #0 C:\_Site\localhost\www\drupal_6.24\sites\all\modules\fas_tasks\fas_tasks.module(383): variant->NewObject('????????????') #1 C:\_Site\localhost\www\drupal_6.24\sites\all\modules\fas_tasks\fas_tasks.module(371): fas_task_run(Object(stdClass)) #2 C:\_Site\localhost\www\drupal_6.24\sites\all\modules\fas_tasks\fas_tasks.module(49): fas_tasks_cron() #3 [internal function]: fas_tasks_page() #4 C:\_Site\localhost\www\drupal_6.24\includes\menu.inc(350): call_user_func_array('fas_tasks_page', Array) #5 C:\_Site\localhost\www\drupal_6.24\index.php(17): menu_execute_active_handler() #6 {main} thrown in C:\_Site\localhost\www\drupal_6.24\sites\all\modules\fas_tasks\fas_tasks.module on line 383

если попробовать обратиться $query = $v8->Справочники->Справочник1;
Uncaught exception 'com_exception' with message 'Unable to lookup `Справочники':

но при этом скрипт на вижуал бейсике в ворде работает прекрасно:
PHP:
Dim cntr As Object
Dim trade As Object
Dim Элемент As Object

Set cntr = CreateObject("V82.COMConnector")                                   'Создать менеджер COM-соединений
Set trade = cntr.Connect("Srvr=""127.0.0.1"";Ref=""test_db"";Usr="""";Pwd=""""")     'Получить внешнее соединение
Set СправочникТоваров = trade.Справочники.Справочник1
Set ГруппаТоваров = СправочникТоваров.СоздатьГруппу()

ГруппаТоваров.Наименование = "***** Экспорт из Excel ******"
ГруппаТоваров.Записать

N = 100   'Количество строк в документе
For Count = 1 To N

Set Элемент = СправочникТоваров.СоздатьЭлемент()
Элемент.Наименование = "name"
Элемент.Записать

Next Count

PHP:
<?php
  $v8COM = new COM('v8.COMConnector') or die("Couldn't create the COM Component");
  $v8 = $v8COM->Connect("Srvr=имя_сервера;Ref=имя_базы;Usr=пользователь;pwd=пароль");
  $query = $v8->NewObject("Запрос");
  $query->Текст = "ВЫБРАТЬ первые 100 
        ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровКомпании.Регистратор) КАК Регистратор,
        ОстаткиТоваровКомпании.Номенклатура.Код КАК НоменклатураКод,
        ОстаткиТоваровКомпании.Период КАК Период,
        ОстаткиТоваровКомпании.СкладКомпании.Код КАК СкладКод,

      ИЗ
        РегистрНакопления.ОстаткиТоваровКомпании КАК ОстаткиТоваровКомпании";
  $result = $query->Выполнить();
  $row = $result->Выбрать();
    while ($row->Следующий()) {
       echo date('Y-m-d',strtotime($row->Период)) . "', '". $row->НоменклатураКод."', '" . sprintf('%.3f',$row->Количество);
    }

  $row=NULL;
  $result=NULL;
  $query=NULL;
  $v8=NULL;
  $v8COM=NULL;
?>
 
НЕ только, я имел ввиду что имена COM методов должны быть в кодировке cp1251 и данные тоже cp1251
 
Сверху