Имя: Пароль:
1C
1С v8
УФ Раскрасить даты в календаре
,
0 MxDn
 
01.10.14
14:53
Собственно, раскрасить-то проблемы не возникает, а проблема возникает в получении нужных дат для выделения их в календаре. Как говорит СП для события ПриВыводеПериода в поле календаря: "В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере." А нужные даты хранятся на сервере в регистре. Вот, например, код (не мой, найден в интернетах, но суть та же):
// Процедура-обработчик события При выводе периода
// реквизита формы Календарь
&НаКлиенте
Процедура КалендарьПриВыводеПериода(Элемент, ОформлениеПериода)
Попытка
  МассивДат = ПолучитьМассивРегламентированныхДат(ФинансовыйГод);
  Для Каждого ДатаПериода Из ОформлениеПериода.Даты Цикл
   Если МассивДат.Найти(ДатаПериода.Дата) <> Неопределено Тогда
    ДатаПериода.ЦветФона = webЦвета.БледноЗеленый;
   КонецЕсли;
   Если ДеньНедели(ДатаПериода.Дата)>=6 Тогда
    ДатаПериода.ЦветТекста = webЦвета.Красный;
   КонецЕсли;
  КонецЦикла;
Исключение
КонецПопытки;
Мне, чтобы получить этот МассивДат надо слазать на сервер, но нельзя. Я все же попробовал - результат бесконечный вызов КалендарьПриВыводеПериода при вызове ПолучитьМассивРегламентированныхДат (у меня эта процедура серверная, не знаю как у автора и проверял ли он вообще код). Хочется просто даты из выводимого периода сверять с регистром и красить по надобности, т.е. передать не ФинансовыйГод, а ОформлениеПериода.Даты и обратно нужные даты.
Конечно, как вариант, стянуть в список даты из регистра при открытии и в ПриВыводеПериода искать в списке, но список дат со временем растет и держать его весь в памяти не хорошо. Какие еще варианты?
1 Kamas
 
01.10.14
14:56
2 варианта
1 тянуть массив дат с сервера
2 каждый раз бегать на сервер для сравнения каждой даты
2 SUA
 
01.10.14
14:57
неконтекстный вызов сервера?
3 butterbean
 
01.10.14
14:58
сохрани весь календарь при открытии формы на клиенте
4 MxDn
 
01.10.14
15:14
(1) каждый раз нельзя бегать из этой процедуры на сервер
(2) контекстный
(3) что я пока и делаю... пока не вырос календарь
в принципе, раз по-другому никак, то в рамках моей задачи думаю можно ограничить список и брать только даты начиная с текущей
5 MxDn
 
01.10.14
15:39
(2) Спасибо, подтолкнул! Никто ж не запрещал директиву &НаСервереБезКонтекста. А я-то че-та воспринял как любой запрет обращения на сервер. Все работает.