Имя: Пароль:
1C
1С v8
Сделать недоступной колонку в строке в таб части
,
0 lirt82
 
23.08.17
09:01
Конфа на управляемых, нужно сделать при выборе номенклатуры из таб части Товары, если код Вида Номенклатуры равен "0000001" тогда сделать недоступной колонку Ставка НДС, но у меня блокируется вся таб часть не получается заблокировать колонку в строке. Код ниже
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
    
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
        КодВидаНоменклатуры = ТоварыПриИзмененииНаСервере(ТекущаяСтрока.Номенклатура);
    Если КодВидаНоменклатуры = "0003" Тогда
        Элементы.ТоварыСтавкаНДС.Доступность = Ложь;
    КонецЕсли;

КонецПроцедуры

&НаСервереБезКонтекста
Функция ТоварыПриИзмененииНаСервере(Товар)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.ВидНоменклатуры.Код КАК Код
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Ссылка = &Товар";
    
    Запрос.УстановитьПараметр("Товар", Товар);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    ВыборкаДетальныеЗаписи.Следующий();
    
    Возврат СокрЛП(ВыборкаДетальныеЗаписи.Код);    
    
КонецФункции
1 lirt82
 
23.08.17
09:02
Если КодВидаНоменклатуры = "0000001" Тогда
2 FIXXXL
 
23.08.17
09:06
(0) УсловноеОформление
3 _Дайвер_
 
23.08.17
09:08
(2) +, либо ТекущаяСтрока
4 lirt82
 
23.08.17
09:18
(3) в ТекущейСтроке Объект сидит, а мне нужно получить доступ к управлению поля элемента строки таб части Товары
5 1dvd
 
23.08.17
09:19
(4) задай правильный вопрос - "в каком событии управлять доступностью колонок?"
6 Интересно интересно
 
23.08.17
09:22
И следующий вопрос будет "как разблокировать колонку для другой строки"...

Надо выставлять отказ при начале редактирования по данным текущей строки.
7 aleks_default
 
23.08.17
09:24
(6)Условное оформление должно избавить от этих вопросов
8 Интересно интересно
 
23.08.17
09:37
(7) Особенно измененное пользователем и противоречащее твоим программным настройка м.
9 Рэйв
 
23.08.17
09:58
//как то так

&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
    ТД=Элементы.Товары.ТекущиеДанные;
    ИмяКолонки=Элементы.Товары.ТекущийЭлемент.Имя;
    КодВидаНоменклатуры =ПолучитьКодСервер(ТД.Товар);

    Если ИмяКолонки="СтавкаНДС" И КодВидаНоменклатуры = "0003" Тогда
        Отказ=Истина;
    КонецЕсли;    
        
КонецПроцедуры

&НаСервере
Функция ПолучитьКодСервер(Товар)
   Возврат СокрЛП(Товар.ВидНоменклатуры.Код)     ;
КонецФункции
10 Вафель
 
23.08.17
10:21
(9) не корректно, ибо вообще строку на сможешь редактировать, а не только ставку НДС
11 Вафель
 
23.08.17
10:22
Правильно - добавить вычисляемое поле в ТЧ СтавкаНДСНедоступна - заполнять его и условное оформление.
Примерно как субконто блокируются
12 Рэйв
 
23.08.17
10:25
(10)Если ИмяКолонки="СтавкаНДС" ни о чем не говорит?
13 Вафель
 
23.08.17
10:26
(12) Это только, если ты НАЧИНАЕШь редактировать с колонки СтавкаНДС, но так обычно не бывает
14 Рэйв
 
23.08.17
10:27
(13)Если ты начнешь в любой другой колонке - условие не сработает. Зря споришь это мой рабочий код в реальной конфе. сто лет уж работает
15 Рэйв
 
23.08.17
10:28
ну автопереход при редактировании наверное надо отключить.у меня отключен. Как с ним будет надо проверять
16 Вафель
 
23.08.17
10:36
(14) Гордиться г-но кодом - это конечно пример настоящего 1сника
17 Рэйв
 
23.08.17
10:41
(16)рабочий код.Чем недоволен?:-)