Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
26 мая 2024, 12:30

Закрыть доступность элементов ТЧ

Автор AlexKag, 17 окт 2012, 19:07

0 Пользователей и 1 гость просматривают эту тему.

AlexKag

Здравствуйте. Такой вопрос, подскажите пожалуйста, как сделать, чтобы допустим если я поставил галочку на поле флажка в поле ТЧ, то в соответствующей строке ТЧ, остальные элементы приняли доступность = Ложь ?? То есть выбрал один а другие закрылись.. и при чем только для одной какой-либо строки... Вот ниже скрин примера

MuI_I_Ika

Можно попробовать сделать следующим образом.

При попытке изменить недоступные реквизиты просто добавляем в обработчик Отказ = истина
Перед этим конечно проверяем заполненность значений в других полях.

Dethmontt

Процедура ТЧПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

Если ДанныеСтроки.Рек1 Тогда
ДанныеСтроки.Рек2 = Ложь;
ДанныеСтроки.Рек3 = Ложь;
КонецЕсли;
ОформлениеСтроки.Ячейки.Рек3.ТолькоПросмотр = ДанныеСтроки.Рек1;
ОформлениеСтроки.Ячейки.Рек2.ТолькоПросмотр = ДанныеСтроки.Рек1;

КонецПроцедуры
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

AlexKag

А скажите где эту процедуру ТЧПриВыводеСтроки можно вызвать? в каком объекте её писать?

Dethmontt

Для Управляемых форм такой процедуры не бывает...
Для УФ только так:
&НаКлиенте
Процедура ТЧРек1ПриИзменении(Элемент)
   
    ПриИзмененииФлажков();
   
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииФлажков()

    ТекДанные = Элементы.ТЧ.ТекущиеДанные;
    Если ТекДанные.Рек1 Тогда
        ТекДанные.Рек2 = Ложь;
    КонецЕсли; 

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

&НаКлиенте
Процедура ТЧРек2ПриИзменении(Элемент)
   
    ПриИзмененииФлажков();
   
КонецПроцедуры
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

AlexKag

Все работает, только когда я начинаю с конца отмечать, то первые также можно отмечать, как запретить чтобы со всех сторон
сделал так

&НаКлиенте
Процедура ПриИзмененииФлажков()

    ДанныеСтроки = Элементы.Состав.ТекущиеДанные;
Если ДанныеСтроки.ИмеетВсеТипыОценок Тогда
ДанныеСтроки.Отличник = Ложь;
ДанныеСтроки.Ударник = Ложь;
КонецЕсли;

   Если ДанныеСтроки.Ударник Тогда
ДанныеСтроки.Отличник = Ложь;
ДанныеСтроки.ИмеетВсеТипыОценок = Ложь;
КонецЕсли;

    Если ДанныеСтроки.Отличник Тогда
        ДанныеСтроки.Ударник = Ложь;
ДанныеСтроки.ИмеетВсеТипыОценок = Ложь;
КонецЕсли;



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

Добавлено: 18 окт 2012, 00:36


у меня всего три поля флажка, и схема такая
1 0 0 - то есть первый выбрал остальные нельзя
1 1 0 - второй выбрал можно и первый
1 1 1 - третий выбрал и все можно

Dethmontt

Ну получиться более сложное условие и общая процедура ПриИзмененииФлажков вряд ли подойдет
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

AlexKag

А не могли бы вы помочь с этим условием более сложным, или хотя бы алгоритм объяснить немного, если не сложно..?

Dethmontt

Ну как бы все просто это делается....
&НаКлиенте
Перем ТекСтрока;

&НаКлиенте
Процедура ТЧРек1ПриИзменении(Элемент)



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

&НаКлиенте
Процедура ТЧРек2ПриИзменении(Элемент)

ОбновитьТекСтроку();
Если ТекСтрока.Рек1 Тогда
ТекСтрока.Рек2 = Ложь;
ТекСтрока.Рек3 = Ложь;
КонецЕсли;

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

&НаКлиенте
Процедура ТЧРек3ПриИзменении(Элемент)

ОбновитьТекСтроку();
Если ТекСтрока.Рек1 или ТекСтрока.Рек2 Тогда
ТекСтрока.Рек3 = Ложь;
КонецЕсли;

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

&НаКлиенте
Процедура ОбновитьТекСтроку()

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

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

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

AlexKag

А процедуру ТЧРек1ПриИзменении(Элемент) так и оставлять пустую??

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск