Добрый день. В промежутках свободного времени решил разобраться: как соорудить "таймер" на управляемой форме.
Соорудил, через обработчик ожидания меняю заголовок надписи на форме. Получился код, представленный ниже.
Обратите внимание, что строка с записью времени в заголовок закомментирована. Дело в том, что если ее оставить, таймер работает, но отладкой я вижу, что идут вызовы к серверу каждую секунду. Если убрать - таймер (очевидно) не отображается, но и вызовы к серверу не идут.

Вопрос: позволяет ли платформа каким нибудь образом выводить подобную информацию на форму без обновления состояния формы на сервере (без изменения данных формы на сервере и последующего возврата на клиент), и если позволяет, то как? Как отображать на форме что то полностью независимо от сервера?

UPD: Обнаружил, что если менять заголовок самой формы, то обращений к серверу нет. Но это не гибкий способ, естественно, хочется таймер иметь в нужном месте формы, а не в заголовке.

Почему я задался этим вопросом... Представим что форма очень сложная, с большим количеством данных. Вся эта гора, по моим представлениям, каждую секунду кидается между сервером и клиентом, что создает нагрузку на сеть или систему (если сервер и клиент на одной машине). Хочется иметь возможность выполнять простой код непосредственно на клиенте и показывать результат пользователю, как это есть, на пример, в сайтах.

```1c
    &НаКлиенте
    Перем Время;

    &НаКлиенте
    Перем КлючВремени;

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    ОбновитьКлюч();
    ПодключитьОбработчикОжидания("ОбработкаТаймера",1);
    КонецПроцедуры

    &НаКлиенте
    Процедура ОбработкаТаймера()

    Если (Время - КлючВремени) > 10 Тогда
    ОбновитьКлюч();
    Иначе
    Время = Время + 1;
    КонецЕсли;

    //ЭтаФорма.Элементы.Время.Заголовок = Строка(Формат(Время,"ДЛФ=T"));

    КонецПроцедуры

    &НаКлиенте
    Процедура ОбновитьКлюч()
    КлючВремени = ТекущаяДата();
    Время = КлючВремени;
    КонецПроцедуры
```
---
создать реквизит формы Время тип Строка и вынести его на форму. Изменять в ОбработкаТаймера():
Время = ТекущаяДата();

Никаких доп переменных не нужно.
---
Ты Изменяешь данные формы. Вызов сервера будет.
попробуй сделать декорацию на форме и у нее менять заголовок
---
Именно это я и пытаюсь сделать, разве нет? У меня есть декорация "Время" - у нее я меняю заголовок. Все остальные переменные в коде - клиентские. Реквизитов у формы нет.
В том то и дело что при этом вызовы к серверу все равно идут.
---
создать реквизит формы Время тип Строка и вынести его на форму. Изменять в ОбработкаТаймера():
Время = ТекущаяДата();

Никаких доп переменных не нужно.
---
Спасибо, вы решили мою задачу. Вызовы к серверу в таком случае не идут.
Можете, пожалуйста, объяснить, почему изменение реквизита формы в этом случае не влечет за собой вызов сервера? Для меня этот факт является странным: я изначально даже не пытался делать через реквизит, потому что думал, что это прямое измнение данных на сервере, мол, сразу повлечет вызов.
---
изменение реквизит формы не требует серверного вызова. А вот изменение элементов формы влечет за собой перегенерацию формы (рендеринг для вычисления размеров элементов формы). Отсюда и серверный вызов, для пересчета отображения всех элементов.
---
И еще. Сама логика решения в (0) некорректная. Обработчик ожидания в данном случае будет вызываться не каждую секунду, а не чаще одного раза в секунду и только при простое. Т.е. если был серверный вызов, то обработчик ожидания не будет вызываться, пока управление не вернется. В таком случае вычисляемое время будет просто "каким-то" временем, но не текущим.
---
Да, спасибо, внимательнее прочитал синтакс-помощник:

"Внимание! Не следует использовать данный обработчик в качестве таймера. Фактический интервал срабатывания может отличаться от указанного."