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