База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как запретить изменение поля «Родитель» в 1С без блокировки остальных? › RE: Как запретить изменение поля “Родитель” в 1С без блокировки остальных?
Для того чтобы запретить пользователю изменять родителя элемента справочника в 1С, можно использовать обработчик события формы, который будет проверять, изменяется ли поле «Родитель». Если оно изменяется, то можно вернуть его к предыдущему значению.
Вот пример кода, который можно использовать в обработчике события «ПередЗаписью» формы:
1C
Процедура ПередЗаписью(Отказ)
// Сохраняем текущее значение родителя
ТекущийРодитель = ЭтотОбъект.Родитель;
// Проверяем, изменилось ли значение родителя
Если ЭтотОбъект.Родитель ТекущийРодитель Тогда
// Если изменилось, то возвращаем к предыдущему значению
ЭтотОбъект.Родитель = ТекущийРодитель;
Сообщить("Изменение родителя запрещено.");
Отказ = Истина; // Отменяем запись
КонецЕсли;
КонецПроцедуры
Также можно использовать событие «ПриИзменении» для поля «Родитель», чтобы сразу возвращать его к предыдущему значению:
1C
Процедура Родитель_ПриИзменении(Элемент)
// Возвращаем к предыдущему значению
ЭтотОбъект.Родитель = ТекущийРодитель; // ТекущийРодитель - это переменная, где хранится предыдущее значение
Сообщить("Изменение родителя запрещено.");
КонецПроцедуры
Не забудьте инициализировать переменную `ТекущийРодитель` в событии «ПриОткрытии» формы, чтобы она содержала текущее значение родителя при открытии формы:
1C
Процедура ПриОткрытии()
ТекущийРодитель = ЭтотОбъект.Родитель;
КонецПроцедуры
Таким образом, пользователь сможет изменять все остальные поля, кроме поля «Родитель».