Имя: Пароль:
1C
1С v8
Регистр сведений, доступность элементов формы
0 neitrosha
 
26.03.13
12:53
Заранее извиняюсь, если слишком мутная формулировка - не знаю, как сформулировать точно.

Форма списка, открываю один из элементов. Редактирую его в форме записи, хочу сделать, чтобы при следующем его открытии была с помощью кода установлена доступность/недоступность одного из реквизитов формы.

Как достучаться до записи в регистре сведений, чтобы она знала, что изначально на доступности реквизита, например, "доступность = истина"?

Через "запись" пробиться пока не получается.
1 cw014
 
26.03.13
12:54
ПослеЗаписи, ПриОткрытии?
2 kosts
 
26.03.13
13:09
(0) Не понятно в чем собственно проблема

В событии ПриОткрытии делай

ЭлементыФормы.Сотрудник.Доступность = Не Сотрудник.ЯвляетсяСтудентомРаботающимВСтудотряде; //условие доступности
3 neitrosha
 
26.03.13
13:14
(2) Код на доступность появляется "при изменении", но там я меняю лишь с помощью "элементы. какой-то. доступность". Понятно, что до формы списка так не дойдет (проверял по отладке). А как достучаться до самой записи и там менять - не знаю.
4 kosts
 
26.03.13
13:17
(3) Тебе нужно, что бы в форме списка нельзя было поменять.
5 kosts
 
26.03.13
13:18
(4) ?
6 neitrosha
 
26.03.13
13:25
Ну вот я программно поменял доступность элемента на форме записи.
Соответственно хочу, чтобы форма списка об этом тоже знала.Чтобы в итоге я снова открыл этот элемент, а там уже была выключена доступность.

Обновить, обновить отображение данных - не катит, как понял.
7 kosts
 
26.03.13
13:29
(6) Не нужно форме списка знать, что там было с формой записи.

Форма записи сама должна определить что доступно, а что нет.
8 neitrosha
 
26.03.13
13:32
(7) А как тогда поступить?
В зависимости от ТипаЗаписиСпециалиста у меня меняются доступность элементов.
У меня есть такой костыль:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   Если НЕ Запись.ТипЗаписиСпециалиста.Пустая() Тогда
    ТипЗаписиСпециалистаПриИзменении(ЭтаФорма.Элементы.ТипЗаписиСпециалиста)
   КонецЕсли;
КонецПроцедуры

Но это костыль. А как сделать лучше - не могу придумать.
9 neitrosha
 
26.03.13
13:35
Должно же быть что-то более элегантное. А то каждый раз так писать код - заколебется. Особенно, если есть еще реквизиты, от значения которых зависит доступность других элементов.
10 kosts
 
26.03.13
13:42
(9) вот кусок типовой , модуль формы элементы подразделения


&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьЭлементов(Форма)
   
   Если Форма.Объект.ОбособленноеПодразделение Тогда
       Форма.Элементы.РегистрацияВНалоговомОргане.Доступность    = Истина;
       Форма.Элементы.РайонныйКоэффициентГруппа.Доступность    = Истина;
   Иначе
       Форма.Элементы.РегистрацияВНалоговомОргане.Доступность    = Ложь;
       Форма.Элементы.РайонныйКоэффициентГруппа.Доступность    = Ложь;
   КонецЕсли;
   
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   УстановитьДоступностьЭлементов(ЭтаФорма);

КонецПроцедуры
11 neitrosha
 
26.03.13
14:16
(10) Как понимаю, я просто выношу отдельные куски, связанные с доступностью, на сервер. Ну и если нужно, то к ним обращаюсь

Так?
12 kosts
 
26.03.13
14:25
(11) На клиенте тоже можно


&НаКлиенте
Процедура РасформированоПриИзменении(Элемент)
   
   УстановитьДоступностьЭлементов(ЭтаФорма);
   
   Если Не Объект.Расформировано Тогда
       Объект.ДатаРасформирования = '00010101';
   ИначеЕсли Объект.ДатаРасформирования = '00010101' Тогда
       Объект.ДатаРасформирования = КонецМесяца(ТекущаяДата()) + 1;
   КонецЕсли;    
   
КонецПроцедуры

Независимо от того, куда вы едете — это в гору и против ветра!