Имя: Пароль:
1C
1С v8
как запретить редактировать строку, за исключением 1 колонки
0 temmy70
 
03.10.13
07:19
В табличной части есть булевый реквизит. И по нему блокирую для редактирования всю строку табличного поля Товары. Но нужно разрешить редактировать некоторые колонки. Проверяю доступ в событии ТоварыПередНачаломИзменения, но если мы зайдем в разрешенную ячейку, то можем редактировать всю строку, переходя в соседние колонки. Идеально было бы проверять в ТоварыПриАктивизацииЯчейки, но там нет Отказа. Подскажите, как быть-то. :)
1 chelentano
 
03.10.13
07:21
(0) кури "ПриПолученииДанных", там указывай доступность для ячейки
2 kosts
 
03.10.13
07:26
(0) Можно установить только просмотр для всех нужных колонок
3 chelentano
 
03.10.13
07:26
типа:
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
    ДанныеСтроки = ОформлениеСтроки.ДанныеСтроки;
    Если ДанныеСтроки.ТвояЯчейка = Истина Тогда
        ОформлениеСтроки.ЯчейкаДляПросмотра.ТолькоПросмотр = Истина;
    КонецЕсли;
КонецЦикла;
4 chelentano
 
03.10.13
07:27
(3) точнее: формлениеСтроки.Ячейки.ЯчейкаДляПросмотра.ТолькоПросмотр = Истина;
5 temmy70
 
03.10.13
07:28
(1) "ПриПолученииДанных" вызывается уже после того как я что-то поменял. Допустим зашел в разрешенную колонку 1, потом перешел в колонку 3, и только после смены значения в колонке 3 вызывается эта процедура.
6 temmy70
 
03.10.13
07:29
(4) мож туплю, щас попробую
7 chelentano
 
03.10.13
07:30
(5) ты не прав
8 chelentano
 
03.10.13
07:31
(5) если смущает ПриПолученииДанных, то делай то же самое ПриВыводеСтроки
9 kosts
 
03.10.13
07:32
ЭлементыФормы.РаботникиОрганизации.Колонки.Колонка1.ТолькоПросмотр = Истина;
10 chelentano
 
03.10.13
07:33
(9) ему нужен ТолькоПросмотр не для всей колонки, а для определённых строк
11 kosts
 
03.10.13
07:34
(10) Где это написано?
12 chelentano
 
03.10.13
07:35
(11) в (0) ёптыть
13 temmy70
 
03.10.13
07:35
(11) в (0) писал, что блокирую строку по признаку строки, но нужно разрешить только некоторые колонки
14 kosts
 
03.10.13
07:37
Ну ок, тогда
15 temmy70
 
03.10.13
07:49
(7) точно не прав.
заработало вот так:

    Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
        ДанныеСтроки = ОформлениеСтроки.ДанныеСтроки;
        Если ДанныеСтроки.ст_ТоварОплачен = Истина Тогда
            Для каждого Ячейка из ОформлениеСтроки.Ячейки Цикл
                Если не Ячейка.Имя = "д_Доставка" Тогда
                    ОформлениеСтроки.Ячейки[Ячейка.Имя].ТолькоПросмотр = Истина;
                КонецЕсли;    
            КонецЦикла;                
        КонецЕсли;        
    КонецЦикла


Большое спасибо!