Имя: Пароль:
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ску бегать, а тут платформа сама все делает. В примере с "ЗаполнитьЗначенияСвойств " вы тоже ручками не бегаете, платформа сама значения расставит. Группа даже универсальней, все что в нее добавится будет отрабатывать по логике верхней группы, а все что вне ее будет доступно для редактирования. В случае пробежки по метаданным, вам придется каждый раз условие дописывать, когда еще нужно будет исключить галочки из ограничений.