Имя: Пароль:
1C
1С v8
1с8 + php
,
0 spectator_in
 
09.12.11
10:29
Искал примеры как подружить php с 1с - нашел только СОМ обращение к базе. WEB службы и сервисы как то невнятны.

Опишу как я себе это представляю.
Исходя из логики безопасности)
-Сервер 1с имеет доступ к базе MySQL сайта.
-Web сервер не иметт доступа к базе 1с.

В 1с пришется обработка, которая допустим выгружает данные прайса в базу MySQL сайта.

Теперь собственно задача которую я не предсавляю как решить.

Как из PHP дать команду 1с серверу выполнить нужную мне обработку? И самое главное как дождаться окончания ее выполнения?

<?php
// запускаем обработку 1с (которая заполняет MySQL таблицу данными прайса из 1с)
GetPrice1c();
// следующая команда (выводящая таблицу прайса) не должна выполняться пока полностью не отработает обработка 1с.
echo price();
?>
1 Amra
 
09.12.11
10:33
С другой стороны не пробовал зайти? Делается регламентное задание в 1С, которые производит любой обмен между 1С и сайтом
2 Alex_MA
 
09.12.11
10:41
(0)обратиться к web сервису.
>>WEB службы и сервисы как то невнятны. - почитай П.С.Белоусов, А.В.Островерх - 1С Предприятие. От 8.0 к 8.1
4 Rie
 
09.12.11
10:45
(0) Если идёшь по этому пути - то просто дождись окончания выполнения процедуры 1С. И всё.
Если хочешь асинхронно - поднимай флажок какой-нибудь
5 Alex11
 
09.12.11
10:52
Я давно написал прамой запрос из 1с к mysql. Такую мини СMS сайта, где разделы, новости, продукция все грузится сразу в базу Mysql из 1с. Плюс оттуда сгружаются заказы в 1с и создается автоматом заказ покупалетя, с предворительным уведомлением юзера. Так что php тут в принципе и не нужен особо
6 Amra
 
09.12.11
10:56
(5) См (1) )
7 spectator_in
 
09.12.11
11:09
Регламентное не очень подходит. Прайс наверно просто неудачный пример. Надо чтобы данные сливались по запросу. Задержку/ожидание данных я более менее еще представляю. А вот как дать команду 1с серверу?

Единственные вариант что приходит в голову именно на регламентных. Писать в мускль команды на выполнения в какую то таблицу. И 1ской читать эту таблицу каждую секунду. Конечно по безопасности это уже просто отлично, но может все же существует другой способ дать знать 1с серверу что мы хотим от него запуска обработки?

Смысл всей этой заморочки - максимально обезопасить 1с сервер.

На счет веб службы. А если на сервере 1с несколько веб служб? А доступ надо разрешить только к одной? (предполагается что злоумышленник знает все логины и пароли включая админский от 1с)
8 fly7
 
09.12.11
11:14
со стороны 1с опубликовать web-сервис и давать команду на него
со стороны php пишешь

 $client = new SoapClient($webservice, array('login'=>$username,'password'=>$password));
 $result = $client->GetRemnants(array('Kod'=>$nom_kode))->return;

GetRemnants(Kod) это у меня процедура web-сервиса на 1с82
9 spectator_in
 
09.12.11
11:24
просто на 1с сервере есть вебсервис который должен был недоступен админу вебсервера.
А тут получается что достаточно админу вебсервера узнать пароль админа 1с и пожалуста, сливай все что хочешь удаленно)
10 fly7
 
09.12.11
11:33
(9) зачем ему пароль админа 1с?
сделай роль, которая будет достаточна для работы с веб-сервисом и создай пользователя для работы с php с этой ролью
11 spectator_in
 
09.12.11
11:43
Условие: владелец вебсервера не должен иметь доступ к базе 1с даже зная список вебсервисов и зная пароль админа 1с