Наличие счетов-фактур / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

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

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

// Формирует текст, выводимый в заголовке отчета.
//
// Параметры:
//  ПараметрыОтчета - Структура - см. ПустыеПараметрыКомпоновкиОтчета().
//
// Возвращаемое значение:
//  Строка - текст заголовка с учетом периода.
//
Функция ПолучитьТекстЗаголовка(ПараметрыОтчета) Экспорт 
	
	Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		НСтр("ru = 'Наличие счетов-фактур полученных%1'"),
		БухгалтерскиеОтчетыКлиентСервер.ПолучитьПредставлениеПериода(ПараметрыОтчета.НачалоПериода, ПараметрыОтчета.КонецПериода));
		
КонецФункции

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

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

// В процедуре можно изменить табличный документ после вывода в него данных.
//
// Параметры:
//  ПараметрыОтчета - Структура - см. ПустыеПараметрыКомпоновкиОтчета()
//  Результат    - ТабличныйДокумент - сформированный отчет.
//
Процедура ПослеВыводаРезультата(ПараметрыОтчета, Результат) Экспорт
	
	БухгалтерскиеОтчетыВызовСервера.ОбработкаРезультатаОтчета(ПараметрыОтчета.ИдентификаторОтчета, Результат);
	
КонецПроцедуры

#Область ДляВызоваИзДругихПодсистем

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

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

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

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

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

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

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

#КонецЕсли

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