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