ОбработкаПроверкиЗаполнения (БСП)

Автор: 1С
ОбщийМодуль.УправлениеСвойствами
БСП

Обработка проверки заполнения. Проверяет заполненность реквизитов, обязательных для заполнения.

// Проверяет заполненность реквизитов, обязательных для заполнения.
// 
// Параметры:
//  Форма                - ФормаКлиентскогоПриложения - уже настроена в процедуре ПриСозданииНаСервере.
//  Отказ                - Булево - параметр обработчика ОбработкаПроверкиЗаполненияНаСервере.
//  ПроверяемыеРеквизиты - Массив - параметр обработчика ОбработкаПроверкиЗаполненияНаСервере.
//  Объект - Объект - по типу объекта, если свойство не указано или Неопределено,
//           объект берется из реквизита формы "Объект".
//
Процедура ОбработкаПроверкиЗаполнения(Форма, Отказ, ПроверяемыеРеквизиты, Объект = Неопределено) Экспорт
	
	Если НЕ Форма.Свойства_ИспользоватьСвойства
	 ИЛИ НЕ Форма.Свойства_ИспользоватьДопРеквизиты Тогда
		
		Возврат;
	КонецЕсли;
	
	Приемник = Новый Структура;
	Приемник.Вставить("ПараметрыСвойств", Неопределено);
	ЗаполнитьЗначенияСвойств(Приемник, Форма);
	
	Если ТипЗнч(Приемник.ПараметрыСвойств) = Тип("Структура")
		И Приемник.ПараметрыСвойств.Свойство("ВыполненаОтложеннаяИнициализация")
		И Не Приемник.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
		ЗаполнитьДополнительныеРеквизитыВФорме(Форма, Объект);
	КонецЕсли;
	
	Для каждого Строка Из Форма.Свойства_ОписаниеДополнительныхРеквизитов Цикл
		Если Строка.ЗаполнятьОбязательно И НЕ Строка.Удалено Тогда
			Если Не РеквизитДоступенПоФункциональнымОпциям(Строка) Тогда
				Продолжить;
			КонецЕсли;
			Результат = Истина;
			Если Объект = Неопределено Тогда
				ОписаниеОбъекта = Форма.Объект;
			Иначе
				ОписаниеОбъекта = Объект;
			КонецЕсли;
			
			Для Каждого ЗависимыйРеквизит Из Форма.Свойства_ОписаниеЗависимыхДополнительныхРеквизитов Цикл
				Если ЗависимыйРеквизит.ИмяРеквизитаЗначение = Строка.ИмяРеквизитаЗначение
					И ЗависимыйРеквизит.УсловиеОбязательностиЗаполнения <> Неопределено Тогда
					
					Параметры = Новый Структура;
					Параметры.Вставить("ЗначенияПараметров", ЗависимыйРеквизит.УсловиеОбязательностиЗаполнения.ЗначенияПараметров);
					Параметры.Вставить("Форма", Форма);
					Параметры.Вставить("ОписаниеОбъекта", ОписаниеОбъекта);
					Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме(ЗависимыйРеквизит.УсловиеОбязательностиЗаполнения.КодУсловия, Параметры);
					
					Прервать;
				КонецЕсли;
			КонецЦикла;
			Если Не Результат Тогда
				Продолжить;
			КонецЕсли;
			
			Если НЕ ЗначениеЗаполнено(Форма[Строка.ИмяРеквизитаЗначение]) Тогда
				ОбщегоНазначения.СообщитьПользователю(
					СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено.'"), Строка.Наименование),
					,
					Строка.ИмяРеквизитаЗначение,
					,
					Отказ);
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ОбработкаПроверкиЗаполненияПрисоединенногоФайла (БСП)

ОбработкаПроверкиЗаполненияНаСервере (БСП)

ОбработкаПроверкиЗаполненияНаСервереФормыРедактированияРазрешенныхЗначений (БСП)

Проверка заполнения на клиенте

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

ВидОбработкиЗаполнениеОбъекта (БСП)

ПроверкаЗаполненностиРеквизитовОтложеннойОтправки (БСП)

Ищу универсальный метод проверки заполненности мутабельного значения

ПриПроверкеВозможностиЗагрузкиОбработкиИзФайла (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз