Счет-фактура выданный / Форма платежно-расчетные документы / Модуль формы

файл

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

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

	Параметры.Свойство("Организация", Организация);
	Параметры.Свойство("СписокОснований", СписокОснований);
	Параметры.Свойство("Период", Период);
	Параметры.Свойство("Контрагент", Контрагент);
	
	Если Параметры.Свойство("ДокументОснование") Тогда
		СписокОснований.Добавить(Параметры.ДокументОснование);
	КонецЕсли;
	
	Если Параметры.Свойство("АдресВХранилище") Тогда
		ПлатежноРасчетныеДокументы.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресВХранилище));
	КонецЕсли;
	
	ВидимостьСчетовФактурНаАванс = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(Период) >= 8;
	Элементы.ПлатежноРасчетныеДокументыНомерСчетаФактурыНаАванс.Видимость            = ВидимостьСчетовФактурНаАванс;
	Элементы.ПлатежноРасчетныеДокументыДатаСчетаФактурыНаАванс.Видимость             = ВидимостьСчетовФактурНаАванс;
	Элементы.ПлатежноРасчетныеДокументыНомерИсправленияСчетаФактурыНаАванс.Видимость = ВидимостьСчетовФактурНаАванс;
	Элементы.ПлатежноРасчетныеДокументыДатаИсправленияСчетаФактурыНаАванс.Видимость  = ВидимостьСчетовФактурНаАванс;
	
	МассивОрганизации = Новый Массив;
	МассивОрганизации.Добавить(Организация);
	РеквизитыОрганизации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Организация, "ГоловнаяОрганизация, ДопускаютсяВзаиморасчетыЧерезГоловнуюОрганизацию");
	Если РеквизитыОрганизации.ДопускаютсяВзаиморасчетыЧерезГоловнуюОрганизацию
		И ЗначениеЗаполнено(РеквизитыОрганизации.ГоловнаяОрганизация) Тогда
		МассивОрганизации.Добавить(РеквизитыОрганизации.ГоловнаяОрганизация);
	КонецЕсли;
	
	ПараметрыВыбора = Новый Массив;
	ПараметрыВыбора.Добавить(Новый ПараметрВыбора("Отбор.Организация", МассивОрганизации));
	Если ЗначениеЗаполнено(Контрагент) Тогда 
		ПараметрыВыбора.Добавить(Новый ПараметрВыбора("Отбор.Контрагент", Контрагент));
	КонецЕсли;
	Элементы.ПлатежноРасчетныеДокументыРасчетныйДокумент.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбора);

	СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);

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

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

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыПлатежноРасчетныеДокументы

&НаКлиенте
Процедура ПлатежноРасчетныеДокументыПриИзменении(Элемент)
	
	Модифицированность = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура ПлатежноРасчетныеДокументыРасчетныйДокументПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.ПлатежноРасчетныеДокументы.ТекущиеДанные;
	
	ЗаполнитьЗначенияСвойств(ТекущаяСтрока, ПолучитьДанныеАвансовПоДокументуОплаты(ТекущаяСтрока.РасчетныйДокумент));
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ЗаполнитьПлатежноРасчетныеДокументы(Команда)
	
	ЗаполнятьТабличнуюЧасть = Истина;

	Если ПлатежноРасчетныеДокументы.Количество() > 0 Тогда
		КодОтвета = Неопределено;

		ПоказатьВопрос(Новый ОписаниеОповещения("ЗаполнитьПлатежноРасчетныеДокументыЗавершение", ЭтотОбъект, Новый Структура("ЗаполнятьТабличнуюЧасть", ЗаполнятьТабличнуюЧасть)), НСтр("ru = 'Табличная часть будет очищена, продолжить?'"), РежимДиалогаВопрос.ДаНет);
		Возврат;
	КонецЕсли;
	
	ЗаполнитьПлатежноРасчетныеДокументыФрагмент(ЗаполнятьТабличнуюЧасть);
КонецПроцедуры

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

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

&НаКлиенте
Процедура ЗаполнитьПлатежноРасчетныеДокументыФрагмент(Знач ЗаполнятьТабличнуюЧасть)
	
	Если ЗаполнятьТабличнуюЧасть Тогда
		ЗаполнитьПлатежноРасчетныеДокументыСервер();
		Модифицированность = Истина;
	КонецЕсли;

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

&НаКлиенте
Процедура ПеренестиВДокумент(Команда)
	
	ЕстьОшибки = Ложь;
	
	ОчиститьСообщения();
	ПроверитьЗаполнениеТабличнойЧасти(ЕстьОшибки);
	Если НЕ ЕстьОшибки Тогда
	
		Модифицированность = Ложь;
		
		Закрыть(ПоместитьПлатежноРасчетныеДокументыВХранилище());
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

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

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

#Область Прочее

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

&НаСервере
Функция ПоместитьПлатежноРасчетныеДокументыВХранилище()
	
	Возврат ПоместитьВоВременноеХранилище(ПлатежноРасчетныеДокументы.Выгрузить());
	
КонецФункции

&НаСервере
Процедура ПроверитьЗаполнениеТабличнойЧасти(Отказ)
	
	Для ТекИндекс = 0 По ПлатежноРасчетныеДокументы.Количество()-1 Цикл
		
		Если ПустаяСтрока(ПлатежноРасчетныеДокументы[ТекИндекс].НомерПлатежноРасчетногоДокумента) Тогда
			ТекстОшибки = НСтр("ru='Не заполнен номер документа в строке %НомерСтроки%'");
			ТекстОшибки = СтрЗаменить(ТекстОшибки,"%НомерСтроки%",ТекИндекс+1);
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				ТекстОшибки,
				,
				ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ПлатежноРасчетныеДокументы", ТекИндекс+1, "НомерПлатежноРасчетногоДокумента"),
				,
				Отказ);
		КонецЕсли;
		
		Если ПлатежноРасчетныеДокументы[ТекИндекс].ДатаПлатежноРасчетногоДокумента = Дата('00010101') Тогда
			ТекстОшибки = НСтр("ru='Не заполнена дата документа в строке %НомерСтроки%'");
			ТекстОшибки = СтрЗаменить( ТекстОшибки,"%НомерСтроки%",ТекИндекс+1);
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				ТекстОшибки ,
				,
				ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ПлатежноРасчетныеДокументы", ТекИндекс+1, "ДатаПлатежноРасчетногоДокумента"),
				,
				Отказ);
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

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

&НаСервере
Функция ПолучитьДанныеАвансовПоДокументуОплаты(ТекущаяСтрока)
	
	ДанныеАвансовПоДокументуОплаты = Документы.СчетФактураВыданныйАванс.АвансыПоПлатежномуДокументу(ТекущаяСтрока, Организация);
	Возврат ДанныеАвансовПоДокументуОплаты;
	
КонецФункции

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

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

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