Проверка заполнения и видимость

1. Avartia 15.01.21 12:37 Сейчас в теме
Здравствуйте, камрады. Есть реквизиты с проверкой заполнения, есть элементы на форме (путь к данным - эти реквизиты), в каких-то случаях нужно скрыть видимость этих элементов. Как сделать это так, чтобы проверка заполнения не выдавала ошибок?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user633533_encantado 11 15.01.21 12:48 Сейчас в теме
В событии проверка заполнения можно самому менять состав реквизитов, которые надо проверять.

в типовых конфигурациях это часто используется, например в зависимости от хозяйственной операции.
3. user868505 15.01.21 12:50 Сейчас в теме
Заполнять чем-то по умолчанию
Убрать проверку заполнения и написать свою по сложным условиям перед записью
4. SlavaKron 15.01.21 14:11 Сейчас в теме
Видимость элементов мы можем получить только в контексте формы, в то же время в событии формы объекта ОбработкаПроверкиЗаполненияНаСервере мы не сможем исключить реквизиты объекта из проверки, поэтому надо их исключить в событии объекта ОбработкаПроверкиЗаполнения. В событие объекта необходимо передать информацию о видимости элементов на форме. Для этого можно воспользоваться хранилищем общих настроек. В модуле формы:
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	МассивРеквизитов = Новый Массив;
	Если Не Элементы.Склад.Видимость Тогда
		МассивРеквизитов.Добавить("Склад");
	КонецЕсли;
	
	ХранилищеОбщихНастроек.Сохранить("РеквизитыНеПроверять", Объект.Ссылка.УникальныйИдентификатор(), МассивРеквизитов);
	
КонецПроцедуры
Показать

В модуле объекта:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	
	УИД = Строка(Ссылка.УникальныйИдентификатор());
	
	РеквизитыНеПроверять = ХранилищеОбщихНастроек.Загрузить("РеквизитыНеПроверять", УИД);
	
	Если РеквизитыНеПроверять <> Неопределено Тогда
		
		ХранилищеОбщихНастроек.Удалить("РеквизитыНеПроверять", УИД, ИмяПользователя());
		
		Для Каждого ИмяРеквизита Из РеквизитыНеПроверять Цикл
			Индекс = ПроверяемыеРеквизиты.Найти(ИмяРеквизита);
			Если Индекс <> Неопределено Тогда
				ПроверяемыеРеквизиты.Удалить(Индекс);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры
Показать
user87385463; ochirul; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот