Доброго времени суток, господа-форумчане.
Столкнулся с такой вот интересной задачей:
есть Документооборот 8 КОРП, редакция 1.3
в документообороте есть Задачи/ЗадачиИсполнителя
В списке моих задач ("ФормаЗадачиМне"), если пользователь тыкает по задаче - подсвечивать мертвенько-зеленым цветом всякое разное в окошке справа "ГруппаНаименованиеИТипПриложения" (по сути вложение задачи, документ)
работа у всех идет в тонком клиенте.
подсветка идет в момент когда пользователь ткнул мышей в задачу.
Далее если у документа-вложения реквизит "Бюджет" = Ложь, то подсвечиваем. (т.е. без обращения к серверу - никак, ибо по текущей заявке смотрим что за док во вложении и дальше стучимся к нему)
А теперь самое весёлое... 1) при вызове сервера автоматом активизируется ЗадачиМнеПриАктивизацииСтроки()
именно эта процедура обрабатывает "тык" мышью,
в обчем рекурсия.
На клиенте не вариант ибо все сидят в тонком. А через сервер идет вызов рекурсии...
Сижу вот ломаю мозг как это побеждать.
&НаКлиенте
Процедура ЗадачиМнеПриАктивизацииСтроки(Элемент)
//********** 14.04.2015*******************************************************************
//ИтогПоиска = ПоискПоСтруктуреНаСервере(Элементы.ЗадачиМне.ТекущиеДанные.БизнесПроцесс);
//
//Если Не ЗначениеЗаполнено(ИтогПоиска) Тогда
// зеленый = Новый Цвет(152, 251, 152);
// Элементы.ГруппаНаименованиеИТипПриложения.ПодчиненныеЭлементы.ДеревоПриложенийНаименование.ЦветФона = зеленый;
//Иначе
// Элементы.ГруппаНаименованиеИТипПриложения.ПодчиненныеЭлементы.ДеревоПриложенийНаименование.ЦветФона = Новый Цвет(255, 255, 255);
//КонецЕсли;
//********** 14.04.2015*******************************************************************
//=======================================================
&НаСервере
Функция ПоискПоСтруктуреНаСервере(БПСсылка)
Предмет = БПСсылка.Ссылка.Предметы[0].Предмет;
Если ЗначениеЗаполнено(Предмет) Тогда
ВидДок = Предмет.ВидДокумента;
Иначе
ВидДок = Неопределено;
КонецЕсли;
ЗаявкаНаОплату = Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("Заявка на оплату");
Если ЗначениеЗаполнено(ВидДок) Тогда
Если ВидДок = ЗаявкаНаОплату Тогда
БюджетЗаявкаНаОплату = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Бюджет (Заявка на оплату)");
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Свойство", БюджетЗаявкаНаОплату);
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший