Проверка выбора в форме выбора

В иерархическом списке нужно дать возможность пользователю выбирать листья, но не узлы.

Я сделал у справочника реквизит «Не выбирать», и проверяю его.

Но есть проблема. Перед закрытием формы нельзя понять, пользователь выбрал значение или закрыл форму.

Да и выбранное значение просто так не поймешь, я нахожу по текущей строке таблицы формы.

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	Если МожноЗакрыть = истина Тогда
		Возврат;
	КонецЕсли;
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда 
		Если Получить.ЗначениеРеквизита(ТекущиеДанные.Ссылка, "НеВыбирать") Тогда
			Отказ = истина;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Отмена(Команда)  
	МожноЗакрыть = истина;
	Закрыть(Неопределено);
КонецПроцедуры

Пришлось добавить команду «Отмена», чтобы можно было закрыть форму, если вдруг пользователь встал на элементе, который нельзя выбирать.

Тема обсуждалась на мисте, там предлагали более трудоемкий вариант — обрабатывать событие выбора и добавлять свою кнопку выбора вместо типовой. Тогда можно обойтись без кнопки «отмена».

Записал пожелание в список пожеланий 1С к управляемым формам.

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *