Книга покупок / Форма отчета / Модуль формы

файл

#Область ОписаниеПеременных

// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

&НаКлиенте
Перем ПараметрыОбработчикаОжидания;

&НаКлиенте
Перем ИнтервалПроверкиРезультата;

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

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

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

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

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	
	БухгалтерскиеОтчетыКлиент.ПередЗакрытием(ЭтотОбъект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	БухгалтерскиеОтчетыКлиент.ПриЗакрытии(ЭтотОбъект, ЗавершениеРаботы);
	
КонецПроцедуры

&НаСервере
Процедура ПриСохраненииПользовательскихНастроекНаСервере(Настройки)

	БухгалтерскиеОтчетыВызовСервера.ПриСохраненииПользовательскихНастроекНаСервере(ЭтаФорма, Настройки, Истина);

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

&НаСервере
Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Настройки)

	БухгалтерскиеОтчетыВызовСервера.ПриЗагрузкеПользовательскихНастроекНаСервере(ЭтаФорма, Настройки, Истина);

	ОбновитьТекстЗаголовка(ЭтаФорма);
	ЗаполнитьРеквизитыИзПараметровФормы(ЭтаФорма);
	
	УчетНДСКлиентСервер.ОтобразитьПоясненияКПериодуОтчета(ЭтотОбъект);
	УправлениеФормой(ЭтаФорма);

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

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

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

&НаКлиенте
Процедура НачалоПериодаПриИзменении(Элемент)
	
	ОбновитьТекстЗаголовка(ЭтаФорма);
	УчетНДСКлиентСервер.ОтобразитьПоясненияКПериодуОтчета(ЭтотОбъект);
	
	Если Не ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
		ПроверкаКонтрагентовКлиентСервер.СброситьАктуальностьОтчета(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура КонецПериодаПриИзменении(Элемент)
	
	ОбновитьТекстЗаголовка(ЭтотОбъект);
	УчетНДСКлиентСервер.ОтобразитьПоясненияКПериодуОтчета(ЭтотОбъект);
	
	Если Не ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
		ПроверкаКонтрагентовКлиентСервер.СброситьАктуальностьОтчета(ЭтотОбъект);
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПолеОрганизацияОткрытие(Элемент, СтандартнаяОбработка)
	
	ОбщегоНазначенияБПКлиент.ПолеОрганизацияОткрытие(Элемент, СтандартнаяОбработка,
		ПолеОрганизация, СоответствиеОрганизаций);
		
КонецПроцедуры

&НаКлиенте
Процедура ПолеОрганизацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	ОбщегоНазначенияБПКлиент.ПолеОрганизацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка, 
		СоответствиеОрганизаций, Отчет.Организация, Отчет.ВключатьОбособленныеПодразделения);
	
КонецПроцедуры

&НаКлиенте
Процедура ФормироватьДополнительныеЛистыПриИзменении(Элемент)

	Если НЕ Отчет.ФормироватьДополнительныеЛисты И Отчет.ВыводитьТолькоДопЛисты Тогда
		Отчет.ВыводитьТолькоДопЛисты = Ложь;
	КонецЕсли;

	УправлениеФормой(ЭтаФорма);

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

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

&НаКлиенте
Процедура СписокВыбораЛистаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;

	ЭлементСписка = Элемент.СписокВыбора.НайтиПоЗначению(ВыбранноеЗначение);
	Если ЭлементСписка = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	СписокВыбораЛиста = ЭлементСписка.Представление;

	ПоказатьВыбранныйЛист(ЭлементСписка.Значение);

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

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

&НаКлиенте
Процедура ДополнительныеЛистыЗаТекущийПериодПриИзменении(Элемент)

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

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

&НаКлиенте
Процедура ВыводитьТолькоДопЛистыПриИзменении(Элемент)

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

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

&НаКлиенте
Процедура ВыводитьПокупателейПоАвансамПриИзменении(Элемент)

	Если Не ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
		ПроверкаКонтрагентовКлиентСервер.СброситьАктуальностьОтчета(ЭтотОбъект);
	КонецЕсли;

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

&НаКлиенте
Процедура КонтрагентДляОтбораПриИзменении(Элемент)

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

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

&НаКлиенте
Процедура ГруппироватьПоКонтрагентамПриИзменении(Элемент)

	Если Не ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
		ПроверкаКонтрагентовКлиентСервер.СброситьАктуальностьОтчета(ЭтотОбъект);
	КонецЕсли;

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

&НаКлиенте
Процедура РезультатПриАктивизации(Элемент)
	
	Если ТипЗнч(Результат.ВыделенныеОбласти) = Тип("ВыделенныеОбластиТабличногоДокумента") Тогда
		ИнтервалОжидания = ?(ПолучитьСкоростьКлиентскогоСоединения() = СкоростьКлиентскогоСоединения.Низкая, 1, 0.2);
		ПодключитьОбработчикОжидания("Подключаемый_РезультатПриАктивизацииПодключаемый", ИнтервалОжидания, Истина);
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Процедура РезультатВыбор(Элемент, Область, СтандартнаяОбработка)
	
	Если Результат.Области.Найти("ПерейтиКПомощнику") <> Неопределено Тогда
		Если Область.Верх = Результат.Области.ПерейтиКПомощнику.Верх Тогда
			СтандартнаяОбработка = Ложь;
			УчетНДСКлиентПереопределяемый.ОткрытьФормуПомощникаПоУчетуНДС(Область.Расшифровка);
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ПоказатьНастройки(Команда)
	
	Элементы.ПрименитьНастройки.КнопкаПоУмолчанию = Истина;
	ОткрытьНастройки();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьНастройки(Команда)
	
	Элементы.Сформировать.КнопкаПоУмолчанию = Истина;
	СкрытьНастройки();
	
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьПериод(Команда)
		
	ПараметрыВыбора = Новый Структура("НачалоПериода,КонецПериода,ВыборКварталов",
		Отчет.НачалоПериода, Отчет.КонецПериода, Истина);
	ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект);
	ОткрытьФорму("ОбщаяФорма.ВыборСтандартногоПериодаМесяц",
		ПараметрыВыбора, Элементы.ВыбратьПериод, , , , ОписаниеОповещения);
	
КонецПроцедуры

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьТекстЗаголовка(Форма)

	Отчет = Форма.Отчет;

	ЗаголовокОтчета = НСтр("ru='Книга покупок'")
					+ БухгалтерскиеОтчетыКлиентСервер.ПолучитьПредставлениеПериода(
						Отчет.НачалоПериода, Отчет.КонецПериода);

	Если ЗначениеЗаполнено(Отчет.Организация) И Форма.ИспользуетсяНесколькоОрганизаций Тогда
		ЗаголовокОтчета = ЗаголовокОтчета
						+ " "
						+ БухгалтерскиеОтчетыВызовСервера.ПолучитьТекстОрганизация(
							Отчет.Организация, Отчет.ВключатьОбособленныеПодразделения, Отчет.КонецПериода);
	КонецЕсли;

	Форма.Заголовок = ЗаголовокОтчета;

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

&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеФормой(Форма)

	Отчет    = Форма.Отчет;
	Элементы = Форма.Элементы;

	Элементы.ДополнительныеЛистыЗаТекущийПериод.Доступность = Отчет.ФормироватьДополнительныеЛисты;
	Элементы.ВыводитьТолькоДопЛисты.Доступность             = Отчет.ФормироватьДополнительныеЛисты;

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

&НаСервере
Функция СформироватьОтчетНаСервере()

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

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

&НаСервере
Процедура ЗагрузитьПодготовленныеДанные()

	РезультатВыполнения = ПолучитьИзВременногоХранилища(АдресХранилища);
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентов.ЗапомнитьРезультатФормированияОтчета(ЭтотОбъект, РезультатВыполнения, АдресХранилища);
	РазделыОтчета = ПроверкаКонтрагентов.РазделыОтчетаВФорме(ЭтотОбъект, РезультатВыполнения, Ложь);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	
	// Сверка счетов-фактур
	Если ЕстьБиблиотекаБСС Тогда
		МодульСверкаДеклараций = ОбщегоНазначения.ОбщийМодуль("СервисСверкиРасчетовСверкаДекларацийНДС");
		МодульСверкаДеклараций.ЗапомнитьРезультатФормированияОтчета(ЭтотОбъект, РезультатВыполнения);
	КонецЕсли;
	// Конец Сверка счетов-фактур
	
	Элементы.СписокВыбораЛиста.СписокВыбора.Очистить();
	НомераРазделовДопЛистов.Очистить();
	
	Если РазделыОтчета.Количество() > 0 Тогда
		Для Каждого СтрокаРаздела Из РазделыОтчета Цикл
			Элементы.СписокВыбораЛиста.СписокВыбора.Добавить(СтрокаРаздела.НомерРаздела, СтрокаРаздела.НазваниеРаздела);
			
			// Запомним номера разделов, в которых расположены доп.листы.
			// Для них не выполняется проверка контрагентов и не показываются соответствующие элементы на форме.
			Если ТипЗнч(СтрокаРаздела.ДополнительныеПараметры) = Тип("Структура")
				И СтрокаРаздела.ДополнительныеПараметры.ЭтоДопЛист Тогда
				НомераРазделовДопЛистов.Добавить(СтрокаРаздела.НомерРаздела);
			КонецЕсли;
		КонецЦикла;

		СписокВыбораЛиста = РазделыОтчета[0].НазваниеРаздела;
		Если РазделыОтчета.Количество() = 1 Тогда
			Элементы.СписокВыбораЛиста.Видимость = Ложь;
		Иначе
			Элементы.СписокВыбораЛиста.Видимость = Истина;
		КонецЕсли;
		
		РезультатВыполнения.Свойство("ОткрыватьПомощникИзМакета", ОткрыватьПомощникИзМакета);
		
		ПоказатьВыбранныйЛист(РазделыОтчета[0].НомерРаздела);
		ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "НеИспользовать");
	КонецЕсли;
	
	Если РезультатВыполнения.Свойство("СписокСообщений") Тогда
		Для Каждого Сообщение Из РезультатВыполнения.СписокСообщений Цикл
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Сообщение.Значение);
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПоказатьВыбранныйЛист(НомерРаздела)

	Результат.Очистить();

	ТекущийНомерРаздела = НомерРаздела;

	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентов.ВывестиРазделОтчета(ЭтотОбъект, Результат, ТекущийНомерРаздела);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
		
	Результат.ЧерноБелаяПечать = Истина;
	
	РассчитатьОбластьПечати();

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

&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗадания()

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

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

&НаСервереБезКонтекста
Функция ЗаданиеВыполнено(ИдентификаторЗадания)
	
	Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
	
КонецФункции

&НаСервере
Процедура ВычислитьСуммуВыделенныхЯчеекТабличногоДокументаВКонтекстеНаСервере()
	
	ПолеСумма = БухгалтерскиеОтчетыВызовСервера.ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(
		Результат, КэшВыделеннойОбласти);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РезультатПриАктивизацииПодключаемый()
	
	НеобходимоВычислятьНаСервере = Ложь;
	БухгалтерскиеОтчетыКлиент.ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(
		ПолеСумма, Результат, Элементы.Результат, КэшВыделеннойОбласти, НеобходимоВычислятьНаСервере);
	
	Если НеобходимоВычислятьНаСервере Тогда
		ВычислитьСуммуВыделенныхЯчеекТабличногоДокументаВКонтекстеНаСервере();
	КонецЕсли;
	
	ОтключитьОбработчикОжидания("Подключаемый_РезультатПриАктивизацииПодключаемый");
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ВыборСчетФактурыЗавершение(ЭлементВыбора, ДополнительныеПараметры) Экспорт
	
	Если ЭлементВыбора <> Неопределено Тогда
		ПоказатьЗначение( , ЭлементВыбора.Значение);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаСервере
Функция ПодготовитьПараметрыОтчета(ЭтоПервоеФормированиеОтчета) Экспорт

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

&НаСервере
Процедура РассчитатьОбластьПечати()

	ПерваяСтрока = 1;
	
	Если ОткрыватьПомощникИзМакета Тогда
		ПерваяСтрока = ПерваяСтрока + 1;
	КонецЕсли;
	
	Результат.ОбластьПечати = Результат.Область(ПерваяСтрока,1,Результат.ВысотаТаблицы, Результат.ШиринаТаблицы);

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

#Область ПроверкаКонтрагентов

// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
	ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
&НаСервере
Процедура ПроверитьКонтрагентов() Экспорт
	
	ПараметрыОтчета = ПодготовитьПараметрыОтчета(Ложь);
	ПроверкаКонтрагентов.ПроверитьКонтрагентовВОтчете(ЭтотОбъект, ПараметрыОтчета);
	
КонецПроцедуры
// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВОтчете(ЭтотОбъект, Результат, Неопределено, ТекущийНомерРаздела);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
КонецПроцедуры
// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

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

&НаСервере
Процедура ПереключитьРежимОтображенияОтчета()
	
	// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	ПроверкаКонтрагентов.ПереключитьРежимОтображенияРазделаОтчета(ЭтотОбъект, Результат, ТекущийНомерРаздела);
	// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
	
КонецПроцедуры

// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

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

#Область СверкаСчетовФактур

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

&НаКлиенте
Процедура ЗакрытьПанельСверки(Команда)
	
	Если ЕстьБиблиотекаБСС Тогда
		МодульСверкаДекларацийКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисСверкиРасчетовСверкаДекларацийНДСКлиент");
		МодульСверкаДекларацийКлиент.ЗакрытьПанельСверки(ЭтотОбъект);
	КонецЕсли;

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

&НаСервере
Процедура ТекстРасхожденияНажатиеНаСервере()

	Если ЕстьБиблиотекаБСС Тогда
		ДопЛист = ЭтотОбъект.НомераРазделовДопЛистов.НайтиПоЗначению(ЭтотОбъект.ТекущийНомерРаздела) <> Неопределено;
		МодульСверкаДеклараций = ОбщегоНазначения.ОбщийМодуль("СервисСверкиРасчетовСверкаДекларацийНДС");
		Если ДопЛист Тогда
			МодульСверкаДеклараций.ОткрытьДокументыСРасхождениями(ЭтотОбъект, ДопЛист);
		Иначе
			МодульСверкаДеклараций.ОткрытьДокументыСРасхождениями(ЭтотОбъект);
		КонецЕсли;
	КонецЕсли;

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

&НаКлиенте
Процедура ТекстРасхожденияНажатие(Элемент)
	ТекстРасхожденияНажатиеНаСервере();
КонецПроцедуры

&НаСервере
Процедура ТекстКнигаПокупокНажатиеНаСервере()
	
	Если ЕстьБиблиотекаБСС Тогда
		МодульСверкаДеклараций = ОбщегоНазначения.ОбщийМодуль("СервисСверкиРасчетовСверкаДекларацийНДС");
		МодульСверкаДеклараций.ОтобразитьВсюКнигу(ЭтотОбъект);
	КонецЕсли;

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

&НаКлиенте
Процедура ТекстКнигаПокупокНажатие(Элемент)
	ТекстКнигаПокупокНажатиеНаСервере();
КонецПроцедуры

&НаСервере
Процедура ТекстНеОтраженоНажатиеНаСервере()
	
	Если ЕстьБиблиотекаБСС Тогда
		ДопЛист = ЭтотОбъект.НомераРазделовДопЛистов.НайтиПоЗначению(ЭтотОбъект.ТекущийНомерРаздела) <> Неопределено;
		МодульСверкаДеклараций = ОбщегоНазначения.ОбщийМодуль("СервисСверкиРасчетовСверкаДекларацийНДС");
		Если ДопЛист Тогда
			МодульСверкаДеклараций.ОткрытьДокументыБезРасхождений(ЭтотОбъект, "ТаблицаНетУКонтрагентаДопЛист", ДопЛист);
		Иначе
			МодульСверкаДеклараций.ОткрытьДокументыБезРасхождений(ЭтотОбъект, "ТаблицаНетУКонтрагента", ДопЛист);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ТекстНеОтраженоНажатие(Элемент)
	ТекстНеОтраженоНажатиеНаСервере();
КонецПроцедуры

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

&НаКлиенте
Процедура ТекстНеСверялисьНажатие(Элемент)
	ТекстНеСверялисьНажатиеНаСервере();
КонецПроцедуры

&НаСервере
Процедура ТекстБезРасхожденийНажатиеНаСервере()

	Если ЕстьБиблиотекаБСС Тогда
		ДопЛист = ЭтотОбъект.НомераРазделовДопЛистов.НайтиПоЗначению(ЭтотОбъект.ТекущийНомерРаздела) <> Неопределено;
		МодульСверкаДеклараций = ОбщегоНазначения.ОбщийМодуль("СервисСверкиРасчетовСверкаДекларацийНДС");
		Если ДопЛист Тогда
			МодульСверкаДеклараций.ОткрытьДокументыБезРасхождений(ЭтотОбъект, "ТаблицаСверилиБезОшибокДопЛист", ДопЛист);
		Иначе
			МодульСверкаДеклараций.ОткрытьДокументыБезРасхождений(ЭтотОбъект, "ТаблицаСверилиБезОшибок", ДопЛист);
		КонецЕсли;
	КонецЕсли;

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

&НаКлиенте
Процедура ТекстБезРасхожденийНажатие(Элемент)
	ТекстБезРасхожденийНажатиеНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура НеПодключенаСверкаТекстОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	Если НавигационнаяСсылкаФорматированнойСтроки = "ПодключитьсяКСервисуСверки" Тогда
		СтандартнаяОбработка = Ложь;
		ОткрытьФорму("ОбщаяФорма.ИнтеграцияССервисомСверкиРасчетов");
	КонецЕсли;

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

&НаКлиенте
Процедура КартинкаЗакрытьБаннерНажатие(Элемент)
	Элементы.ГруппаНеПодключенаСверка.Видимость = Ложь;
КонецПроцедуры

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

&НаСервереБезКонтекста
Процедура РазворачиватьРезультатыСверкиДекларацийСразуПриИзмененииНаСервере(РазворачиватьДанныеСверки)
	ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(
		"РазворачиватьРезультатыСверкиДекларацийСразу",
		"КнигаПокупок",
		РазворачиватьДанныеСверки,,,Истина);
КонецПроцедуры

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

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

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