доступность поля таблицы

1. konovalov04 11.08.11 20:10 Сейчас в теме
Нужно в обработчике события ПриИзменении некоторого поля таблицы отключить доступность другого поля таблицы. Если написать Элементы.Начисления.ПодчиненныеЭлементы.НачисленияГрафикРаботы.Доступность=Ложь;
то отключается доступность всей колонки, а мне надо только в текущей строке.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FreeArcher 162 12.08.11 07:06 Сейчас в теме
Интересная задачка. А можно ли вобще установить доступность ячейки? Я таких средств не помню.
Это нужно сделать в момент изменения или после, т.е. всегда одна из ячеек отдельной строки должна быть недоступна для редактирования?
3. Octopus 337 12.08.11 07:20 Сейчас в теме
Недоступность можно эмулировать отказом при начале редактирования ячейки, проверяя значение другой. Например, если у меня ячейка А должна быть недоступной в случае, когда в ячейке Б стоит 0, то и рисовать у колонки А следующий обработчик:
Процедура ПередНачаломИзменения(Элемент, Отказ)
    Если Элемент.ТекущиеДанные.Б=0 Тогда
        Отказ=Истина;
    КонецЕсли;
КонецПроцедуры
4. konovalov04 12.08.11 20:54 Сейчас в теме
У поля таблицы вроде нет события "ПередНачаломИзменения".
Уточню что нужно. Есть табличная часть Начисления с полями ВидРасчета и ГрафикРаботы. Если пользователь выбирает вид расчета, например, Больничный, то нужно отключить доступность поля ГрафикРаботы в текущей строке, т.к. в этом случае указывать график работы не нужно.
6. alexk-is 6534 12.08.11 23:07 Сейчас в теме
(4) Доступности для поля нет, только для колонки. Но можно сделать так.
В двух обработчиках прописать регулировку доступности колонок табличного поля: НачисленияПриНачалеРедактирования() и НачисленияВидРасчетаПриИзменении()

// Процедура - обработчик события "ПриНачалеРедактирования" таблиного поля ввода Начисления.
//
Процедура НачисленияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

   
НачисленияДоступностьРеквизитов();

КонецПроцедуры
// НачисленияПриНачалеРедактирования()

// Процедура - обработчик события "ПриИзменении" поля ввода ВидРасчета.
//
Процедура НачисленияВидРасчетаПриИзменении(Элемент)

   
НачисленияДоступностьРеквизитов();

КонецПроцедуры
// НачисленияВидРасчетаПриИзменении()

// Процедура регулирует доступность полей табличного поля Начисления в зависимости от выбранного вида расчета
//
Процедура НачисленияДоступностьРеквизитов()

    Если
ЭлементыФормы.Начисления.ТеущиеДанные.ВидРасчета = мВидРасчетаБольничный Тогда
       
ЭлементыФормы.Начисления.Колонки.ГрафикРаботы.Доступность = Ложь;
    Иначе
       
ЭлементыФормы.Начисления.Колонки.ГрафикРаботы.Доступность = Истина;
    КонецЕсли;

КонецПроцедуры
// НачисленияДоступностьРеквизитов()
5. Octopus 337 12.08.11 21:54 Сейчас в теме
Это обработчик табличного поля, т.е. всей табличной части, а не колонки.
7. Octopus 337 13.08.11 07:11 Сейчас в теме
А уже при установленной недоступности сработает ПриНачалеРедактирования, если колонка недоступна? Может, при активации строки всунуть такую проверку?
8. konovalov04 13.08.11 17:53 Сейчас в теме
У этого решения есть небольшой минус: если у последней введенной строки вид расчета = Больничный, то пользователь не сможет изменить график работы в тех строках, где он должен быть доступен.

Мне пришел в голову такой вариант:

&НаКлиенте
Процедура НачисленияГрафикРаботыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
если Элементы.Начисления.ТекущиеДанные.ВидРасчета=ПредопределенноеЗначение("ПланВидовРасчета.Основной.Больничный") тогда
СтандартнаяОбработка=ложь;
конецесли;
КонецПроцедуры
9. Nick_to 14.10.16 12:12 Сейчас в теме
Брошу, чтоб потом самому найти

&НаКлиенте
Процедура ТаблицаУслугПриАктивизацииСтроки(Элемент)
	Если Элемент.ТекущиеДанные.ВидРабот <> ПредопределенноеЗначение("Справочник.ВидыСервисныхРабот.ПустаяСсылка") Тогда 
		Элемент.ПодчиненныеЭлементы.ТаблицаУслугУслуга.ТолькоПросмотр = Истина;
		Элемент.ПодчиненныеЭлементы.ТаблицаУслугКоличество.ТолькоПросмотр = Истина;
		Элемент.ПодчиненныеЭлементы.ТаблицаУслугЦена.ТолькоПросмотр = Истина;
		Элемент.ПодчиненныеЭлементы.ТаблицаУслугСумма.ТолькоПросмотр = Истина;
	Иначе
		Элемент.ПодчиненныеЭлементы.ТаблицаУслугУслуга.ТолькоПросмотр = Ложь;
		Элемент.ПодчиненныеЭлементы.ТаблицаУслугКоличество.ТолькоПросмотр = Ложь;
		Элемент.ПодчиненныеЭлементы.ТаблицаУслугЦена.ТолькоПросмотр = Ложь;
		Элемент.ПодчиненныеЭлементы.ТаблицаУслугСумма.ТолькоПросмотр = Ложь;
	КонецЕсли; 
КонецПроцедуры
Показать
Rabin; Stylo; ViNx7; 1Cynep4eJIoBek; +4 Ответить
10. crash-16 26.05.21 10:12 Сейчас в теме
(9) а если в табличной части только одна строка - она всегда активна, ваше событие не сработает...
11. strelvan 75 29.09.21 09:09 Сейчас в теме
Если используются УФ тогда это всё делается через условное оформление формы. Свойство Доступность, видимость и др. Так что не изобретайте костыли.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот