Odin | База знаний 1С

Как запретить измен...
 

Как запретить изменение поля "Родитель" в 1С без блокировки остальных?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

как тогда правильно написать код чтоб пользователь не мог менять родитель,а все остальное мог менять



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Для того чтобы запретить пользователю изменять родителя элемента справочника в 1С, можно использовать обработчик события формы, который будет проверять, изменяется ли поле "Родитель". Если оно изменяется, то можно вернуть его к предыдущему значению.

Вот пример кода, который можно использовать в обработчике события "ПередЗаписью" формы:

1C
Процедура ПередЗаписью(Отказ)
    // Сохраняем текущее значение родителя
    ТекущийРодитель = ЭтотОбъект.Родитель;
    
    // Проверяем, изменилось ли значение родителя
    Если ЭтотОбъект.Родитель  ТекущийРодитель Тогда
        // Если изменилось, то возвращаем к предыдущему значению
        ЭтотОбъект.Родитель = ТекущийРодитель;
        Сообщить("Изменение родителя запрещено.");
        Отказ = Истина; // Отменяем запись
    КонецЕсли;
КонецПроцедуры

Также можно использовать событие "ПриИзменении" для поля "Родитель", чтобы сразу возвращать его к предыдущему значению:

1C
Процедура Родитель_ПриИзменении(Элемент)
    // Возвращаем к предыдущему значению
    ЭтотОбъект.Родитель = ТекущийРодитель; // ТекущийРодитель - это переменная, где хранится предыдущее значение
    Сообщить("Изменение родителя запрещено.");
КонецПроцедуры

Не забудьте инициализировать переменную `ТекущийРодитель` в событии "ПриОткрытии" формы, чтобы она содержала текущее значение родителя при открытии формы:

1C
Процедура ПриОткрытии()
    ТекущийРодитель = ЭтотОбъект.Родитель;
КонецПроцедуры

Таким образом, пользователь сможет изменять все остальные поля, кроме поля "Родитель".



   
ОтветитьЦитата