Запретить редактирование ячейки в табличной части документа
По теме из базы знаний
- Всякие полезности
- Типовая борьба - личный опыт работы с типовыми конфигурациями 1С:8
- Редактирование документа Операции (бухгалтерский и налоговый учет) ОФ и УФ
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Использование типовых возможностей 1С и их расширение. Часть 2
Найденные решения
(36) у меня отрабатывает на этой обработке
Прикрепленные файлы:
ВнешняяОбработкаБлокировкаПоляВТЧ.epf
(40)
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТабЧастьЕстьОтвет.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕстьОтветИмпорт.Имя);
вот простенький пример выборочной доступности поля в ТЧ в зависимости от значения соседнего поля
Прикрепленные файлы:
ВнешняяОбработкаБлокировкаПоляВТЧ.epf
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Через условное оформление можно, что то типа такого
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТабличнаяЧастьЕсть.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ТабличнаяЧасть.Производитель");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = "Тест";
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Показать
(2)
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕстьОтвет.Имя);
МассивОтбора = Новый Массив;
МассивОтбора.Добавить(Справочники.Производители.ПустаяСсылка);
МассивОтбора.Добавить(Справочники.Производители.НайтиПоНаименованию("No name"));
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.этлПроизводитель");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = МассивОтбора;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Показать
необходимо обрабатывать два события вашей ТЧ
1.ПередНачаломИзменения - проверяете поле Производитель и блокируете или нет поле Есть
2.ПриИзменении - поля Производитель по новому значению блокируете или нет поле Есть
(бред какой-то)
1.ПередНачаломИзменения - проверяете поле Производитель и блокируете или нет поле Есть
2.ПриИзменении - поля Производитель по новому значению блокируете или нет поле Есть
(бред какой-то)
(5)
так я же написал блокировать или не блокировать, надо так
так я же написал блокировать или не блокировать, надо так
Если НаименованиеПроизводителя = "No name" Тогда
Элементы.ТоварыЕстьОтвет.ТолькоПросмотр = Истина;
Иначе
Элементы.ТоварыЕстьОтвет.ТолькоПросмотр = Ложь;
КонецЕсли;
или так, одной командой
Элементы.ТоварыЕстьОтвет.ТолькоПросмотр = НаименованиеПроизводителя = "No name";
Показать
(15) Другие обработчики убрали? Изначально поле доступно?
С массивом оказывается не работает, надо изменить на список значений
С массивом оказывается не работает, надо изменить на список значений
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕстьОтвет.Имя);
СписокОтбора = Новый СписокЗначений;
СписокОтбора.Добавить(Справочники.Производители.ПустаяСсылка());
СписокОтбора.Добавить(Справочники.Производители.НайтиПоНаименованию("No name"));
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.этлПроизводитель");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = СписокОтбора;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Показать
вот простенький пример выборочной доступности поля в ТЧ в зависимости от значения соседнего поля
Прикрепленные файлы:
ВнешняяОбработкаБлокировкаПоляВТЧ.epf
(22) Сделал у себя. У меня правда поле "Есть ответ" ЧекБокс, но работает! когда схожу с поля где "No name" то оно как бы становиться глазом видно что можно редактировать, но когда обратно хочешь поставить галочку то не ставит.
А когда стоишь на поле которое нельзя редактировать то и нижние показывает что нельзя, но когда перейдешь то становиться можно. Я хз как это поправить, но пойдёт. C фото думаю понятнее будет
Это и нужно было! Спасибо огромное!!!!
А когда стоишь на поле которое нельзя редактировать то и нижние показывает что нельзя, но когда перейдешь то становиться можно. Я хз как это поправить, но пойдёт. C фото думаю понятнее будет
Это и нужно было! Спасибо огромное!!!!
Прикрепленные файлы:
(26) зачем делать через обработчики событий, если можно УО,
просто у автора изначально где то блокируется поле, поэтому не работает УО,
ваш код сработал, потому что он снимает ТолькоПросмотр
имхо, выглядит не очень с чек боксами, пользователи не поймут, я так понимаю, что блокируется весь столбец
просто у автора изначально где то блокируется поле, поэтому не работает УО,
ваш код сработал, потому что он снимает ТолькоПросмотр
имхо, выглядит не очень с чек боксами, пользователи не поймут, я так понимаю, что блокируется весь столбец
тогда программно установить правое значение
(вообще должны быть доступны предопределенные элементы справочника, если заданы)
вот пример с колонкой Валюта, у вас справочник Валюты есть? тогда должно сработать, ну или код смотрите
(вообще должны быть доступны предопределенные элементы справочника, если заданы)
вот пример с колонкой Валюта, у вас справочник Валюты есть? тогда должно сработать, ну или код смотрите
Прикрепленные файлы:
ВнешняяОбработкаБлокировкаПоляВТЧ.epf
(34)Вроде все сделал как у Вас, но не отрабатывает, так и открыт для редактирования
лкЭлементУО = этаформа.УсловноеОформление.Элементы[0];
лкОтбор = лкЭлементУО.Отбор.Элементы[0];
лкОтбор.ПравоеЗначение = Справочники.Производители.НайтиПоНаименованию("No name");
Прикрепленные файлы:
(36) у меня отрабатывает на этой обработке
Прикрепленные файлы:
ВнешняяОбработкаБлокировкаПоляВТЧ.epf
(38) Подскажите пожалуйста, а как еще одну ячейку добавить только для просмотра, начал делать так:
но тогда и первая строчка не взлетает
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕстьОтвет.Имя);
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕстьОтветИмпорт.Имя);
но тогда и первая строчка не взлетает
(40)
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТабЧастьЕстьОтвет.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕстьОтветИмпорт.Имя);
а сам пример работает?
а код в форме добавили?
а код в форме добавили?
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//установка оформления
лкЭлементУО = этаформа.УсловноеОформление.Элементы[0];
лкОтбор = лкЭлементУО.Отбор.Элементы[0];
лкОтбор.ПравоеЗначение = Справочники.Валюты.НайтиПоКоду("643");
КонецПроцедуры
Показать
Че огород городить
&НаКлиенте
Процедура ТЧПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Если Элемент.ТекущиеДанные.Контрагент.Пустая() Тогда
Элементы.ТЧСумма.ТолькоПросмотр = Ложь;
Иначе
Элементы.ТЧСумма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот