Тема / Topic: ошибка преобразования типа в шаблоне
Погодаева Г.
Junior Member / Новичок
Участник № / Member № 192
отправлено / posted
Здравствуйте! Помогите , пожалуйста, разобраться где у меня ошибка (вычисление среднего значения параметра 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 ]
Сообщения / Posts 28 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Рекомендую два варианта: 1) Дополнить функции MKTIME() аргументами, которые Вы отбросили - секунды и мс в первом, минуты, секунды и мс во втором случае функции MKTIME(). 2) Вывести значения каждого аргумента обеих функций MKTIME() как отдельных значений в документе и посмотреть чему они равны - может действительно какой-то из них возвращает неверное значение.
Сообщения / Posts 17335 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Погодаева Г.
Junior Member / Новичок
Участник № / Member № 192
отправлено / posted
Попробовала оба варианта - ошибка такая же. Функция MKTIME() нормально работает с цифровыми аргументами - MKTIME(2004,8,26,6)-, но при подстановке в аргументы к.-л. функции выходит ошибка #MKTIME:ARG#. Я уже создала пользовательские функции для вычисления года,месяца и дня, т.к. прочитала что функция TIMESTR() не может использоваться в качестве аргумента и все равно ничего не помогло. Единственный вариант прошел, это MKTIME(@god,8,26,6). На любом другом месте наличие функции вызывает ошибку, например MKTIME(2004,@mes,26,6,1,1,1).
Сообщения / Posts 28 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Погодаева Г.
Junior Member / Новичок
Участник № / Member № 192
отправлено / posted
Функция @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) выдается ошибка.
Сообщения / Posts 28 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
И еще - укажите, пожалуйста, в каком элементе шаблона возникает ошибка, а то их там очень много?
Сообщения / Posts 17335 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Действительно - баг. Обойти к сожалению никак не получается. Внес в нашу базу для исправления.
Сообщения / Posts 17335 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Погодаева Г.
Junior Member / Новичок
Участник № / Member № 192
отправлено / posted
А с чем мне работать? В 15 версии тоже такая же ошибка. Что Вы посоветуете?
Сообщения / Posts 28 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В этом месте отчета должна печататься произвольные дата и время, или текущие на момент формирования документа?
Сообщения / Posts 17335 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Погодаева Г.
Junior Member / Новичок
Участник № / Member № 192
отправлено / posted
Я еще не знаю как будут печататься 3 рапорта или после каждой смены в 18 и 6 час., или раз в сутки в 6 час.: - за 1 смену часовые значения с 6 час. до 18 час.; - за 2 смену часовые значения с 19 час. до 6 час.; - за сутки суточные и месячные значения. Сейчас без сервера документирования печать идет раз в сутки.
Сообщения / Posts 28 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
А почему бы Вам тогда просто форматированное текущее время не выводить, зачем так сложно его получать из констант? Ведь эти константы в итоге Вы все равно из текущего времени и берете.
Сообщения / Posts 17335 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Погодаева Г.
Junior Member / Новичок
Участник № / Member № 192
отправлено / posted
Я не поняла, что вы мне предлагаете, поясните на примере, пожалуйста. Мне нужно "вытащить" из архива ,вычислить и записать в колонку 7 таблицы среднее значение параметра на интервале времени с 6 до 7 часов (например).И я считала, что только этими функциями я найду, что мне надо, а рапорт формируется перед печатью, т.е. в 18 часов, поэтому я должна указать конкретное время. Мне, конечно, достаточно было бы работать с часами, минутами, сек., но в функции MKTIME()можно отбросить только последние аргументы. Или я что-то не понимаю?
Сообщения / Posts 28 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Ошибка заключается в том, что TIMESTR() возвращает строковый тип, а MKTIME нужен в качестве аргумента числовой тип. Пока выход один - написать свою собственную пользовательскую функцию перевода дня, месяца и года в числовой формат по результату TIMESTR() через IF(), например, я переделал Ваши функции вот так: