Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Динамический список + ТекущаяДата()
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
DartRomanius
Коллеги вопрос.

Как (и возможно ли?), не извращаясь с Обработкой Ожидания, засунуть текущую дату в произвольный запрос у динамического списка.

Спасибо за ответы заранее.
logist
Не претендую на истину и точность кода, но можно попробовать так:
В запросе использовать параметр &ТекДата, при открытии списка добавить процедуру
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
      Список.Параметры.Вставить("ТекДата");
      Список.Параметры.УстановитьЗначениеПараметра("ТекДата",  ТекущаяДата());
КонецПроцедуры
pablo
Текущая дата должна изменяться в процессе отображения формы?
DartRomanius
Цитата(logist @ 19.07.11, 10:29) необходимо зарегистрироваться для просмотра ссылки
Не претендую на истину и точность кода, но можно попробовать так:
В запросе использовать параметр &ТекДата, при открытии списка добавить процедуру
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
      Список.Параметры.Вставить("ТекДата");
      Список.Параметры.УстановитьЗначениеПараметра("ТекДата",  ТекущаяДата());
КонецПроцедуры


Тут как раз понятно.

Задача в том, что требуется проводить сравнение с текущей датой при каждом обновлении динамического списка.
Грубо есть параметр получаемый из запроса, в запросе же он сравнивается с текущей датой, и вычисляемый параметр в зависимости от результатов сравнения.
К этому же вопросу стоит отнести и условное оформление в зависимости от текущей даты.

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

Цитата(pablo @ 19.07.11, 10:54) необходимо зарегистрироваться для просмотра ссылки
Текущая дата должна изменяться в процессе отображения формы?


Да. При каждом обновлении динамического списка. В моем случае раз в 30 секунд, хотя могу конечно увеличить и до минуты, что-бы снизить нагрузку.

ЗЫ: Что интересно в СКД подобный метод есть.
pablo
То есть, если есть доки с временем А,Б,С и А<ТекущаяДата()<Б<С, отображается только А. Как только ТекущаяДата()>Б (с задержкой до минуты), то должен отобразиться и Б?
DartRomanius
Цитата(pablo @ 19.07.11, 11:29) необходимо зарегистрироваться для просмотра ссылки
То есть, если есть доки с временем А,Б,С и А<ТекущаяДата()<Б<С, отображается только А. Как только ТекущаяДата()>Б (с задержкой до минуты), то должен отобразиться и Б?


Ну вроде того. Хотя у меня не отбор.
pablo
Цитата
Хотя у меня не отбор.
. Здесь важно, существуют ли доки с временем Б и С на момент открытия формы.
Если существуют, то другого решения, кроме Вашего, я не вижу. Если же они создаются во время отображения формы (пусть даже и не в этом экземпляре клиента), то есть куда покопаться.
DartRomanius
Цитата(pablo @ 19.07.11, 12:00) необходимо зарегистрироваться для просмотра ссылки
. Здесь важно, существуют ли доки с временем Б и С на момент открытия формы.
Если существуют, то другого решения, кроме Вашего, я не вижу. Если же они создаются во время отображения формы (пусть даже и не в этом экземпляре клиента), то есть куда покопаться.


А с этого момента поподробнее можно?
pablo
Если док создается в этом же экземпляре клиента, то тут все просто:
ЭтаФорма.ОтобразитьИзменениеДанных(СсылкаНаДок,ВидИзмененияДанных.Добавление);

Если же в другом - то ... готового решения нет, в любом случае получаются дополнительные серверные вызовы. Я бы попробовал сделать РегламентноеЗадание и функцию ПоместитьВоВременноеХранилище(), которая "Также позволяет поместить данные из фонового задания в родительский сеанс."
DartRomanius
Что-то мне подсказывает, что проще будет написать обработчик ожидания, который скажем раз в минуту будет обновлять параметр запроса (типа дата) у динамического списка.

Грубо + 1 вызов сервера в минуту например.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.