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

файл

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

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

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

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

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

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

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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