Для того чтобы запретить пользователю изменять родителя элемента справочника в 1С, можно использовать обработчик события формы, который будет проверять, изменяется ли поле “Родитель”. Если оно изменяется, то можно вернуть его к предыдущему значению.
Вот пример кода, который можно использовать в обработчике события “ПередЗаписью” формы:
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
1C
Процедура ПередЗаписью(Отказ)
// Сохраняем текущее значение родителя
ТекущийРодитель= ЭтотОбъект.Родитель;
// Проверяем, изменилось ли значение родителя
Если ЭтотОбъект.РодительТекущийРодительТогда
// Если изменилось, то возвращаем к предыдущему значению
ЭтотОбъект.Родитель= ТекущийРодитель;
Сообщить("Изменение родителя запрещено.");
Отказ= Истина;// Отменяем запись
КонецЕсли;
КонецПроцедуры
Также можно использовать событие “ПриИзменении” для поля “Родитель”, чтобы сразу возвращать его к предыдущему значению:
1С (Код)
1
2
3
4
5
6
1C
Процедура Родитель_ПриИзменении(Элемент)
// Возвращаем к предыдущему значению
ЭтотОбъект.Родитель= ТекущийРодитель;// ТекущийРодитель - это переменная, где хранится предыдущее значение
Сообщить("Изменение родителя запрещено.");
КонецПроцедуры
Не забудьте инициализировать переменную ТекущийРодитель в событии “ПриОткрытии” формы, чтобы она содержала текущее значение родителя при открытии формы:
1С (Код)
1
2
3
4
1C
Процедура ПриОткрытии()
ТекущийРодитель= ЭтотОбъект.Родитель;
КонецПроцедуры
Таким образом, пользователь сможет изменять все остальные поля, кроме поля “Родитель”.