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