время сервака разные

  • Автор темы yerke
  • Дата начала
Y

yerke

привет всем

направьте на путь истинный
есть база в серваке, пытаюсь получить время сервера с помощью:
Код:
'=
set ses=new notessession
set cdb=ses.currentdatabase
set doc=cdb.createdocument
ss=cstr(doc.created)
'=
'=
так вот получаю этот ss и записываю его в поле в документе и сохраняю
но значения поля (ss) и свойства документа Modified (это свойство показывает точное время изменения документа) не совпадают, разница в иногда 1 час, иногда 2 часа, или 15 минут ну по разному.
Почему doc.created врьет?
 
K

K-Fire

Гмм, т.е. сразу после создания документа смотрим это поле и дату модификации и они не совпадают больше чем на 15 минут?
 
Y

yerke

Этот код где выполняется? на сервере или на локале?
на серваке

Гмм, т.е. сразу после создания документа смотрим это поле и дату модификации и они не совпадают больше чем на 15 минут?
не тока на 15 иногда час или два

Если подробнее то Дело обстоит так
Это для тестирования
Когда студент начинает тестирования я запоминаю время сервака (Set BeginTime =New NotesDateTime(doc.Created)) и записываю его в документ тестирования в поле BeginTime
И после срабатывает таймер с интервалом одна секунда и тож получает время сервака на текущий момент (Set NowTime =New NotesDateTime(doc.Created)//тоже записывается в документ) и вычисляет разницу в секундах между (BeginTime и NowTime) и отведенным временем в сек.
То есть оставшиеся секунды
Left_Seconds=Seconds - Abs(NowTime.TimeDifference(BeginTime))
Ну если разница равен или меньше нуля то конечно тестирование заканчивается
////////
Так вот проблема в том что doc.Created возвращает не корректное время
Если студент сдавал тест между 10,00 и 11,00 утра
А в документе иногда указыватся 8,00 и 9,00 утра (BeginTime и NowTime)

p.s
см. рис.
1-время начало (по системе)


1'-время начало (программно//BeginTimе)
 

Вложения

  • 002.jpg
    002.jpg
    40,3 КБ · Просмотры: 529
H

hosm

Когда студент начинает тестирования я запоминаю время сервака (Set BeginTime =New NotesDateTime(doc.Created)) и записываю его в документ тестирования в поле BeginTime
И после срабатывает таймер с интервалом одна секунда и тож получает время сервака на текущий момент (Set NowTime =New NotesDateTime(doc.Created)//тоже записывается в документ) и вычисляет разницу в секундах между (BeginTime и NowTime) и отведенным временем в сек.
То есть оставшиеся секунды
Left_Seconds=Seconds - Abs(NowTime.TimeDifference(BeginTime))
Ну если разница равен или меньше нуля то конечно тестирование заканчивается
Это всё выполняется на сервере - в агенте, например? Может, всё-таки виновата разница во времени (час. поясе) на сервере и локальном компьютере? Или студенты время меняют? :rolleyes:))
Если документ сохраняется, что в поле $Revisions? (если оно присутствует)
 
Y

yerke

нет не агент
все дело происходит на форме
онпоустопен и на таймерхэндлере

разница во времени (час. поясе) на сервере и локальном компьютере не должно же влиять на (doc.Created)
так как док создался в базе которая лежит в серваке
оно же не должно иметь дело с локальными настройками времени в компе
 
A

Akupaka

кгм... как это не должно?! это время отображается относительно текущего для того, кто смотрит...

ты бы объяснил параллельно чего хочешь достичь, может твоя проблема (текущая) и не проблема вовсе...
 
H

hosm

Кстати, ты в 1м примере берешь время как строку - она сохраняет время в привязке к зоне лок. компа. Точнее, оно его вообще в строку сохранит без учета коррекции зоны. И при неправильной настройке дельту в часах ты получишь запросто, т.к. Created хранится как время и учитывает зону компа, на котором документ открыт.
тебе поможет @Now( flags ; serverNames )
Note The flags and serverNames parameters are new with Release 6.
Parameters
flags
Keyword or keyword list. Optional.
[SERVERTIME] gets the time-date from the server containing the database if serverNames is not specified or from serverNames ifserverNames is specified.
 
