Выражаю безмерную благодарность автору публикации
Итак, задача тривиальная - сделать счетчик обратного отсчета времени от текущей до указанной даты вида "2д. 8ч. 43 мин."
Но в силу обстоятельств конфигурация, в которой осуществлялась доработка, не функциональна при переходе на платформу 8.3.8 и выше, где появилась возможность использовать обработчик ПриПолученииДанныхНаСервере.
Поэтому мы пошли дорогой проктолога другим путем.
Этап первый - получить разницу в днях, минутах и часах в отдельные поля запроса. Чтобы не превращать текст запроса в "простыню", я вынес отдельные фрагменты текста запроса в функции, и далее динамически собирал запрос.
1. Получим разницу в секундах
ВЫБОР
КОГДА РАЗНОСТЬДАТ(&ТекущаяДата, &КрайнийСрок, СЕКУНДА) > 0
ТОГДА РАЗНОСТЬДАТ(&ТекущаяДата, &КрайнийСрок, СЕКУНДА)
ИНАЧЕ 0
КОНЕЦ
Как вы, должно быть, знаете, получить целое число в запросе можно, используя метод "Выразить". Чтобы округлить вниз, отнимем 0.5. Но для того, чтобы не получить отрицательных значений, если разница отсутствует, добавим условие, что наше выражение больше 0.5.
Аналогично Вынесем фрагменты для часов и минут.
Далее приведем все числа к строкам. При этом, для часов и минут строка всегда будет длиной 2 символа, а для дней нужно рассчитывать в зависимости числа дней, чтобы не выводить ненужные лидирующие нули.
Если писать запрос "в лоб", текст получится очень и очень длинным, но благодаря повторному использованию кода, удалось и сократить время кодирования, и не потерять читаемость.
Финальный аккорд - повесить обработчик ожидания на установку параметра динамического списка &ТекущаяДата.
Если кому-то публикация будет полезна, буду рад. Ну а нет - прошу сильно не пинать :)