This is topic ошибка преобразования типа в шаблоне in forum Документирование в TRACE MODE / Data Documentation in Trace Mode at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/9/t/000031.html

Posted by Погодаева Г. (Участник № / Member № 192) on :
 
Здравствуйте! Помогите , пожалуйста, разобраться где у меня ошибка (вычисление среднего значения параметра FВСГо. с 6час. до 7час.):
FORMAT("%d",AVG(RTSTAT(CHAN("FВСГо.",0, "Medal"), MKTIME( TIMESTR( "%Y",RTIME(TIME(),"YR")),TIMESTR("%m", RTIME(TIME(),"MON")),TIMESTR( "%d", RTIME( TIME(),"DAY")),"6", "1" ),MKTIME(TIMESTR("%Y", RTIME(TIME(),"YR")),TIMESTR("%m",RTIME(TIME(),"MON")),TIMESTR("%d",RTIME(TIME(),"DAY")) ,"7"))))
Ошибка такая - #MKTIME:ARG#.
Этот файл шаблона у меня работал, но после переустановки Win2000 и сервера док-ния появилась эта ошибка. В чем дело?

[ 29.10.2004, 18:24: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Рекомендую два варианта:
1) Дополнить функции MKTIME() аргументами, которые Вы отбросили - секунды и мс в первом, минуты, секунды и мс во втором случае функции MKTIME().
2) Вывести значения каждого аргумента обеих функций MKTIME() как отдельных значений в документе и посмотреть чему они равны - может действительно какой-то из них возвращает неверное значение.
 
Posted by Погодаева Г. (Участник № / Member № 192) on :
 
Попробовала оба варианта - ошибка такая же.
Функция MKTIME() нормально работает с цифровыми аргументами - MKTIME(2004,8,26,6)-, но при подстановке в аргументы к.-л. функции выходит ошибка #MKTIME:ARG#. Я уже создала пользовательские функции для вычисления года,месяца и дня, т.к. прочитала что функция TIMESTR() не может использоваться в качестве аргумента и все равно ничего не помогло. Единственный вариант прошел, это MKTIME(@god,8,26,6). На любом другом месте наличие функции вызывает ошибку, например MKTIME(2004,@mes,26,6,1,1,1).
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если функцию @mes вывести в документе, какое значение она дает?
 
Posted by Погодаева Г. (Участник № / Member № 192) on :
 
Функция @mon=TIMESTR("%m",RTIME(TIME(),"MON")) на сводке показывает 08. И вообще все пользовательские функции работают правильно, т.е. выводятся на сводке нужные значения:
@god=TIMESTR("%Y",RTIME(TIME(),"YR"))
@den=TIMESTR("%d",RTIME(TIME(),"DAY")).
А при подстановке в функцию MKTIME(@god,@mon,@den, 7,1,1,1) выдается ошибка.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
####
Тогда высылайте Ваш проект и шаблон документа на адрес техподдержки.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вы прислали от проекта только файл CTM, а где сама директория проекта?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
И еще - укажите, пожалуйста, в каком элементе шаблона возникает ошибка, а то их там очень много?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Действительно - баг. Обойти к сожалению никак не получается. Внес в нашу базу для исправления.
 
Posted by Погодаева Г. (Участник № / Member № 192) on :
 
А с чем мне работать? В 15 версии тоже такая же ошибка. Что Вы посоветуете?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В этом месте отчета должна печататься произвольные дата и время, или текущие на момент формирования документа?
 
Posted by Погодаева Г. (Участник № / Member № 192) on :
 
Я еще не знаю как будут печататься 3 рапорта или после каждой смены в 18 и 6 час., или раз в сутки в 6 час.:
- за 1 смену часовые значения с 6 час. до 18 час.;
- за 2 смену часовые значения с 19 час. до 6 час.;
- за сутки суточные и месячные значения.
Сейчас без сервера документирования печать идет раз в сутки.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
А почему бы Вам тогда просто форматированное текущее время не выводить, зачем так сложно его получать из констант? Ведь эти константы в итоге Вы все равно из текущего времени и берете.
 
Posted by Погодаева Г. (Участник № / Member № 192) on :
 
Я не поняла, что вы мне предлагаете, поясните на примере, пожалуйста.
Мне нужно "вытащить" из архива ,вычислить и записать в колонку 7 таблицы среднее значение параметра на интервале времени с 6 до 7 часов (например).И я считала, что только этими функциями я найду, что мне надо, а рапорт формируется перед печатью, т.е. в 18 часов, поэтому я должна указать конкретное время. Мне, конечно, достаточно было бы работать с часами, минутами, сек., но в функции MKTIME()можно отбросить только последние аргументы. Или я что-то не понимаю?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Ошибка заключается в том, что TIMESTR() возвращает строковый тип, а MKTIME нужен в качестве аргумента числовой тип.
Пока выход один - написать свою собственную пользовательскую функцию перевода дня, месяца и года в числовой формат по результату TIMESTR() через IF(), например, я переделал Ваши функции вот так:

1) @den:
var i;
var d;

d=TIMESTR( "%d", TIME( ( RTIME( TIME(), "DAY" )) ) );
i=d*1;
return i;

2) @mes:
var i;
var d;

d=TIMESTR( "%m", TIME( RTIME( TIME(), "MON" ) ) );
i=d*1;
return i;

3) @god:
var i;
var d;

d=TIMESTR( "%Y", TIME( RTIME( TIME(), "YR" ) ) );
i=d*1;
return i;

И все заработало.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2