Версия для печати темы (http://pro1c.org.ua/index.php?s=616133abe2150b007482f10ec454f34e&showtopic=51426)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Только чтение для отдельной ячейки в ТЧ документа

Автор: Constantus 08.04.19, 18:13

Приветствую, Форумчане!
1с8.3.6, УФ, самописная, БСП

Имеется документ "Заказ", ТЧ "Оформление", один из реквизитов "Цена"

Требуется, чтобы при определенных условиях эта ячейка цены была доступна или "только для чтения"

Условия доступности для редактирования:
1. (текущие данные строки)

Если ТекущиеДанные.ТипДанных = ПредопределенноеЗначение("Перечисление.ТипыДанныхОформления.П1") Или
        ТекущиеДанные.ТипДанных = ПредопределенноеЗначение("Перечисление.ТипыДанныхОформления.П2") Тогда

КонецЕсли;


2. Если доступна роль "ГлавныйНачальник"
3. Если подразделение имеет статус "Центр" (из шапки документа)

Подскажите как правильно и где прописать выполнение условий для данной ячейки?

Перепробовал несколько вариантов:
1. ПриАктивацииСтроки - грузит базу длительным расчетом
2. Перед началом изменения - блокирует всю строку для редактирования
3. Условное форматирование - смог прописать только условия №1

Как правильно организовать возможность или невозможность редактирования ячейки "Цена" при выполнении условий?



Автор: mut 08.04.19, 19:01

Constantus @ Сегодня, 19:13 * ,
доступна роль или нет, статус подразделения, это можно определить при создании формы на сервере и поставить флажок (реквизит формы)
значения для сравнения - там-же - установить в дополнительные реквизиты на форме
ну и по совокупности уже проверять при активации строки

Автор: Petre 09.04.19, 8:14

QUOTE (mut @ 08.04.19, 19:01) *
ну и по совокупности уже проверять при активации строки

Удобнее - в условном оформлении формы, раз уж УФ.

Автор: Constantus 09.04.19, 9:28

Попробовал активацию Ячейки

Процедура УсопшиеИОформлениеПриАктивизацииЯчейки(Элемент)
    // Вставить содержимое обработчика.
       //Если Элемент.ТекущаяКолонка.Имя = "Цена" Тогда
  //      Сообщить(Элемент);
    //КонецЕсли;
    
//    колонка - элементы.Список.ТекущийЭлемент.Имя;
//строка - элементы.список.текущиеданные;
    
КонецПроцедуры


Как применять этот "Элемент"? Т.е. обратиться к его свойствам и т.д.?

Элемент.ТекущаяКолонка.Имя = "Цена"


говорит, что нет такого "текущаяКолонка"

Идея в чем: чтобы когда тыкается в колонку с именем "Цена", то тогда идет проверка на всякое и ставится "Только чтение" на эту ячейку...

Подскажите как такое реализовать и как вообще работать с этим чудом "При активации Ячейки/Поля"?

Автор: pablo 09.04.19, 11:50

Можно не привязываться к элементу, а проверять напрямую элементы формы

&НаКлиенте
Процедура ОбработкиПриАктивизацииЯчейки(Элемент)
    Если Элементы.Обработки.ТекущиеДанные<>Неопределено тогда
        Элементы.Обработки.ПодчиненныеЭлементы.ОбработкиПредставлениеНить.ТолькоПросмотр=не Элементы.Обработки.ТекущиеДанные.РедактироватьНить;



Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
http://pro1c.org.ua