Имя: Пароль:
1C
1С v8
Как создать процедуру на клиенте?
0 СэдКС
 
18.05.12
10:06
Прошу помощи в таком вопросе: Есть форма, которая обновляется только на сервере. (при закрытии/открытии формы в программе граф-кое оформление данных в ней обновляется, а при нажатии на кнопочку Обновить - не обновляется). Нужно добавить обновление и на клиенте, как я понимаю. В модуле БизнесПроцессыИЗадачиСервер есть процедура, код которой я привела ниже. Как подкорректировать эту процедуру для клиента?

Процедура УстановитьОформлениеЗадач(Знач УсловноеОформление) Экспорт
// установка оформления для просроченных задач
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();

ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СрокИсполнения");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ЭлементОтбораДанных.Использование = Истина;

ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СрокИсполнения");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ЭлементОтбораДанных.ПравоеЗначение = ТекущаяДата();
ЭлементОтбораДанных.Использование = Истина;

ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Выполнена");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораДанных.ПравоеЗначение = Ложь;
ЭлементОтбораДанных.Использование = Истина;

ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor");
ЭлементЦветаОформления.Значение =  Метаданные.ЭлементыСтиля.ПросроченнаяЗадача.Значение;
ЭлементЦветаОформления.Использование = Истина;

// установка оформления для выполненных задач
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();

ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Выполнена");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораДанных.ПравоеЗначение = Истина;
ЭлементОтбораДанных.Использование = Истина;

ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor");
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ВыполненнаяЗадача.Значение;
ЭлементЦветаОформления.Использование = Истина;

// установка оформления для задач, не принятых к исполнению
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();

ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПринятаКИсполнению");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораДанных.ПравоеЗначение = Ложь;
ЭлементОтбораДанных.Использование = Истина;

ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Font");
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.НеПринятыеКИсполнениюЗадачи.Значение;
ЭлементЦветаОформления.Использование = Истина;

КонецПроцедуры
1 СэдКС
 
21.05.12
12:10
У меня так и не получилось. :(
2 Wobland
 
21.05.12
12:11
>Есть форма, которая обновляется только на сервере
как ты научил сервер видеть форму?
3 СэдКС
 
21.05.12
13:14
Я его не учила, он умел это делать сам.

Приведенный код уже был в конфигурации. Условие было таким, что если срок исполнения меньше КонецДня(ТекущейДаты), то цвет текста становился красным. Но мне нужно было, чтобы только когда срок истекал, то цвет менялся. Я просто убрала слово КонецДня. В итоге надо сделать процедуру обновления на клиенте...
4 СэдКС
 
24.05.12
11:53
Пробовала через условное оформление формы добавить условие отбора, но тогда вообще не обновляется ни при обновлении формы, ни при ее закрытии.
5 СэдКС
 
30.05.12
06:34
(4) причем тут отбор, не помню... наверно я пробовала вё подряд. еще пробовала так :
&НаКлиенте
Процедура Обновить(Команда)
Список.ОбновитьОтображениеДанных();
КонецПроцедуры

либо

&НаКлиенте
Процедура НажатиеКнопки(Элемент)
Оповестить("ОбновитьСписок");
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ОбновитьСписок" Тогда
Элементы.Список.Обновить();
КонецЕсли;
КонецПроцедуры

А если при обновлении каждый раз вызывать процедуру с сервера? или нагрузка?
6 СэдКС
 
30.05.12
08:46
нужно было добавить всего 2 процедуры:
&НаКлиенте
Процедура Обновить(Команда)
   
   ОбновитьСписокЗадач();
   
КонецПроцедуры

&НаСервере
Процедура ОбновитьСписокЗадач()
   
   БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление);

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

Лена опять молодец
2 + 2 = 3.9999999999999999999999999999999...