Списание ОС / Список оснований / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

	Для Каждого ДокументОснование Из Параметры.Основания Цикл
		ДанныеСтроки = Основания.Добавить();
		ДанныеСтроки.ДокументОснование = ДокументОснование;
	КонецЦикла;
	
	Если ТолькоПросмотр Тогда
		Элементы.ФормаЗавершить.Видимость = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	ШаблонСообщения = НСтр("ru = 'Не заполнена колонка ""Документ основание"" в строке %1'");
	
	СписокОснований = Новый Массив;
	
	Для Каждого ДанныеСтроки Из Основания Цикл

		Если НЕ ЗначениеЗаполнено(ДанныеСтроки.ДокументОснование) Тогда
			
			ТекстСообщения = СтрШаблон(ШаблонСообщения, Формат(ДанныеСтроки.НомерСтроки, "ЧГ=0;"));
			
			Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Основания", ДанныеСтроки.НомерСтроки, "ДокументОснование");
			ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, Поле,, Отказ);
			
		КонецЕсли;
		
	КонецЦикла;
	
	Если СписокОснований.Количество() <> 0 Тогда
		
		РеквизитыОснований = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(СписокОснований, "Дата,Организация");
		
		ТекущийМесяцВыбытия = Неопределено;
		ТекущаяОрганизация = Неопределено;
	
		Для Каждого КлючИЗначение Из РеквизитыОснований Цикл
			
			МесяцВыбытия = НачалоМесяца(КлючИЗначение.Значение.Дата);
			
			Если МесяцВыбытия <> ТекущийМесяцВыбытия 
				И ТекущийМесяцВыбытия <> Неопределено Тогда
				ТекстСообщения = НСтр("ru = 'Необходимо выбрать документы, оформленные в одном и том же месяце'");
				ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,,,, Отказ);
				Возврат;
			КонецЕсли;
			
			Если КлючИЗначение.Значение.Организация <> ТекущаяОрганизация 
				И ТекущаяОрганизация <> Неопределено Тогда
				ТекстСообщения = НСтр("ru = 'Необходимо выбрать документы одной организации'");
				ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,,,, Отказ);
				Возврат;
			КонецЕсли;
			
			ТекущийМесяцВыбытия = МесяцВыбытия;
			ТекущаяОрганизация = КлючИЗначение.Значение.Организация;
			
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Завершить(Команда)
	
	ЗакрытьФорму();

КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ЗакрытьФорму()
	
	Если НЕ ПроверитьЗаполнение() Тогда
		Возврат;
	КонецЕсли;
	
	Результат = Новый Массив;
	Для Каждого ДанныеСтроки Из Основания Цикл
		Результат.Добавить(ДанныеСтроки.ДокументОснование);
	КонецЦикла;
	
	Закрыть(Результат);
	
КонецПроцедуры

#КонецОбласти

Связанные материалы