Можно от десятки ожидать возможности выполнения функций десятки из внешних программ?
Собственно говоря, прокси сервер, который на прошлом семинаре был - вполне себе выполнение функций десятки через XML-RPC хоть из сайта, хоть из внешней программы. Будет вместе с 10.2.
А пример кода... ну вот, например, то, что на прошлом семинаре работало (обработчик AJAX запросов с web-страницы, получающий данные из ИБ10). На стороне ИБ это все транслируется в прикладное событие на сервере, где можно хоть получить данные из базы, хоть положить их туда - все что угодно.
<?php
error_reporting(E_ALL ^ E_DEPRECATED);
require_once 'lib/xmlrpc.inc';
require_once 'xmlrpc_cfg.php';
header("Content-Type: application/json");
function fatalFail($code, $message)
{
$result = array();
$result["fail"] = array(
"code"=>$code,
"message"=>$message
);
echo json_encode($result);
exit;
}
if (!isset($_COOKIE['sid'])) {
fatalFail($errWrongSession, "no sid in cookies");
}
$sid = $_COOKIE['sid'];
$hdr = array(
'name' => new xmlrpcval('Оборотка', 'string'),
'family' => new xmlrpcval('Тест', 'string'),
'sender' => new xmlrpcval('hdr_sender', 'string'),
);
$idStr = "БУХГАЛТЕРИЯ/АНАЛИТИКА/СЧЕТА";
if (isset($_POST["scet"])) {
$scet = trim($_POST["scet"]);
if ($scet !== "") {
$idStr .= "/" . $_POST["scet"];
}
}
if (!isset($_POST["dateFrom"]) || !isset($_POST["dateTo"])) {
fatalFail(1, "dates not set");
}
$input = array(
"датаС" => new xmlrpcval($_POST["dateFrom"], "string"),
"датаПо" => new xmlrpcval($_POST["dateTo"], "string"),
"идСтр" => new xmlrpcval($idStr, "string")
);
$ed = array(
"вход" => new xmlrpcval($input, "struct")
);
$params = array(
new xmlrpcval('EVENT', 'string'),
new xmlrpcval($sid, 'string'),
new xmlrpcval('Сайт', 'string'),
new xmlrpcval($hdr, 'struct'),
new xmlrpcval($ed, 'struct')
);
$myclient = new xmlrpc_client($xmlrpc_url);
//$myclient->setdebug(1);
$myclient->request_charset_encoding = 'UTF-8';
//$myclient->setCookie('sid', $sid);
$myclient->setSSLVerifyHost(0);
$myclient->setSSLVerifyPeer(0);
$msg = new xmlrpcmsg('request', $params);
$resp = $myclient->send($msg);
if ($resp->faultCode()) { // some error
fatalFail($resp->faultCode(), $resp->faultString());
}
// OK
// writing response table
$decoded = php_xmlrpc_decode($resp->value())['payload'];
//var_dump($decoded);
//var_dump($decoded['данные']);
//var_dump($decoded['столбцы']);
echo json_encode($decoded, JSON_BIGINT_AS_STRING | JSON_UNESCAPED_UNICODE);
?>
|