Мой опыт небольшого проекта с веб-сервисами (Часть 2)

Продолжение публикации по веб-сервису для реализации странички с выводом данных.

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

Остановились на том, что в 1С создали веб-сервис и сделали его публикацию

На данный момент у вас должен отображаться ответ по ссылке http://<имя_сервера>/<имя_базы>/ws/<имя_сервиса>?wsdl, "имя базы " -то имя которое указано при публикации. Еще одно важное отступление, пароль пользователя для аутентификации указывается в файле default.vrd в явном виде, в разделе ib="File=&quot;<каталог_базы>&quot;;Usr=&quot;<имя_пользователя>&quot;;Pwd=&quot;<пароль>&quot;;" для серверной базы соответственно строка подключения в начале будет отличаться.

Дальше можно заняться обработкой результата я это делал с php, подробно на установке php останавливаться не хочу, в каталоге с вашем сайтом, создаем файлик типа doc1c.php, там прорисовываете страницу напимер

<html>

<head>
<link rel = "stylesheet" href ="mystyle.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


</head>

<body class ="m_body">
<style type="text/css">
h1 {
text-align: center;
background: "#6496c8";
}
table {
border-collapse: collapse;
margin: auto;
}
table.brd th,
table.brd td {
border: 1px solid #000;
font-size: 14px;
font-family: Arial;
padding: 10px 5px 5px 5px;
border-color:  #6496c8;
background: white;
}
table.brd th {
color: #fff;
text-shadow: -1px 1px #417cb8;
border-color: #fff;
background: #6496c8;
}
</style>

<h1 style = "background=#6496c8">
Журнал документов <br>

</h1>

<form method= "get" accept-charset=="utf-8">

<p class = "p" >Поставщик (часть наименования):
<input name ="vender" type="string">
<input type='submit' class ="button" value='Сформировать'>
</p>

<?php
if($_GET){
include 'app/SoapCl.php';
}
?>

</form>

</body>

</html>

добавил немного оформления, представляю какие комментарии меня ждут, на страничке поместил Параметр поставщик (знаю что нужно писать vendor), ну и самое содержательное в файле SoapCl.php в подкатологе /app

<?php

Error_Reporting(E_ALL & ~E_NOTICE);

date_default_timezone_set('Europe/Moscow');

$client = new SoapClient("http://.../ws/...?wsdl");

$Vender = $_GET['vender'];

$page =  $_GET['page'];

//echo $page;

$par =array('SubName'=>$Vender,
'offset'=>0,
'limit'=>0
);

$res = $client->DocObmen($par);
$DocsRes =$res->return->Приход;

$row_cnt =count($DocsRes);

$limit= 20;

if(!is_numeric($page)) $page=1;

if ($page<1) $page=1;

$pages = $row_cnt/$limit;

$pages = ceil($pages);

$pages++;

if ($page>$pages) $page = 1;

$list=--$page*$limit;

$par =array('SubName'=>$Vender,
'offset'=>$list,
'limit'=>$limit
);

$res = $client->DocObmen($par);
$DocsRes =$res->return->Приход;

?>
<div class= "p">

<table class = "brd">
<tr>
<th>Номер</th>
<th>Дата</th>
<th>Контрагент</th>
<th>Сумма</th>
<th>Вид</th>
<th>Номер Входящего</th>
<th class = "col_date">Дата Входящего</th>

</tr>


<?php

for ($i=0;$i<count($DocsRes);$i++){

$Num = iconv('utf-8','cp1251',$DocsRes[$i]->Номер);

$Date = $DocsRes[$i]->Дата;
$Date = date_create($Date);
$Date =  date_format($Date, 'd.m.Y H:i:s');

$Sum = iconv('utf-8','cp1251',$DocsRes[$i]->Сумма);
$Vnd = $DocsRes[$i]->Контрагент;
$Vid = $DocsRes[$i]->Вид;
$NumInv = $DocsRes[$i]->НомерВх;

$DateInv = $DocsRes[$i]->ДатаВх;
$DateInv = date_create($DateInv);
$DateInv =  date_format($DateInv, 'd.m.Y H:i:s');

echo
'<tr><td>'.$Num.'</td>
<td class = "col_date">'.substr($Date,0,10).'</td>
<td class="col_vend">'.$Vnd.'</td>
<td class="col_sum">'.$Sum.'</td>
<td>'.$Vid.'</td>
<td>'.$NumInv.'</td>
<td class="col_date">'.substr($DateInv,0,10).'</td>
</tr>';

}
?>
</table>

<?php

if ($page>=1) {

echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?vender='.$Vender.'&page=1"><<</a> &nbsp; ';
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?vender='.$Vender.'&page=' . $page .
'">< </a> &nbsp; ';
}

//$this = $page+1;
$start = $page+1-3;
$end = $page+1+3;


for ($j = 1; $j<$pages; $j++) {
if ($j>=$start && $j<=$end) {

if ($j==($page+1)) echo '<a href="' . $_SERVER['SCRIPT_NAME'] .
'?vender='.$Vender.'&page=' . $j . '"><strong style="color: #6496c8">' . $j .
'</strong></a> &nbsp; ';

else echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?vender='.$Vender.'&page=' .
$j . '">' . $j . '</a> &nbsp; ';
}
}

if ($j>$page && ($page+2)<$j) {

echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?vender='.$Vender.'&page=' . ($page+2) .
'"> ></a> &nbsp; ';

echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?vender='.$Vender.'&page=' . ($j-1) .
'">>></a> &nbsp; ';
}


?>
</div>

результат будет представлен в виде простой таблицы с элементарным форматированием, файлик mystyle.css для полноты картины


.p {
margin: 10px auto;
text-align: center;
}

.m_body{
background-color: RGB(248,247,242);
margin: 5pt;
font-family: Arial;
}

.table.brd th,td {
border: 1px solid #000;
font-size: 14px;
font-family: Arial;
padding: 10px 5px 5px 5px;
border-color:  #6496c8;
background: white;
}
.table.brd th
{
background: #6496c8;
}

.auth_subm {
height: 20pt;
font: 12 pt Arial, Helvetica, sans-serif;
margin: 2pt;
margin-right: 25%;
text-align:center
}

.col_vend {
width: 300px;
}

.col_date{
width: 80;
}

.col_sum{
width: 100;
text-align: right;
}

.txtsdw{
color: white;
text-shadow: -1px -1px 0 black,
-2px -2px 1px black;
}

.button {
height: 25pt;
font-weight: bold;
color: #fff;
background-color: #6496c8;
text-shadow: -1px 1px #417cb8;
border: none;
}

.button:hover{
background:#6BAFD1;
}

.edt{
margin: auto;
}

в представленных скриптах нужно только вставить свою ссылку на веб сервис и получите страничку как на скрине.

На этом все.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *