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