Имя: Пароль:
1C
1С v8
Изменение и запрет изменения в табличном поле.
0 ЗлаяЗая
 
27.01.23
11:31
Помогите, пожалуйста. Никак с событиями не разберусь.
Есть таблица в обработке.
Колонки: Номенклатура, Заказчик, Количество, Признак
Нужно сделать так: если Признак=1, то ничего в этой строке править нельзя.
Если Признак=2, то только ячейку "Количество".
Всякие события попробовала, никак не получается.
1 ЗлаяЗая
 
27.01.23
11:32
Если Признак=3, то все можно править.
2 eddy_n
 
27.01.23
11:36
Есть обработчик события у этого Элемента управления типа Таблица. Называется ПередНачаломИзменения. В нем и работай.
3 Trimax
 
27.01.23
11:40
(2) Нафига? Есть оператор Доступность. Им и оперировать. Типа Если Признак=1 тогда ТекущаяСтрока.Доступность=Ложь.... Или через Элементы...
4 ЗлаяЗая
 
27.01.23
11:43
(2) делала. там написала
    Если Элемент.ТекущиеДанные.Признак=2 Тогда
        Отказ=Истина;
    КонецЕсли;    
Тогда вся строка блокируется от изменений. А мне нужно 1 ячейку оставить.
5 Мультук
 
гуру
27.01.23
11:43
(0) Я так понимаю, сначала нужно угадать обычные формы у вас или управляемые.

ИМХО, в управляемых формах пишем два условных оформления и всё.
6 ЗлаяЗая
 
27.01.23
11:44
(5) обычные
7 Trimax
 
27.01.23
11:46
(4)  Если Элемент.ТекущиеДанные.Признак=2 Тогда
       ТекущиеДанные.Доступность=Ложь;
Элемент.ТекущиеДанные.Количество.Доступность=Истина;
    КонецЕсли;
8 Мультук
 
гуру
27.01.23
11:53
(0)

Событие таб.части "ПриАктивизацииСтроки"


Процедура ТабличнаяЧасть1ПриАктивизацииСтроки(Элемент)
    тек = Элемент.ТекущиеДанные;
    Если тек.Признак = 1 Тогда //Ничего
        ЭлементыФормы.ТабличнаяЧасть1.Колонки.Реквизит1.ТолькоПросмотр = Истина;
        ЭлементыФормы.ТабличнаяЧасть1.Колонки.Количество.ТолькоПросмотр = Истина;
    ИначеЕсли тек.Признак = 2 Тогда //только количество
        ЭлементыФормы.ТабличнаяЧасть1.Колонки.Реквизит1.ТолькоПросмотр = Истина;
        ЭлементыФормы.ТабличнаяЧасть1.Колонки.Количество.ТолькоПросмотр = Ложь;
    Иначе    //все
        ЭлементыФормы.ТабличнаяЧасть1.Колонки.Реквизит1.ТолькоПросмотр = Ложь;
        ЭлементыФормы.ТабличнаяЧасть1.Колонки.Количество.ТолькоПросмотр = Ложь;
    КонецЕсли;    
КонецПроцедуры
9 eddy_n
 
27.01.23
11:54
(7) Всё правильно. Только лишний раз дёргать ТекущиеДанные - признак плохого тона. Вынеси вначале, примерно так:

    ТекДанные = Элементы.Товары.ТекущиеДанные;

И работай дальше в процедуре только с ТекДанные.
10 ЗлаяЗая
 
27.01.23
13:11
Спасибо. Получилось как в (8).
ПриАктивизацииКолонки и ПриАктивизацииЯчейки ковыряла, а это событие -нет :)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший