Имя: Пароль:
1C
1С v8
УФ, изменение видимости по условию без вызова сервера
0 Humandra
 
22.02.12
13:08
Добрый день!
Что-то не догоняю с изменением видимости поля формы по условию.
Предположим, у меня есть в справочнике одно поле - в типовых это как "Головной контрагент".
Я хочу на форму поместить еще и флаг "Входит в холдинг", опять таки как в типовых. Первоначально флаг проставляется в зависимости от заполненности самого поля, при изменении флага поле "Головной контрагент" разблокируется и можно ввести значение.
А при сбросе флага - поле сбрасывается.

Не могу понять как это сделать, чтобы метод не лез на сервер.

Пробовала так:

&НаКлиенте
Процедура ИзменитьВидимостьГоловнойКомпании()
   Элементы.ГоловнаяКомпания.Видимость = ВходитВХолдинг;
   Объект.ГоловнаяКомпания = Неопределено;
КонецПроцедуры

Лезет на сервер. Я так понимаю, потому что изменяется реквизит формы, а не элемент формы.

А так:
&НаКлиенте
Процедура ИзменитьВидимостьГоловнойКомпании()
   Элементы.ГоловнаяКомпания.Видимость = ВходитВХолдинг;
   Элементы.ГоловнаяКомпания.Значение = Неопределено;
КонецПроцедуры

не работает по причине отсутствия свойства "Значение"

Смотрела как это сделано в типовой бухгалтерии 3.x бета - там вообще баг (ну или нелогичная особенность), так как при сбросе флага заполненное поле Головной контрагент - не сбрасывается вообще, и после сбрасывания флага, сохранения и выхода - флаг опять проставлен, так как реквизит "Головная компания" не сбросился, а флаг проставляется по нему.

Возможно ли вообще изменить элемент формы, не меняя реквизит на сервере? Вплоть до сохранения карточки?
1 ilpar
 
22.02.12
13:14
потому что книги надо читать
2 Humandra
 
22.02.12
13:15
(1) Уже третью читаю, но времени мало, видимо что-то упустила :) Но форум же как раз за тем, чтобы подсказать, где я не права, разве нет? :)
3 ilpar
 
22.02.12
13:15
а нет, извиняюсь
4 ДенисЧ
 
22.02.12
13:16
ПолеФормы (FormField)
Видимость (Visible)
Использование:

Чтение и запись.
Описание:

Тип: Булево. Определяет видимость поля.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент.
Изменение свойства на клиенте может потребовать обращения к серверу.

Примечание:

Ложь - поле не отображается.
5 ilpar
 
22.02.12
13:16
вообще да, повторюсь... теорию надо читать =)
6 Asmody
 
22.02.12
13:16
(0) через условное оформление можно сделать
7 Asmody
 
22.02.12
13:18
[А при сбросе флага - поле сбрасывается] нужно обрабатывать при записи
8 Humandra
 
22.02.12
13:18
(4) Ну, я тоже с названием темы немного не права (может кто подкорректирует на "Как сбросить поле на клиенте без вызова сервера"?), но все же вопрос был не в том :)
У меня видимость нормально изменяется, но при сбросе по флагу значения - лезет на сервер
9 Humandra
 
22.02.12
13:19
(7) Тоже тема, в общем-то... верно.
10 Humandra
 
22.02.12
13:20
А по другому никак? Если захочется, чтобы если пользователь повторно нажал "Входит в холдинг - Истина", то старое значение Головной компании уже было сброшено?
11 Humandra
 
22.02.12
13:22
Понятное дело, что в таком простом примере несущественно с вызовом сервера, но такой механизм предполагается делать и там, где существенно...
12 Asmody
 
22.02.12
13:26
а почему [Объект.ГоловнаяКомпания = Неопределено]? тебе же пустая ссылка нужна. а её получение вызывает сервер. теоритически, её можно "закешировать" на клиенте в реквизите, тогда обращения не будет наверное
13 Humandra
 
22.02.12
13:34
(12) Попробовала закешировать пустую ссылку - не помогло. Клиент похоже лезет к Объект.ГоловнаяКомпания на сервер...
Попробовала даже с обработчиком по нессылочным реквизитам:

При изменении меняю:
Объект.Наименование = "блаблабла";

Все равно лезет на сервер. В принципе, логично вроде - реквизиты формы же на сервере обитают?
14 Asmody
 
22.02.12
13:43
в книге написано, что изменение видимости требует обращения к серверу, поскольку при этом пересчитывается расположение элементов. рекомендуют вместо видимости управлять доступностью
15 Humandra
 
22.02.12
13:50
(14)А! Вот оно в чем дело. Вот почему в типовой сделали подмену групп страниц, а я то думала - зачем так сложно.
А в какой книге писали, в документации?
16 Asmody
 
22.02.12
14:05
(15) «Разработка управляемого интерфейса»
17 Humandra
 
22.02.12
14:10
(16) А, я как раз до нее еще не дошла :) Радченко обе книги прочитала, документацию к коробке, Габеца нового и половину Хрусталевой про СКД, а до интерфейса не дошли руки :)
Спасибо, помогло!
Так что мои умозаключения о том, что обращение к реквизитам формы могут вызывать сервер признаны глубоко ошибочными - ибо с изменением доступности все заработало :)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.