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

t3[0one]

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

Ищу классы, любые готовые решения на php для работы с сервером 1С предприятие v8.
При возможности поделитесь своими решениями в проектировании и тп!
Спасибо !
 

slach

Новичок
$v8App = new COM('V8Application');

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

win32 only, естественно
 

t3[0one]

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

-~{}~ 30.01.07 16:54:

Alexandre
спасибо почитаю !
 

Alexandre

PHPПенсионер
было реализованно следующее решение (не мной)

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

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

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

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

-~{}~ 30.01.07 17:46:

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

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

t3[0one]

Новичок
Спасибо !


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

Alexandre

PHPПенсионер
От думаю как лучше организовать.
Тогда вариант с прокси объектом может тебе помочь.

Но все зависит от задачи, ну и от архитектуры - кто будет являться инициатором обмена.
 

DiMA

php.spb.ru
Команда форума
я уже давно пишу код 1С прямо в вебстраницах пхп :)
 

slach

Новичок
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;
?>
 

DiMA

php.spb.ru
Команда форума
Конечно нет, ибо страницы выдаются за 0.1 сек, а сам сервер стартует за 20-22 секунды (т.е. тот самый коннект к внешнему серверу 1С).
 

slach

Новичок
никто на лету из 1С8 никаких данных не получает
я просто привел кусок РАБОЧЕГО кода который коннектится и выбирает данные

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

ORM под php на MSSQL ито гораздо быстрее работает
 

zoon

Новичок
други, срочно нужна ваша помощь!
код ниже опробовал, не работает
уже с ног сбился ища причину, может все же хоть кто-то подскажет, может у меня настройки не те?
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;
?>
 

slach

Новичок
НЕ только, я имел ввиду что имена COM методов должны быть в кодировке cp1251 и данные тоже cp1251
 
Сверху