По теме из базы знаний
- Контроль синхронизации объектов информационных баз (сравнение баз по любым доступным полям, выбор условия соединения таблиц, произвольными отборами, сортировкой, показ разницы сравнения и мн.др.)
- Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)
- Что не так с таблицами формы?
- Разбор механизма "Настройки полей формы" в 1С:ERP. Управление холдингом
- Условное оформление строк и полей Таблицы значений и Дерева значений (готовый код)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Интересная задачка. А можно ли вобще установить доступность ячейки? Я таких средств не помню.
Это нужно сделать в момент изменения или после, т.е. всегда одна из ячеек отдельной строки должна быть недоступна для редактирования?
Это нужно сделать в момент изменения или после, т.е. всегда одна из ячеек отдельной строки должна быть недоступна для редактирования?
Недоступность можно эмулировать отказом при начале редактирования ячейки, проверяя значение другой. Например, если у меня ячейка А должна быть недоступной в случае, когда в ячейке Б стоит 0, то и рисовать у колонки А следующий обработчик:
Процедура ПередНачаломИзменения(Элемент, Отказ)
Если Элемент.ТекущиеДанные.Б=0 Тогда
Отказ=Истина;
КонецЕсли;
КонецПроцедуры
У поля таблицы вроде нет события "ПередНачаломИзменения".
Уточню что нужно. Есть табличная часть Начисления с полями ВидРасчета и ГрафикРаботы. Если пользователь выбирает вид расчета, например, Больничный, то нужно отключить доступность поля ГрафикРаботы в текущей строке, т.к. в этом случае указывать график работы не нужно.
Уточню что нужно. Есть табличная часть Начисления с полями ВидРасчета и ГрафикРаботы. Если пользователь выбирает вид расчета, например, Больничный, то нужно отключить доступность поля ГрафикРаботы в текущей строке, т.к. в этом случае указывать график работы не нужно.
(4) Доступности для поля нет, только для колонки. Но можно сделать так.
В двух обработчиках прописать регулировку доступности колонок табличного поля: НачисленияПриНачалеРедактирования() и НачисленияВидРасчетаПриИзменении()
// Процедура - обработчик события "ПриНачалеРедактирования" таблиного поля ввода Начисления.
//
Процедура НачисленияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
НачисленияДоступностьРеквизитов();
КонецПроцедуры // НачисленияПриНачалеРедактирования()
// Процедура - обработчик события "ПриИзменении" поля ввода ВидРасчета.
//
Процедура НачисленияВидРасчетаПриИзменении(Элемент)
НачисленияДоступностьРеквизитов();
КонецПроцедуры // НачисленияВидРасчетаПриИзменении()
// Процедура регулирует доступность полей табличного поля Начисления в зависимости от выбранного вида расчета
//
Процедура НачисленияДоступностьРеквизитов()
Если ЭлементыФормы.Начисления.ТеущиеДанные.ВидРасчета = мВидРасчетаБольничный Тогда
ЭлементыФормы.Начисления.Колонки.ГрафикРаботы.Доступность = Ложь;
Иначе
ЭлементыФормы.Начисления.Колонки.ГрафикРаботы.Доступность = Истина;
КонецЕсли;
КонецПроцедуры // НачисленияДоступностьРеквизитов()
В двух обработчиках прописать регулировку доступности колонок табличного поля: НачисленияПриНачалеРедактирования() и НачисленияВидРасчетаПриИзменении()
// Процедура - обработчик события "ПриНачалеРедактирования" таблиного поля ввода Начисления.
//
Процедура НачисленияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
НачисленияДоступностьРеквизитов();
КонецПроцедуры // НачисленияПриНачалеРедактирования()
// Процедура - обработчик события "ПриИзменении" поля ввода ВидРасчета.
//
Процедура НачисленияВидРасчетаПриИзменении(Элемент)
НачисленияДоступностьРеквизитов();
КонецПроцедуры // НачисленияВидРасчетаПриИзменении()
// Процедура регулирует доступность полей табличного поля Начисления в зависимости от выбранного вида расчета
//
Процедура НачисленияДоступностьРеквизитов()
Если ЭлементыФормы.Начисления.ТеущиеДанные.ВидРасчета = мВидРасчетаБольничный Тогда
ЭлементыФормы.Начисления.Колонки.ГрафикРаботы.Доступность = Ложь;
Иначе
ЭлементыФормы.Начисления.Колонки.ГрафикРаботы.Доступность = Истина;
КонецЕсли;
КонецПроцедуры // НачисленияДоступностьРеквизитов()
У этого решения есть небольшой минус: если у последней введенной строки вид расчета = Больничный, то пользователь не сможет изменить график работы в тех строках, где он должен быть доступен.
Мне пришел в голову такой вариант:
&НаКлиенте
Процедура НачисленияГрафикРаботыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
если Элементы.Начисления.ТекущиеДанные.ВидРасчета=ПредопределенноеЗначение("ПланВидовРасчета.Основной.Больничный") тогда
СтандартнаяОбработка=ложь;
конецесли;
КонецПроцедуры
Мне пришел в голову такой вариант:
&НаКлиенте
Процедура НачисленияГрафикРаботыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
если Элементы.Начисления.ТекущиеДанные.ВидРасчета=ПредопределенноеЗначение("ПланВидовРасчета.Основной.Больничный") тогда
СтандартнаяОбработка=ложь;
конецесли;
КонецПроцедуры
Брошу, чтоб потом самому найти
&НаКлиенте
Процедура ТаблицаУслугПриАктивизацииСтроки(Элемент)
Если Элемент.ТекущиеДанные.ВидРабот <> ПредопределенноеЗначение("Справочник.ВидыСервисныхРабот.ПустаяСсылка") Тогда
Элемент.ПодчиненныеЭлементы.ТаблицаУслугУслуга.ТолькоПросмотр = Истина;
Элемент.ПодчиненныеЭлементы.ТаблицаУслугКоличество.ТолькоПросмотр = Истина;
Элемент.ПодчиненныеЭлементы.ТаблицаУслугЦена.ТолькоПросмотр = Истина;
Элемент.ПодчиненныеЭлементы.ТаблицаУслугСумма.ТолькоПросмотр = Истина;
Иначе
Элемент.ПодчиненныеЭлементы.ТаблицаУслугУслуга.ТолькоПросмотр = Ложь;
Элемент.ПодчиненныеЭлементы.ТаблицаУслугКоличество.ТолькоПросмотр = Ложь;
Элемент.ПодчиненныеЭлементы.ТаблицаУслугЦена.ТолькоПросмотр = Ложь;
Элемент.ПодчиненныеЭлементы.ТаблицаУслугСумма.ТолькоПросмотр = Ложь;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот