Queue look — различия между версиями
Материал из wiki.standart-n.ru
Aleksnick (обсуждение | вклад) |
Agk (обсуждение | вклад) (→Нет поля status в таблице g$profiles) |
||
(не показаны 34 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
Инструкция о том, как настроить страницу, которая будет показывать проблемные точки с синхронизацией.<br> | Инструкция о том, как настроить страницу, которая будет показывать проблемные точки с синхронизацией.<br> | ||
− | Скрипты, которые написаны ниже, нужно выполнять на '''серверной базе'''. | + | Скрипты, которые написаны ниже, нужно выполнять на '''серверной базе'''. |
− | + | Инструкция по настройке службы очереди '''[[Синхронизация:Очередь загрузки|тут]]''' | |
− | + | =Создаем процедуру UTPR_EXTRACT_DT_VER= | |
<pre> | <pre> | ||
Строка 14: | Строка 14: | ||
declare variable I integer; | declare variable I integer; | ||
begin | begin | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
ver=null; | ver=null; | ||
i=position('exever=',params); | i=position('exever=',params); | ||
Строка 39: | Строка 29: | ||
</pre> | </pre> | ||
− | + | =Создаем процедуру UTPR_QUEUE_LOOK= | |
− | + | ||
<pre> | <pre> | ||
Строка 55: | Строка 44: | ||
MSECS integer, | MSECS integer, | ||
ENDFLAG integer, | ENDFLAG integer, | ||
− | ENDTEXT DM_BLOBTEXT) | + | ENDTEXT DM_BLOBTEXT, |
+ | VIP DM_ID_NULL) | ||
as | as | ||
+ | declare variable SUBKONTO1 varchar(250); | ||
begin | begin | ||
− | for select id, caption||' ('||DBSECUREKEY||')' from g$profiles where status=0 and caption is not null and id not in (0,1) into :profile_id,:sprofile do | + | for |
+ | --select id, caption||' ('||DBSECUREKEY||')', subkonto1 from g$profiles where id = 98 or | ||
+ | --(status=0 and caption is not null and id not in (0,1)) | ||
+ | select id, caption, subkonto1, coalesce(vip, 0) from | ||
+ | ( select g.id, g.caption||' ('||g.description||')' caption, g.vip, g.subkonto1, | ||
+ | (select first 1 q.insertdt | ||
+ | from g$queue q where q.profile_id=g.id and q.ENDFLAG is not null order by q.id desc ) insertdt | ||
+ | from g$profiles g where g.id = 98 or | ||
+ | (g.status=0 and g.caption is not null and g.id not in (0,1)) ) order by insertdt | ||
+ | into :profile_id,:sprofile, :subkonto1, :vip do | ||
begin | begin | ||
cmnt='-'; EXEVER=0;INSERTDT='01.01.2000'; ENDFLAG=0;ENDTEXT=''; | cmnt='-'; EXEVER=0;INSERTDT='01.01.2000'; ENDFLAG=0;ENDTEXT=''; | ||
select first 1 q.insertdt, datediff(millisecond,q.startdt,q.commitdt), endflag, endtext, | select first 1 q.insertdt, datediff(millisecond,q.startdt,q.commitdt), endflag, endtext, | ||
(select ver from utpr_extract_dt_ver(q.params)) | (select ver from utpr_extract_dt_ver(q.params)) | ||
− | from g$queue q where q.profile_id=:profile_id order by id desc | + | from g$queue q where q.profile_id=:profile_id and ENDFLAG is not null order by id desc |
into :INSERTDT,:MSECS,:ENDFLAG,:ENDTEXT,:exever; | into :INSERTDT,:MSECS,:ENDFLAG,:ENDTEXT,:exever; | ||
cmnt=''; | cmnt=''; | ||
− | if (: | + | if ((coalesce(:EXEVER,0) > 0) and (:EXEVER < 1.552)) then |
cmnt=cmnt || 'Версия! '; | cmnt=cmnt || 'Версия! '; | ||
Строка 75: | Строка 75: | ||
-- cmnt=cmnt || 'Сейчас в обработке... Проверь позже. '; | -- cmnt=cmnt || 'Сейчас в обработке... Проверь позже. '; | ||
if (endflag=-1) then | if (endflag=-1) then | ||
− | cmnt=cmnt || 'Ошибка загрузки пакета! '; | + | --begin |
+ | cmnt=cmnt || 'Ошибка загрузки пакета! '; | ||
+ | --select first 1 q.insertdt | ||
+ | -- from g$queue q where q.profile_id=:profile_id and q.endflag<>-1 order by id desc | ||
+ | -- into :INSERTDT; | ||
+ | --end | ||
+ | |||
if (endflag=1 and (datediff(hour,insertdt,current_timestamp)>1)) then | if (endflag=1 and (datediff(hour,insertdt,current_timestamp)>1)) then | ||
begin | begin | ||
− | if (datediff( | + | if (datediff(hour,insertdt,current_timestamp)>24) then |
− | cmnt=cmnt || ' | + | cmnt=cmnt || 'Не на связи больше суток: ' || cast((datediff(hour,insertdt,current_timestamp) / 24) as integer) || ' дн ' || |
+ | mod(datediff(hour,insertdt,current_timestamp), 24) || ' ч'; | ||
else | else | ||
− | cmnt=cmnt || 'Не на связи больше часа | + | cmnt=cmnt || 'Не на связи больше часа: ' || datediff(hour,insertdt,current_timestamp) || ' ч'; |
+ | cmnt= cmnt || coalesce(' (' || :subkonto1 || ')','') ; | ||
end | end | ||
Строка 99: | Строка 107: | ||
/* Following GRANT statetements are generated automatically */ | /* Following GRANT statetements are generated automatically */ | ||
+ | GRANT SELECT ON G$QUEUE TO PROCEDURE UTPR_QUEUE_LOOK; | ||
GRANT SELECT ON G$PROFILES TO PROCEDURE UTPR_QUEUE_LOOK; | GRANT SELECT ON G$PROFILES TO PROCEDURE UTPR_QUEUE_LOOK; | ||
GRANT EXECUTE ON PROCEDURE UTPR_EXTRACT_DT_VER TO PROCEDURE UTPR_QUEUE_LOOK; | GRANT EXECUTE ON PROCEDURE UTPR_EXTRACT_DT_VER TO PROCEDURE UTPR_QUEUE_LOOK; | ||
− | |||
GRANT SELECT ON WAREBASE TO PROCEDURE UTPR_QUEUE_LOOK; | GRANT SELECT ON WAREBASE TO PROCEDURE UTPR_QUEUE_LOOK; | ||
Строка 109: | Строка 117: | ||
</pre> | </pre> | ||
− | + | =Создаем файл queue_look.php в папке с синхронизацией= | |
− | + | ||
<pre> | <pre> | ||
+ | <h1>Имя клиента</h1> | ||
<?php | <?php | ||
//<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> | //<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> | ||
Строка 127: | Строка 135: | ||
echo "Время сервера: ".$row[0]."<br>"; | echo "Время сервера: ".$row[0]."<br>"; | ||
− | $sqltext="select CMNT,PROFILE_ID,SPROFILE,EXEVER,INSERTDT,MSECS,ENDFLAG,ENDTEXT from UTPR_QUEUE_LOOK"; | + | $sqltext="select CMNT,PROFILE_ID,SPROFILE,EXEVER,INSERTDT,MSECS,ENDFLAG,ENDTEXT,VIP from UTPR_QUEUE_LOOK"; |
$qList = ibase_query($it, $sqltext); | $qList = ibase_query($it, $sqltext); | ||
if (!$qList) {die(" error ".ibase_errmsg()."(".$sqltext.")");} | if (!$qList) {die(" error ".ibase_errmsg()."(".$sqltext.")");} | ||
// echo "<table><tr><td>##</td><td>Комментарий</td><td>Профиль</td><td>Версия</td><td>Дата</td><td>Время обработки</td><td>Флаг завершения</td><td>Техт ответа</td></tr>"; | // echo "<table><tr><td>##</td><td>Комментарий</td><td>Профиль</td><td>Версия</td><td>Дата</td><td>Время обработки</td><td>Флаг завершения</td><td>Техт ответа</td></tr>"; | ||
− | echo "<table><tr><td>##</td><td>Комментарий</td><td>Профиль</td><td>Версия</td><td>Дата</td><td>Время обработки</td><td>Флаг завершения</td></tr>"; | + | echo "<table class=\"table table-bordered table-hover table-striped\"><tr><td>##</td><td>Комментарий</td><td>Профиль</td><td>Версия</td><td>Дата</td><td>Время обработки</td><td>Флаг завершения</td></tr>"; |
$i=0; | $i=0; | ||
− | + | while ($row = ibase_fetch_row($qList)) | |
{ | { | ||
$i++; | $i++; | ||
− | + | if ($row[8]==1) { | |
+ | $class="danger"; | ||
+ | } else { | ||
+ | $class=""; | ||
+ | } | ||
+ | echo '<tr class="'.$class.'">'; | ||
echo "<td>".$i."</td>"; | echo "<td>".$i."</td>"; | ||
echo "<td>".$row[0]."</td>"; | echo "<td>".$row[0]."</td>"; | ||
Строка 149: | Строка 162: | ||
echo "</table>"; | echo "</table>"; | ||
?> | ?> | ||
+ | </pre> | ||
+ | |||
+ | =Добавляем данного клиента в настройки= | ||
+ | Дописываем в файл: | ||
+ | <pre> | ||
+ | \\192.168.67.30\web\sinhro\configs\ | ||
+ | </pre> | ||
+ | |||
+ | =Дополнительно= | ||
+ | |||
+ | ==Отображение расхождений в базе== | ||
+ | |||
+ | ===Создаем процедуры в базе=== | ||
+ | Устанавливаем процедуру для сводной базы из статьи [[Дублирование_чека]]. | ||
+ | |||
+ | ===Делаем назначенное задание=== | ||
+ | Каждую ночь запускаем процедуру PR_GET_DIFFERENCE_BY_DOCS. | ||
+ | |||
+ | ===Создаем файл difference_look.php=== | ||
+ | <nowiki> | ||
+ | <h1>Имя клиента Расхождения</h1> | ||
+ | <?php | ||
+ | //<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> | ||
+ | //проверка кодировки | ||
+ | //http://apur.standart-n.ru/sinhro/engine/queue_look.php | ||
+ | include("declare.php"); | ||
+ | $g_db = ibase_connect($GLOBALS["DB_DATABASENAME"], $GLOBALS["DB_USER"], $GLOBALS["DB_PASSWD"]) or die(" error fbdb connect ".ibase_errmsg()); | ||
+ | $it = ibase_trans(IBASE_WRITE + IBASE_COMMITTED + IBASE_REC_VERSION + IBASE_NOWAIT, $g_db) or die(" error start transaction".ibase_errmsg()); | ||
+ | |||
+ | $sqltext="select first 1 d.dt from difference_by_docs d"; | ||
+ | $qList = ibase_query($it, $sqltext); | ||
+ | if (!$qList) {die(" error ".ibase_errmsg()."(".$sqltext.")");} | ||
+ | $row = ibase_fetch_row($qList); | ||
+ | echo "Актуальность данных: ".$row[0]."<br>"; | ||
+ | |||
+ | $sqltext="select d.profile_id, d.sprofile, d.zdate, d.zid, d.rash_nal, d.rash_beznal, d.doc_id, d.status, d.cmt from DIFFERENCE_BY_DOCS d order by d.zdate desc"; | ||
+ | $qList = ibase_query($it, $sqltext); | ||
+ | if (!$qList) {die(" error ".ibase_errmsg()."(".$sqltext.")");} | ||
+ | echo "<table class=\"table table-bordered table-hover table-striped\"><tr><td>#</td><td>№</td><td>Профиль</td><td>Дата Z</td><td>№ Z</td><td>Расх. нал.</td><td>Расх. б/нал.</td><td>DOC_ID</td><td>Статус</td><td>Комментарий</td></tr>"; | ||
+ | $i=0; | ||
+ | while ($row = ibase_fetch_row($qList)) | ||
+ | { | ||
+ | $i++; | ||
+ | echo "<tr>"; | ||
+ | echo "<td>".$i."</td>"; | ||
+ | echo "<td>".$row[0]."</td>"; | ||
+ | echo "<td>".$row[1]."</td>"; | ||
+ | echo "<td>".$row[2]."</td>"; | ||
+ | echo "<td>".$row[3]."</td>"; | ||
+ | echo "<td>".$row[4]."</td>"; | ||
+ | echo "<td>".$row[5]."</td>"; | ||
+ | echo "<td>".$row[6]."</td>"; | ||
+ | echo "<td>".$row[7]."</td>"; | ||
+ | echo "<td>".$row[8]."</td>"; | ||
+ | echo "</tr>"; | ||
+ | } | ||
+ | echo "</table>"; | ||
+ | ?> | ||
+ | |||
+ | </nowiki> | ||
+ | |||
+ | =Правим configs на нашем сервере= | ||
+ | <pre> | ||
+ | файл \\192.168.67.30\web\sinhro\configs\clients.ini по аналогии | ||
+ | ждем 3 минуты, чтобы кэш обновился, и проверяем | ||
+ | </pre> | ||
+ | |||
+ | =Возможные проблемы= | ||
+ | |||
+ | ==Нет полей в таблице g$profiles== | ||
+ | |||
+ | Тогда нужно добавить эти поля в этой базе и отправить всем по g$tasks | ||
+ | |||
+ | <pre> | ||
+ | ALTER TABLE G$PROFILES ADD STATUS DM_STATUS; | ||
+ | ALTER TABLE G$PROFILES ADD SUBKONTO1 DM_TEXT; | ||
+ | ALTER TABLE G$PROFILES ADD VIP DM_ID_NULL; | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | --update g$profiles set status=0 | ||
+ | </pre> | ||
+ | |||
+ | ==Нет таблицы warebase== | ||
+ | |||
+ | Либо меняем в процедуре '''UTPR_QUEUE_LOOK''' warebase на аналог данной таблицы, либо убираем упоминания о ней. | ||
+ | |||
+ | |||
+ | ==Таблица g$queue пустая или отсутствует== | ||
+ | |||
+ | В процедуре '''UTPR_QUEUE_LOOK''' меняем | ||
+ | |||
+ | <pre> | ||
+ | select first 1 q.insertdt, datediff(millisecond,q.startdt,q.commitdt), endflag, endtext, | ||
+ | (select ver from utpr_extract_dt_ver(q.params)) | ||
+ | from g$queue q where q.profile_id=:profile_id order by id desc | ||
+ | into :INSERTDT,:MSECS,:ENDFLAG,:ENDTEXT,:exever; | ||
+ | </pre> | ||
+ | |||
+ | на | ||
+ | |||
+ | <pre> | ||
+ | select first 1 d.insertdt, 1000, 1, '', 100 | ||
+ | from docs d where d.g$profile_id=:profile_id order by d.insertdt desc | ||
+ | into :INSERTDT,:MSECS,:ENDFLAG,:ENDTEXT,:exever; | ||
</pre> | </pre> |
Текущая версия на 17:15, 1 сентября 2017
Инструкция о том, как настроить страницу, которая будет показывать проблемные точки с синхронизацией.
Скрипты, которые написаны ниже, нужно выполнять на серверной базе.
Инструкция по настройке службы очереди тут
Содержание
Создаем процедуру UTPR_EXTRACT_DT_VER
SET TERM ^ ; create or alter procedure UTPR_EXTRACT_DT_VER ( PARAMS DM_TEXT1024) returns ( VER DM_TEXT) as declare variable I integer; begin ver=null; i=position('exever=',params); if (i=0) then exit; ver=substring(params from i+7 for position(ascii_char(13)||ascii_char(10),params,i+8)-i-7); suspend; end^ SET TERM ; ^ /* Existing privileges on this procedure */ GRANT EXECUTE ON PROCEDURE UTPR_EXTRACT_DT_VER TO SYSDBA;
Создаем процедуру UTPR_QUEUE_LOOK
SET TERM ^ ; create or alter procedure UTPR_QUEUE_LOOK ( VERB_ALL integer = 0) returns ( CMNT DM_TEXT, PROFILE_ID DM_ID, SPROFILE DM_TEXT, EXEVER DM_DOUBLE, INSERTDT DM_DATETIME, MSECS integer, ENDFLAG integer, ENDTEXT DM_BLOBTEXT, VIP DM_ID_NULL) as declare variable SUBKONTO1 varchar(250); begin for --select id, caption||' ('||DBSECUREKEY||')', subkonto1 from g$profiles where id = 98 or --(status=0 and caption is not null and id not in (0,1)) select id, caption, subkonto1, coalesce(vip, 0) from ( select g.id, g.caption||' ('||g.description||')' caption, g.vip, g.subkonto1, (select first 1 q.insertdt from g$queue q where q.profile_id=g.id and q.ENDFLAG is not null order by q.id desc ) insertdt from g$profiles g where g.id = 98 or (g.status=0 and g.caption is not null and g.id not in (0,1)) ) order by insertdt into :profile_id,:sprofile, :subkonto1, :vip do begin cmnt='-'; EXEVER=0;INSERTDT='01.01.2000'; ENDFLAG=0;ENDTEXT=''; select first 1 q.insertdt, datediff(millisecond,q.startdt,q.commitdt), endflag, endtext, (select ver from utpr_extract_dt_ver(q.params)) from g$queue q where q.profile_id=:profile_id and ENDFLAG is not null order by id desc into :INSERTDT,:MSECS,:ENDFLAG,:ENDTEXT,:exever; cmnt=''; if ((coalesce(:EXEVER,0) > 0) and (:EXEVER < 1.552)) then cmnt=cmnt || 'Версия! '; if (insertdt is null) then cmnt=cmnt || 'Нет входящих пакетов!! '; -- if ((endflag is null) and (insertdt is not null)) then -- cmnt=cmnt || 'Сейчас в обработке... Проверь позже. '; if (endflag=-1) then --begin cmnt=cmnt || 'Ошибка загрузки пакета! '; --select first 1 q.insertdt -- from g$queue q where q.profile_id=:profile_id and q.endflag<>-1 order by id desc -- into :INSERTDT; --end if (endflag=1 and (datediff(hour,insertdt,current_timestamp)>1)) then begin if (datediff(hour,insertdt,current_timestamp)>24) then cmnt=cmnt || 'Не на связи больше суток: ' || cast((datediff(hour,insertdt,current_timestamp) / 24) as integer) || ' дн ' || mod(datediff(hour,insertdt,current_timestamp), 24) || ' ч'; else cmnt=cmnt || 'Не на связи больше часа: ' || datediff(hour,insertdt,current_timestamp) || ' ч'; cmnt= cmnt || coalesce(' (' || :subkonto1 || ')','') ; end --cf if ((select count(1) from warebase where sname='' and g$profile_id=:profile_id)>=1) then if (exists(select first 1 part_id from warebase where sname='' and g$profile_id=:profile_id)) then cmnt=cmnt || 'Есть пустые наименования '; if ((VERB_ALL=1) or (cmnt<>'')) then suspend; end end^ SET TERM ; ^ COMMENT ON PARAMETER UTPR_QUEUE_LOOK.VERB_ALL IS '1: выводить все, а не только проблемные'; /* Following GRANT statetements are generated automatically */ GRANT SELECT ON G$QUEUE TO PROCEDURE UTPR_QUEUE_LOOK; GRANT SELECT ON G$PROFILES TO PROCEDURE UTPR_QUEUE_LOOK; GRANT EXECUTE ON PROCEDURE UTPR_EXTRACT_DT_VER TO PROCEDURE UTPR_QUEUE_LOOK; GRANT SELECT ON WAREBASE TO PROCEDURE UTPR_QUEUE_LOOK; /* Existing privileges on this procedure */ GRANT EXECUTE ON PROCEDURE UTPR_QUEUE_LOOK TO SYSDBA;
Создаем файл queue_look.php в папке с синхронизацией
<h1>Имя клиента</h1> <?php //<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> //проверка кодировки //http://apur.standart-n.ru/sinhro/engine/queue_look.php include("declare.php"); $g_db = ibase_connect($GLOBALS["DB_DATABASENAME"], $GLOBALS["DB_USER"], $GLOBALS["DB_PASSWD"]) or die(" error fbdb connect ".ibase_errmsg()); $it = ibase_trans(IBASE_WRITE + IBASE_COMMITTED + IBASE_REC_VERSION + IBASE_NOWAIT, $g_db) or die(" error start transaction".ibase_errmsg()); $sqltext="select current_timestamp from rdb\$database"; $qList = ibase_query($it, $sqltext); if (!$qList) {die(" error ".ibase_errmsg()."(".$sqltext.")");} $row = ibase_fetch_row($qList); echo "Время сервера: ".$row[0]."<br>"; $sqltext="select CMNT,PROFILE_ID,SPROFILE,EXEVER,INSERTDT,MSECS,ENDFLAG,ENDTEXT,VIP from UTPR_QUEUE_LOOK"; $qList = ibase_query($it, $sqltext); if (!$qList) {die(" error ".ibase_errmsg()."(".$sqltext.")");} // echo "<table><tr><td>##</td><td>Комментарий</td><td>Профиль</td><td>Версия</td><td>Дата</td><td>Время обработки</td><td>Флаг завершения</td><td>Техт ответа</td></tr>"; echo "<table class=\"table table-bordered table-hover table-striped\"><tr><td>##</td><td>Комментарий</td><td>Профиль</td><td>Версия</td><td>Дата</td><td>Время обработки</td><td>Флаг завершения</td></tr>"; $i=0; while ($row = ibase_fetch_row($qList)) { $i++; if ($row[8]==1) { $class="danger"; } else { $class=""; } echo '<tr class="'.$class.'">'; echo "<td>".$i."</td>"; echo "<td>".$row[0]."</td>"; echo "<td>".$row[2]." /".$row[1]."</td>"; echo "<td>".$row[3]."</td>"; echo "<td>".$row[4]."</td>"; echo "<td>".$row[5]."</td>"; echo "<td>".$row[6]."</td>"; // echo "<td>".$row[7]."</td>"; echo "</tr>"; } echo "</table>"; ?>
Добавляем данного клиента в настройки
Дописываем в файл:
\\192.168.67.30\web\sinhro\configs\
Дополнительно
Отображение расхождений в базе
Создаем процедуры в базе
Устанавливаем процедуру для сводной базы из статьи Дублирование_чека.
Делаем назначенное задание
Каждую ночь запускаем процедуру PR_GET_DIFFERENCE_BY_DOCS.
Создаем файл difference_look.php
<h1>Имя клиента Расхождения</h1> <?php //<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> //проверка кодировки //http://apur.standart-n.ru/sinhro/engine/queue_look.php include("declare.php"); $g_db = ibase_connect($GLOBALS["DB_DATABASENAME"], $GLOBALS["DB_USER"], $GLOBALS["DB_PASSWD"]) or die(" error fbdb connect ".ibase_errmsg()); $it = ibase_trans(IBASE_WRITE + IBASE_COMMITTED + IBASE_REC_VERSION + IBASE_NOWAIT, $g_db) or die(" error start transaction".ibase_errmsg()); $sqltext="select first 1 d.dt from difference_by_docs d"; $qList = ibase_query($it, $sqltext); if (!$qList) {die(" error ".ibase_errmsg()."(".$sqltext.")");} $row = ibase_fetch_row($qList); echo "Актуальность данных: ".$row[0]."<br>"; $sqltext="select d.profile_id, d.sprofile, d.zdate, d.zid, d.rash_nal, d.rash_beznal, d.doc_id, d.status, d.cmt from DIFFERENCE_BY_DOCS d order by d.zdate desc"; $qList = ibase_query($it, $sqltext); if (!$qList) {die(" error ".ibase_errmsg()."(".$sqltext.")");} echo "<table class=\"table table-bordered table-hover table-striped\"><tr><td>#</td><td>№</td><td>Профиль</td><td>Дата Z</td><td>№ Z</td><td>Расх. нал.</td><td>Расх. б/нал.</td><td>DOC_ID</td><td>Статус</td><td>Комментарий</td></tr>"; $i=0; while ($row = ibase_fetch_row($qList)) { $i++; echo "<tr>"; echo "<td>".$i."</td>"; echo "<td>".$row[0]."</td>"; echo "<td>".$row[1]."</td>"; echo "<td>".$row[2]."</td>"; echo "<td>".$row[3]."</td>"; echo "<td>".$row[4]."</td>"; echo "<td>".$row[5]."</td>"; echo "<td>".$row[6]."</td>"; echo "<td>".$row[7]."</td>"; echo "<td>".$row[8]."</td>"; echo "</tr>"; } echo "</table>"; ?>
Правим configs на нашем сервере
файл \\192.168.67.30\web\sinhro\configs\clients.ini по аналогии ждем 3 минуты, чтобы кэш обновился, и проверяем
Возможные проблемы
Нет полей в таблице g$profiles
Тогда нужно добавить эти поля в этой базе и отправить всем по g$tasks
ALTER TABLE G$PROFILES ADD STATUS DM_STATUS; ALTER TABLE G$PROFILES ADD SUBKONTO1 DM_TEXT; ALTER TABLE G$PROFILES ADD VIP DM_ID_NULL;
--update g$profiles set status=0
Нет таблицы warebase
Либо меняем в процедуре UTPR_QUEUE_LOOK warebase на аналог данной таблицы, либо убираем упоминания о ней.
Таблица g$queue пустая или отсутствует
В процедуре UTPR_QUEUE_LOOK меняем
select first 1 q.insertdt, datediff(millisecond,q.startdt,q.commitdt), endflag, endtext, (select ver from utpr_extract_dt_ver(q.params)) from g$queue q where q.profile_id=:profile_id order by id desc into :INSERTDT,:MSECS,:ENDFLAG,:ENDTEXT,:exever;
на
select first 1 d.insertdt, 1000, 1, '', 100 from docs d where d.g$profile_id=:profile_id order by d.insertdt desc into :INSERTDT,:MSECS,:ENDFLAG,:ENDTEXT,:exever;