A

Akupaka

я хочу достать точное время сервака
это следствие, а причина? :rolleyes:
когда-то я разрабатывал систему тестирования, то там похожая задача была (определить время сервера) т.к. время начала тестирования было зафиксировано, и чтобы пользователь не мог перевести часы локально, проводилось сравнение с временем на сервере...
а тебе зачем это время?

зы: я использовал то, что тебе порекомендовала OKEN, только собачное @Now(...)
 
T

TIA

когда-то я разрабатывал систему тестирования, то там похожая задача была (определить время сервера) т.к. время начала тестирования было зафиксировано, и чтобы пользователь не мог перевести часы локально, проводилось сравнение с временем на сервере...

Нотес считывает системное время только в момент запуска. Т.е. для того, чтобы переведённое системное время оказывало влияние на doc.Created, Now и т.п., требуется перегрузить Нотес. Но тогда и тест прерывается. Я к тому, что для вычисления прошедшего кол-ва секунд вполне можно пользовать локальное время (Timer, Now и т.п.).
 
A

Akupaka

я для расчета прошедшего времени юзал NotesTimer :) (для ограничения времени теста)
а на серваке время сравнивал, чтобы "занятые" сотрудники вовремя тест проходили, а не как-нить потом... (требование заказчика)
 
T

TIA

Если подробнее то Дело обстоит так

На скриншоте отображены даты модификации какого документа, текущего или нового серверного? Если серверного - то почему такая разница между Added и Modified Initially?
 
A

Akupaka

судя по всему на скрине документ, который изменили через полмесяца :) но никак не только что созданный
 
Y

yerke

Вот-вот. Не сходится что-то. "Чюда" не случится, скорее обнаружится невнимательность.

1) Об скриншоте
Окошка свойств документа относится документу которое отображена снизу данной окошки
2) ПРОШУ ОБРАТИТЬ ОСОБОЕ ВНИМАНИЕ НА СВОЙСТВО «Created» В ОКОШКЕ И НА ПОЛЕ «Время начала». Почему времена указанные в этих полях слишком разные, а должно быть разница в 2-3 секунды (Почему объясню в 3 пункте). (А остальные свойства типа Modified не имеет значение так как документ через полмесяца может быть изменен, может студент подал на апелляцию)
3) 1. Студент выбирает дисциплину и нажимает на кнопку «Начать тестирование»
2. Алгоритм кнопки выполняет след.
- создает документ результата, отображенной в скриншоте и сохраняет его (свойство Created относится к данному доку)
- создает 20 или 30, взависимости от количества вопросов в тесте, респонсы выше указанному документу, в которых отображены ВОПРОС ТЕСТА И 5 ВАРИАНТОВ ОТВЕТА.
-после того как сформировались вопросы теста, студенту открывается первый вопрос (т.е. первый респонс), при открытии который запоминается «Время начала» (с помощью переменной doc типа NotesDocument // Set doc=cdb.CreateDocument: ss=cstr(doc.Created) // здесь ss это поле «Время начала», которого вы видите в скриншоте (оно записывается в главный док))
-ну потом срабатывает таймер каждую секунду, получая время сервака аналогичным образом и сверяя его с начальным временем

ТАК ВОПРОС
ПОЧЕМУ СВОЙСТВА Created И «Время начала» СЛИЧШОМ РАЗНЫЕ? (Разница в 2 часа)

Надеюсь объяснил доходчиво
 
T

TIA

ТАК ВОПРОС
ПОЧЕМУ СВОЙСТВА Created И «Время начала» СЛИЧШОМ РАЗНЫЕ? (Разница в 2 часа)

А св-во Created получено на том же рабочем месте, что и созданный документ? Если нет, то это скорее всего расхождение в часовых поясах. Строка получена в часовом поясе студента (7 часов), а св-во документа отображается в Вашем часовом поясе (9 часов). Так?
 
A

Akupaka

я тож думаю, что пояс :) и требуемую разницу в 2 сек там тоже видно ))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!