Имя: Пароль:
1C
 
ТолькоПросмотр
0 lav151
 
21.05.21
14:13
Всем добрый день

База БПС, своя разработка.
Нужно сделать так, чтобы ФормаДокумента была ТолькоПросмотр=Истина, при условии если стоит в документе галочка(Объект.ОтправкаВЗаявку) и документ уже проведен, только сама эта галочка должна быть редактируемой.

У меня получается только всю форму сделать только просматриваемой, а сделать редактируемую галочку не выходит. Что не так делаю? Подскажите пожалуйста

Пару примеров кода:
1)
Если Объект.Ссылка.Проведен И Объект.ОтправкаВЗаявку = Истина Тогда
  ТолькоПросмотр = Истина;
  ЭтаФорма.ЭтотОбъект.Элементы.ОтправкаВЗаявку.ТолькоПросмотр=Ложь;
КонецЕсли;

2)
    
Если Объект.ОтправкаВЗаявку=Истина и Объект.Проведен=Истина Тогда        
Для Каждого Элемент Из ЭтаФорма.ЭтотОбъект.Элементы цикл
  Имя_ = ВРЕГ(Элемент.Имя);
   Если Имя_  =  "ОТПРАВКАВЗАЯВКУ"
   ИЛИ Имя_ ="ОТПРАВКАВЗАЯВКУКОНТЕКСТНОЕМЕНЮ"
   ИЛИ Имя_= "ОТПРАВКАВЗАЯВКУРАСШИРЕННАЯПОДСКАЗКА"
   Тогда
     Продолжить;
   КонецЕсли;

   Если ТипЗнч(Элемент)=ТИП("ДекорацияФормы")
   Или ТипЗнч(Элемент)=ТИП("КнопкаФормы")
   Или ТипЗнч(Элемент)=ТИП("ДополнениеЭлементаФормы") Тогда
     Продолжить;
   КонецЕсли;

  Элемент.ТолькоПросмотр = ИСТИНА;

КонецЦикла;
КонецЕсли;
1 Kassern
 
21.05.21
14:16
(0) Можешь попробовать не на всю форму пихать только просмотр, а на определенные группировки формы. Эту галочку запихнуть в отдельную группировку и на нее ограничение не ставить. При изменении галочки пересчитывать доступность групп.
2 youalex
 
21.05.21
14:17
(0)А зачем тебе менять данные объекта (Объект.ОтправкаВЗаявку) , если ты все равно записать не сможешь, т.к. форма Только просмотр?
3 RomanYS
 
21.05.21
14:17
(0) И где вопрос?
Второй вариант не работает? Может элемент ОтправкаВЗаявку в группe входит, которую заблокировал
4 ДенисЧ
 
21.05.21
14:18
Если вся форма толькопросмотр, то и все реквизиты её тоже.
Поэтому закрывай всё, кроме галки
5 lav151
 
21.05.21
14:19
(1) Хорошо, попробую
6 RomanYS
 
21.05.21
14:21
(4) так он это и сделал в 2) Нужно кроме галки и групп в которые эта галка входит
7 lav151
 
21.05.21
14:23
(3) Да, второй вариант не работает( Я посмотрю насчет группы
8 lav151
 
21.05.21
15:04
(1) (6) Спасибо. Все сработало)

Если Объект.ОтправкаВЗаявку = Истина Тогда
        Этаформа.Элементы.Группа1.ТолькоПросмотр=Истина;
.............
КонецЕсли;

И так по всем группам сделал, кроме той группы где эта галочка стоит.
9 Kassern
 
21.05.21
15:06
(8) можно это указать для верхней группы, все вложенные так же отработают
10 Веселый собака
 
21.05.21
15:39
(8) можно было по метаданным объекта тупо пробежаться..
11 Kassern
 
21.05.21
15:41
(10) это не модно и не молодежно
12 Веселый собака
 
21.05.21
15:48
(11) тогда надо просить 1С выкинуть и ЗаполнитьЗначенияСвойств..
13 Kassern
 
21.05.21
15:50
(12) зачем использовать цикл и гонять по всем метаданным, когда можно просто у 1 главной группы поставить только просмотр истина?
14 Kassern
 
21.05.21
15:53
(12) как раз таки ЗаполнитьЗначенияСвойств норм выбор, не нужно бегать в цикле и заполнять все значения.
15 Веселый собака
 
21.05.21
15:58
(13) просто это универсально.
По циклу ж не руками бегают
16 Kassern
 
21.05.21
16:02
(15) но вы заставляете 1ску бегать, а тут платформа сама все делает. В примере с "ЗаполнитьЗначенияСвойств " вы тоже ручками не бегаете, платформа сама значения расставит. Группа даже универсальней, все что в нее добавится будет отрабатывать по логике верхней группы, а все что вне ее будет доступно для редактирования. В случае пробежки по метаданным, вам придется каждый раз условие дописывать, когда еще нужно будет исключить галочки из ограничений.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший