Мои комментарии

Заголовок Comment Дата публикации Дата обновления
Можно от десятки ожидать

Можно от десятки ожидать возможности выполнения функций десятки из внешних программ?

Собственно говоря, прокси сервер, который на прошлом семинаре был - вполне себе выполнение функций десятки через 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);

?>

23.10.2014 13:23 23.10.2014 13:23