#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
Процедура НастроитьВариантыОтчета(Настройки) Экспорт
ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.КнигаПокупок);
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "");
ОписаниеВарианта.Описание = НСтр("ru = 'Формирование книги покупок после выполнения регламентных операций закрытия периода по НДС.'");
ОписаниеВарианта.НастройкиДляПоиска.НаименованияПолей = НСтр("ru = 'Покупатель
|ИНН
|КПП
|Покупка за период
|Дата и номер счета-фактуры
|Номер и дата исправления счета-фактуры
|Номер и дата корректировочного счета-фактуры
|Наименование продавца
|Страна происхождения товара
|НДС'");
ОписаниеВарианта.НастройкиДляПоиска.НаименованияПараметровИОтборов = НСтр("ru = 'Период
|Организация
|Контрагент
|Выводить покупателей'");
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Процедура СформироватьОтчет(Знач СтруктураПараметров, АдресХранилища) Экспорт
ПодготовитьОтчет(СтруктураПараметров);
ПоместитьВоВременноеХранилище(СтруктураПараметров, АдресХранилища);
КонецПроцедуры
Процедура ПодготовитьОтчет(СтруктураПараметров) Экспорт
Если ЗначениеЗаполнено(СтруктураПараметров.КонтрагентДляОтбора)
ИЛИ СтруктураПараметров.ВыводитьПокупателейПоАвансам
ИЛИ СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
СтандартнаяФорма = Ложь;
Иначе
СтандартнаяФорма = УчетНДСПереопределяемый.ПериодОтчетаСоответствуетНалоговому(
СтруктураПараметров.Организация, СтруктураПараметров.НачалоПериода, СтруктураПараметров.КонецПериода);
КонецЕсли;
СтруктураПараметров.Вставить("СформироватьОтчетПоСтандартнойФорме", СтандартнаяФорма);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СписокОрганизацийОтбора = СтруктураПараметров.СписокОрганизаций;
ИначеЕсли НЕ СтруктураПараметров.ВключатьОбособленныеПодразделения Тогда
СписокОрганизацийОтбора = Новый СписокЗначений;
СписокОрганизацийОтбора.Добавить(СтруктураПараметров.Организация);
Иначе
СписокОрганизацийОтбора = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьСписокОбособленныхПодразделений(
СтруктураПараметров.Организация);
КонецЕсли;
СписокДоступныхОрганизаций = ОбщегоНазначенияБПВызовСервераПовтИсп.ВсеОрганизацииДанныеКоторыхДоступныПоRLS(ложь);
СписокОрганизаций = Новый СписокЗначений;
Для Каждого ОрганизацияСписка Из СписокОрганизацийОтбора Цикл
Если СписокДоступныхОрганизаций.Найти(ОрганизацияСписка.Значение) <> Неопределено Тогда
СписокОрганизаций.Добавить(ОрганизацияСписка.Значение);
КонецЕсли;
КонецЦикла;
СтруктураПараметров.Вставить("СписокОрганизаций", СписокОрганизаций);
СтруктураПараметров.Вставить("ЗаписьДополнительногоЛиста", Ложь);
СтруктураПараметров.Вставить("СчетчикСегментов", 0);
ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(СтруктураПараметров.КонецПериода);
СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137", ВерсияПостановленияНДС1137);
Если НЕ СтруктураПараметров.Свойство("ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС") Тогда
СтруктураПараметров.Вставить("ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС",
УчетНДС.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС());
КонецЕсли;
Если НЕ СтруктураПараметров.Свойство("ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж") Тогда
СтруктураПараметров.Вставить("ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж", Ложь);
КонецЕсли;
ИнициализироватьТаблицыДанныхНДС(СтруктураПараметров);
СтруктураПараметров.Вставить("ОткрыватьПомощникИзМакета");
СтруктураПараметров.ОткрыватьПомощникИзМакета =
УчетНДСПереопределяемый.ОткрыватьПомощникИзМакета(СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода)
И НЕ СтруктураПараметров.ЗаполнениеДекларации
И НЕ СтруктураПараметров.ЗаполнениеДокумента;
СписокСообщений = Новый СписокЗначений();
Если НЕ (СтруктураПараметров.ВыводитьТолькоДопЛисты И СтруктураПараметров.ФормироватьДополнительныеЛисты) Тогда
Результат = Неопределено;
ОпределитьПараметрыФормированияОтчета(СтруктураПараметров);
Если ПроверкаКонтрагентов.ФормироватьОтчетСтандартнымСпособом(СтруктураПараметров, Результат) Тогда
Результат = ЗаписиКнигиПокупок(СтруктураПараметров);
ПроверкаКонтрагентов.ЗапомнитьДанныеОтчета(СтруктураПараметров, Результат);
КонецЕсли;
СформироватьОсновнойРаздел(СтруктураПараметров, Результат);
КонецЕсли;
СтруктураПараметров = ПроверитьНаличиеДопЛистовКнигиПокупок(СтруктураПараметров);
Если СтруктураПараметров.ДополнительныеЛистыЗаТекущийПериод ИЛИ НЕ СтруктураПараметров.ФормироватьДополнительныеЛисты Тогда
Если СтруктураПараметров.КорректируемыйПериод Тогда
СписокСообщений.Добавить(НСтр("ru = 'В указанном периоде отчета были внесены изменения в предшествующие налоговые периоды.
|Дополнительные листы по корректируемым налоговым периодам, в которые внесены изменения, можно построить в текущем отчете.
|Для этого необходимо взвести флажок ""Формировать дополнительные листы"" и выбрать значение ""за корректируемый период"".'"));
КонецЕсли;
Если СтруктураПараметров.ФормироватьДополнительныеЛисты И НЕ СтруктураПараметров.ТекущийПериод Тогда
СписокСообщений.Добавить(НСтр("ru = 'В указанном периоде отчета не вносились изменения в последующих налоговых периодах.
|Построение дополнительных листов за текущий налоговый период не требуется.'"));
КонецЕсли;
КонецЕсли;
Если НЕ СтруктураПараметров.ДополнительныеЛистыЗаТекущийПериод ИЛИ НЕ СтруктураПараметров.ФормироватьДополнительныеЛисты Тогда
Если СтруктураПараметров.ТекущийПериод Тогда
СписокСообщений.Добавить(НСтр("ru = 'В указанном периоде отчета есть изменения, внесенные в последующих налоговых периодах.
|Дополнительные листы по текущему налоговому периоду можно построить в текущем отчете.
|Для этого необходимо взвести флажок ""Формировать дополнительные листы"" и выбрать значение ""за текущий период"".'"));
КонецЕсли;
Если СтруктураПараметров.ФормироватьДополнительныеЛисты И НЕ СтруктураПараметров.КорректируемыйПериод Тогда
СписокСообщений.Добавить(НСтр("ru = 'В указанном периоде отчета не вносились изменения в предыдущие налоговые периоды.
|Построение дополнительных листов за корректируемый налоговый период не требуется.'"));
КонецЕсли;
КонецЕсли;
Если СтруктураПараметров.ФормироватьДополнительныеЛисты Тогда
СтруктураПараметров.ЗаписьДополнительногоЛиста = Истина;
ОпределитьПараметрыФормированияОтчета(СтруктураПараметров);
Результат = ЗаписиКнигиПокупок(СтруктураПараметров);
СформироватьДополнительныеЛисты(СтруктураПараметров, Результат);
КонецЕсли;
Если НЕ СтруктураПараметров.ДанныеДляПроверкиКонтрагентов.Свойство("ВыводитьТолькоНекорректныхКонтрагентов")
ИЛИ НЕ СтруктураПараметров.ДанныеДляПроверкиКонтрагентов.ВыводитьТолькоНекорректныхКонтрагентов Тогда
СтруктураПараметров.МенеджерВременныхТаблиц.Закрыть();
КонецЕсли;
СтруктураПараметров.Вставить("СписокСообщений", СписокСообщений);
КонецПроцедуры
#Область ПолучениеЗаписей
Функция ТекстЗапросаВычетыНеплательшикаНДС(Запрос, СтруктураПараметров) Экспорт
СтруктураПараметров.Вставить("ВыводитьПокупателейПоАвансам", СтруктураПараметров.ВыводитьПродавцовПоАвансам);
УстановитьПараметрыЗапросаКнигиПокупок(Запрос, СтруктураПараметров);
Возврат ТекстЗапросаЗаписиРегистраНДСПокупки(СтруктураПараметров);
КонецФункции
Функция ПолучитьИтогиЗаПериодКнигаПокупок(СтруктураПараметров) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЕСТЬNULL(СУММА(ИтогиКнигиПокупок.ВсегоПокупок), 0) КАК ВсегоПокупок,
| ЕСТЬNULL(СУММА(ИтогиКнигиПокупок.СуммаБезНДС18), 0) КАК СуммаБезНДС18,
| ЕСТЬNULL(СУММА(ИтогиКнигиПокупок.НДС18), 0) КАК НДС18,
| ЕСТЬNULL(СУММА(ИтогиКнигиПокупок.СуммаБезНДС10), 0) КАК СуммаБезНДС10,
| ЕСТЬNULL(СУММА(ИтогиКнигиПокупок.НДС10), 0) КАК НДС10,
| ЕСТЬNULL(СУММА(ИтогиКнигиПокупок.НДС0), 0) КАК НДС0,
| ЕСТЬNULL(СУММА(ИтогиКнигиПокупок.СуммаСовсемБезНДС), 0) КАК СуммаСовсемБезНДС,
| ЕСТЬNULL(СУММА(ИтогиКнигиПокупок.НДС), 0) КАК НДС
|ИЗ
| (ВЫБРАТЬ
| НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПокупокОбороты.НДСОборот КАК ВсегоПокупок,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС В (&СтавкиНДС18)
| И НЕ НДСЗаписиКнигиПокупокОбороты.ВидЦенности В (&ВидыЦенностей_Авансы)
| ТОГДА НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДС18,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС В (&СтавкиНДС18)
| ТОГДА НДСЗаписиКнигиПокупокОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК НДС18,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС В (&СтавкиНДС10)
| И НЕ НДСЗаписиКнигиПокупокОбороты.ВидЦенности В (&ВидыЦенностей_Авансы)
| ТОГДА НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДС10,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС В (&СтавкиНДС10)
| ТОГДА НДСЗаписиКнигиПокупокОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК НДС10,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС = &СтавкаНДС0
| ТОГДА НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПокупокОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК НДС0,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС = &СтавкаБезНДС
| ТОГДА НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПокупокОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаСовсемБезНДС,
| НДСЗаписиКнигиПокупокОбороты.НДСОборот КАК НДС
| ИЗ
| РегистрНакопления.НДСЗаписиКнигиПокупок.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Период,
| Организация В (&Организация)
| И НЕ ЗаписьДополнительногоЛиста) КАК НДСЗаписиКнигиПокупокОбороты
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПокупокОбороты.НДСОборот,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС В (&СтавкиНДС18)
| И НЕ НДСЗаписиКнигиПокупокОбороты.ВидЦенности В (&ВидыЦенностей_Авансы)
| ТОГДА НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС В (&СтавкиНДС18)
| ТОГДА НДСЗаписиКнигиПокупокОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС В (&СтавкиНДС10)
| И НЕ НДСЗаписиКнигиПокупокОбороты.ВидЦенности В (&ВидыЦенностей_Авансы)
| ТОГДА НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС В (&СтавкиНДС10)
| ТОГДА НДСЗаписиКнигиПокупокОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС = &СтавкаНДС0
| ТОГДА НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПокупокОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупокОбороты.СтавкаНДС = &СтавкаБезНДС
| ТОГДА НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПокупокОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| НДСЗаписиКнигиПокупокОбороты.НДСОборот
| ИЗ
| РегистрНакопления.НДСЗаписиКнигиПокупок.Обороты(
| &НачалоПериода,
| &МоментФормированияДопЛиста,
| Период,
| Организация В (&Организация)
| И ЗаписьДополнительногоЛиста
| И КорректируемыйПериод >= &НачалоПериода
| И КорректируемыйПериод <= &КонецПериода) КАК НДСЗаписиКнигиПокупокОбороты) КАК ИтогиКнигиПокупок";
Запрос.УстановитьПараметр("НачалоПериода", СтруктураПараметров.НалоговыйПериод);
Запрос.УстановитьПараметр("КонецПериода", КонецДня(СтруктураПараметров.КонецНалоговогоПериода));
Запрос.УстановитьПараметр("МоментФормированияДопЛиста", Новый Граница(НачалоДня(СтруктураПараметров.ДатаФормированияДопЛиста), ВидГраницы.Исключая));
Запрос.УстановитьПараметр("Организация", СтруктураПараметров.СписокОрганизаций);
СтавкиНДС18 = Новый Массив();
СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18);
СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18_118);
СтавкиНДС10 = Новый Массив();
СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10);
СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10_110);
СтавкаНДС0 = Перечисления.СтавкиНДС.НДС0;
СтавкаБезНДС = Перечисления.СтавкиНДС.БезНДС;
Запрос.УстановитьПараметр("СтавкиНДС18", СтавкиНДС18);
Запрос.УстановитьПараметр("СтавкиНДС10", СтавкиНДС10);
Запрос.УстановитьПараметр("СтавкаНДС0", СтавкаНДС0);
Запрос.УстановитьПараметр("СтавкаБезНДС", СтавкаБезНДС);
ВидыЦенностей_Авансы = Новый Массив;
ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.АвансыПолученныеНалоговыйАгент);
ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученныхНалоговыйАгент);
ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученных);
ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.АвансыВыданные);
ВидыЦенностей_Авансы.Добавить(Перечисления.ВидыЦенностей.АвансыВыданныеНалоговыйАгент);
Запрос.УстановитьПараметр("ВидыЦенностей_Авансы", ВидыЦенностей_Авансы);
ИтогЗаПериод = Запрос.Выполнить();
Если НЕ ИтогЗаПериод.Пустой() Тогда
Возврат ИтогЗаПериод.Выгрузить()[0];
Иначе
ИтогЗаПериод = Новый Структура;
ИтогЗаПериод.Вставить("ВсегоПокупок", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
ИтогЗаПериод.Вставить("СуммаБезНДС10", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
ИтогЗаПериод.Вставить("НДС10", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
ИтогЗаПериод.Вставить("СуммаБезНДС18", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
ИтогЗаПериод.Вставить("НДС18", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
ИтогЗаПериод.Вставить("НДС0", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
ИтогЗаПериод.Вставить("НДС", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
ИтогЗаПериод.Вставить("СуммаСовсемБезНДС", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2));
Возврат ИтогЗаПериод;
КонецЕсли;
КонецФункции
#КонецОбласти
Функция ПроверитьНаличиеДопЛистовКнигиПокупок(СтруктураПараметров) Экспорт
УстановитьПривилегированныйРежим(Истина);
СтруктураПараметров.Вставить("ТекущийПериод", Ложь);
СтруктураПараметров.Вставить("КорректируемыйПериод", Ложь);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| 1 КАК Порядок,
| НДСЗаписиКнигиПокупокОбороты.СчетФактура КАК СчетФактура,
| НДСЗаписиКнигиПокупокОбороты.Поставщик КАК Поставщик,
| НДСЗаписиКнигиПокупокОбороты.СтавкаНДС КАК СтавкаНДС,
| ВЫБОР
| КОГДА ЕСТЬNULL(СУММА(НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПокупокОбороты.НДСОборот), 0) <> 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЕстьДопЛисты,
| НДСЗаписиКнигиПокупокОбороты.КорректируемыйПериод КАК КорректируемыйПериод,
| НДСЗаписиКнигиПокупокОбороты.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура
|ИЗ
| РегистрНакопления.НДСЗаписиКнигиПокупок.Обороты(
| &НачалоПериода,
| &КонецПериода,
| День,
| Организация В (&Организация)
| И ЗаписьДополнительногоЛиста
| И КорректируемыйПериод >= &НачалоПримененияПостановления1137
| И &ДополнительноеУсловие) КАК НДСЗаписиКнигиПокупокОбороты
|
|СГРУППИРОВАТЬ ПО
| НДСЗаписиКнигиПокупокОбороты.СчетФактура,
| НДСЗаписиКнигиПокупокОбороты.Поставщик,
| НДСЗаписиКнигиПокупокОбороты.СтавкаНДС,
| НДСЗаписиКнигиПокупокОбороты.КорректируемыйПериод,
| НДСЗаписиКнигиПокупокОбороты.Период,
| НДСЗаписиКнигиПокупокОбороты.ИсправленныйСчетФактура
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2,
| НДСЗаписиКнигиПокупокОбороты.СчетФактура,
| НДСЗаписиКнигиПокупокОбороты.Поставщик,
| НДСЗаписиКнигиПокупокОбороты.СтавкаНДС,
| ВЫБОР
| КОГДА ЕСТЬNULL(СУММА(НДСЗаписиКнигиПокупокОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПокупокОбороты.НДСОборот), 0) <> 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| &НачалоПериода,
| НДСЗаписиКнигиПокупокОбороты.ИсправленныйСчетФактура
|ИЗ
| РегистрНакопления.НДСЗаписиКнигиПокупок.Обороты(
| &НачалоПериода,
| ,
| День,
| Организация В (&Организация)
| И ЗаписьДополнительногоЛиста
| И КорректируемыйПериод >= &НачалоПериода
| И КорректируемыйПериод <= &КонецПериода
| И &ДополнительноеУсловие) КАК НДСЗаписиКнигиПокупокОбороты
|
|СГРУППИРОВАТЬ ПО
| НДСЗаписиКнигиПокупокОбороты.СчетФактура,
| НДСЗаписиКнигиПокупокОбороты.Поставщик,
| НДСЗаписиКнигиПокупокОбороты.СтавкаНДС,
| НДСЗаписиКнигиПокупокОбороты.Период,
| НДСЗаписиКнигиПокупокОбороты.ИсправленныйСчетФактура";
Запрос.УстановитьПараметр("НачалоПериода", СтруктураПараметров.НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецДня(СтруктураПараметров.КонецПериода));
Запрос.УстановитьПараметр("Организация", СтруктураПараметров.СписокОрганизаций);
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгентВсеВиды",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент(, Истина));
Запрос.УстановитьПараметр("НачалоПримененияПостановления1137",
УчетНДСПереопределяемый.ПолучитьДатуНачалаДействияПостановления1137());
ДатаПроверкиПараметровУчета = КонецДня(СтруктураПараметров.КонецПериода);
СтруктураПараметров.Вставить("ПлательщикНДС",
УчетнаяПолитика.ПлательщикНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета)
ИЛИ УчетнаяПолитика.ПлательщикНДСПрименяющийУСН(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
ДополнительноеУсловие = ДополнительноеУсловиеЗапроса(
СтруктураПараметров,
Истина);
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"&ДополнительноеУсловие",
ДополнительноеУсловие);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат СтруктураПараметров;
КонецЕсли;
Результат = Результат.Выгрузить();
Для Каждого СтрокаРезультата Из Результат Цикл
Если СтрокаРезультата.Порядок = 1 И СтрокаРезультата.ЕстьДопЛисты Тогда
СтруктураПараметров.КорректируемыйПериод = Истина;
ИначеЕсли СтрокаРезультата.ЕстьДопЛисты Тогда
СтруктураПараметров.ТекущийПериод = Истина;
КонецЕсли;
Если СтруктураПараметров.КорректируемыйПериод И СтруктураПараметров.ТекущийПериод Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Возврат СтруктураПараметров;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ОпределитьПараметрыФормированияОтчета(СтруктураПараметров)
ДатаПроверкиПараметровУчета = СтруктураПараметров.КонецПериода;
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Если СтруктураПараметров.ЗаполнениеДокумента ИЛИ СтруктураПараметров.ЗаполнениеДекларации Тогда
ДатаПроверкиПараметровУчета = СтруктураПараметров.КонецНалоговогоПериода;
КонецЕсли;
КонецЕсли;
СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137",
УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("Постановление1137_2019",
УчетНДСПереопределяемый.ПрименяетсяПостановление15(ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("ПлательщикНДС",
УчетнаяПолитика.ПлательщикНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета)
ИЛИ УчетнаяПолитика.ПлательщикНДСПрименяющийУСН(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
КонецПроцедуры
Процедура СформироватьОсновнойРаздел(СтруктураПараметров, Результат);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Очистить();
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КнигаПокупок";
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ЧерноБелаяПечать = Истина;
Если СтруктураПараметров.ОткрыватьПомощникИзМакета Тогда
ТабличныйДокумент.Вывести(УчетНДСПереопределяемый.ПолучитьМакетОткрытияПомощника(
СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода));
КонецЕсли;
СтруктураСекций = Новый Структура();
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
Макет = ПолучитьОбщийМакет("КнигаПокупок534");
СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 4 Тогда
Макет = ПолучитьОбщийМакет("КнигаПокупок981");
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 3 Тогда
Если СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ПравилаЗаполнения = "2017Кв1" Тогда
Макет = ПолучитьОбщийМакет("КнигаПокупок1137_2017");
Иначе
Макет = ПолучитьОбщийМакет("КнигаПокупок735");
КонецЕсли;
Иначе
Макет = ПолучитьОбщийМакет("КнигаПокупок1137");
КонецЕсли;
НазваниеРаздела = Нстр("ru='Основной раздел'");
ОбластьСтрокиДляПовтора = Макет.ПолучитьОбласть("СтрокиДляПовтора");
СекцияВсего = Макет.ПолучитьОбласть("Всего");
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураСекций.Вставить("ШапкаРаздел8", Макет.ПолучитьОбласть("ШапкаРаздел8"));
СтруктураСекций.Вставить("ДекларацияИтоги", Макет.ПолучитьОбласть("ДекларацияИтоги"));
ОбластьСтрокиДляПовтора.Область("НомераГрафКнига").Видимость = Ложь;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
ОбластьСтрокиДляПовтора.Область("НомераГрафДекларация81").Видимость = Ложь;
КонецЕсли;
СтруктураСекций.Вставить("СтрокиДляПовтора", ОбластьСтрокиДляПовтора);
Иначе
Если ОбластьСтрокиДляПовтора.Области.Найти("НомераГрафДекларация") <> Неопределено Тогда
ОбластьСтрокиДляПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
КонецЕсли;
СтруктураСекций.Вставить("СтрокиДляПовтора", ОбластьСтрокиДляПовтора);
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
Секция = Макет.ПолучитьОбласть("ШапкаИнформация");
ТабличныйДокумент.Вывести(Секция);
КонецЕсли;
СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода, , , , Истина);
НазваниеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм");
ИННОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "ИНН", Ложь);
КППОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "КПП", Ложь);
Секция = Макет.ПолучитьОбласть("Шапка");
Если Секция.Области.Найти("НомераГрафДекларация") <> Неопределено Тогда
Секция.Область("НомераГрафДекларация").Видимость = Ложь;
КонецЕсли;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
СекцияЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ТабличныйДокумент.Вывести(СекцияЗаголовок);
Секция.Область("Период81").Видимость = Ложь;
Секция.Область("НомераГрафДекларация81").Видимость = Ложь;
КонецЕсли;
Секция.Параметры.УстановленныйОтбор = "";
Секция.Параметры.НачалоПериода = Формат(СтруктураПараметров.НачалоПериода, "ДФ=dd.MM.yyyy");
Секция.Параметры.КонецПериода = Формат(СтруктураПараметров.КонецПериода, "ДФ=dd.MM.yyyy");
Секция.Параметры.НазваниеОрганизации = НазваниеОрганизации;
Секция.Параметры.ИННКППОрганизации = ИННОрганизации
+ ?(НЕ ЗначениеЗаполнено(КППОрганизации), "", ("/" + КППОрганизации));
Если НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме И СтруктураПараметров.ОтбиратьПоКонтрагенту Тогда
Если ОбщегоНазначения.ОбъектЯвляетсяГруппой(СтруктураПараметров.КонтрагентДляОтбора) Тогда
НадписьОтбор = НСтр("ru='Отбор: Контрагент в группе %1'");
Иначе
НадписьОтбор = НСтр("ru='Отбор: Контрагент = %1'");
КонецЕсли;
Секция.Параметры.УстановленныйОтбор = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НадписьОтбор, СтруктураПараметров.КонтрагентДляОтбора);
КонецЕсли;
ТабличныйДокумент.Вывести(Секция);
КонецЕсли;
Если Результат.Пустой() Тогда
СтруктураПараметров.СчетчикСегментов = СтруктураПараметров.СчетчикСегментов + 1;
ТабличныйДокумент.Вывести(СекцияВсего);
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме
И НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
КонецЕсли;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, НазваниеРаздела, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);
Возврат;
КонецЕсли;
СтруктураСекций.Вставить("СекцияСтрока", Макет.ПолучитьОбласть("Строка"));
Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
СтруктураСекций.Вставить("СекцияКонтрагент", Макет.ПолучитьОбласть("Контрагент"));
СтруктураСекций.Вставить("СекцияВсегоКонтрагент", Макет.ПолучитьОбласть("ВсегоКонтрагент"));
КонецЕсли;
СтрокаИтогПоОрганизации = УчетНДС.НоваяСтрокаИтоговКнигиПокупок();
ПреобразоватьЗаписиКнигиПокупок(
СтруктураПараметров,
Результат,
ТабличныйДокумент,
СтрокаИтогПоОрганизации,
СтруктураСекций,
?(СтруктураПараметров.Свойство("ТабличнаяЧасть"),СтруктураПараметров.ТабличнаяЧасть, Неопределено));
Если НЕ СтруктураПараметров.ЗаполнениеДекларации
И НЕ СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.Счетчик = 0 Тогда
ТабличныйДокумент.Вывести(СекцияВсего);
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме
И НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
КонецЕсли;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, НазваниеРаздела, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);
Возврат;
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
СекцияВсего.Параметры.Заполнить(СтрокаИтогПоОрганизации);
ТабличныйДокумент.Вывести(СекцияВсего);
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.ПовторятьПриПечатиСтроки = ТабличныйДокумент.Область("СтрокиДляПовтора");
КонецЕсли;
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме
И НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
КонецЕсли;
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ИмяРаздела = "Раздел8";
Если СтруктураПараметров.СчетчикСтрокТекущегоСегмента <> 0 Тогда
ПерваяСтрокаСегмента = СтруктураПараметров.Счетчик - СтруктураПараметров.СчетчикСтрокТекущегоСегмента + 1;
КонецЕсли;
ИтогиРаздел8 = Новый Структура("СумНДСВсКПк");
ИтогиРаздел8.СумНДСВсКПк = СтрокаИтогПоОрганизации.НДС;
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
ОбщиеСведения = Новый Структура("СумНДСВыч");
ОбщиеСведения.СумНДСВыч = СтрокаИтогПоОрганизации.НДС;
СтруктураПараметров.ОбщиеСведения = ОбщиеСведения;
КонецЕсли;
Если СтруктураПараметров.ЗаполнениеДокумента Тогда
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, НазваниеРаздела, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);
ИначеЕсли НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
Если СтруктураПараметров.СчетчикСтрокТекущегоСегмента <> 0 Тогда
Если СтруктураПараметров.СчетчикСегментов < 2 Тогда
ЗаголовокЛиста = НазваниеРаздела;
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СтруктураПараметров.СчетчикСегментов);
КонецЕсли;
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);
ИначеЕсли СтруктураПараметров.Счетчик <> 0 Тогда
РазделыОтчета = ПроверкаКонтрагентов.РазделыОтчета(СтруктураПараметров);
Если РазделыОтчета.Количество() > 0 Тогда
РазделОтчета = РазделыОтчета[РазделыОтчета.Количество()-1];
ТабличныйДокумент = РазделОтчета.ХранилищеОтчета.Получить();
ТабличныйДокумент.Вывести(СекцияВсего);
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
КонецЕсли;
РазделОтчета.ХранилищеОтчета = Новый ХранилищеЗначения(ТабличныйДокумент, Новый СжатиеДанных(9));
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура СформироватьДополнительныеЛисты(СтруктураПараметров, Результат)
Перем ТабличныйДокумент;
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
НомерОтображаемогоПериода = 0;
ИтогПоПериодам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
СтруктураПараметров.Вставить("СчетчикСтрокДопЛиста", 0);
СтруктураПараметров.Вставить("СчетчикСтрокТекущегоСегмента", 0);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ИтогиРаздел81 = Новый Структура("СумНДСИтКПк,СумНДСИтП1Р8");
ПараметрыПолученияИтогов = Новый Структура;
ПараметрыПолученияИтогов.Вставить("НалоговыйПериод", НачалоКвартала(СтруктураПараметров.НачалоПериода));
ПараметрыПолученияИтогов.Вставить("КонецНалоговогоПериода", КонецКвартала(СтруктураПараметров.КонецНалоговогоПериода));
ПараметрыПолученияИтогов.Вставить("ДатаФормированияДопЛиста", НачалоКвартала(СтруктураПараметров.НачалоПериода));
ПараметрыПолученияИтогов.Вставить("СписокОрганизаций", СтруктураПараметров.СписокОрганизаций);
ИтогПоКнигеПокупок = ПолучитьИтогиЗаПериодКнигаПокупок(ПараметрыПолученияИтогов);
ИтогиРаздел81.СумНДСИтКПк = ИтогПоКнигеПокупок.НДС;
КонецЕсли;
ДанныеОтчета = Новый Массив;
Пока ИтогПоПериодам.Следующий() Цикл;
НомерЛиста = 0;
НомерОтображаемогоПериода = НомерОтображаемогоПериода + 1;
НалоговыйПериод = ПредставлениеПериода(
ИтогПоПериодам.НалоговыйПериод, КонецДня(ИтогПоПериодам.КонецНалоговогоПериода), "ФП = Истина");
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КнигаПокупокДопЛист";
Если СтруктураПараметров.ОткрыватьПомощникИзМакета Тогда
ТабличныйДокумент.Вывести(УчетНДСПереопределяемый.ПолучитьМакетОткрытияПомощника(
СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода));
КонецЕсли;
СтруктураПараметров.Вставить("СчетчикСегментовНалоговогоПериода", 1);
ИтогПоПериодамКорректировки = ИтогПоПериодам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоПериодамКорректировки.Следующий() Цикл
СтруктураСекций = Новый Структура();
ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(
ИтогПоПериодамКорректировки.КонецНалоговогоПериода);
СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137", ВерсияПостановленияНДС1137);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 = 1 Тогда
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПокупок1137");
СтруктураПараметров.ЗаполнениеДекларации = Ложь;
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 2 Тогда
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПокупок952");
СтруктураПараметров.ЗаполнениеДекларации = Ложь;
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 3 Тогда
Если СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ПравилаЗаполнения = "2017Кв1" Тогда
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПокупок1137_2017");
Иначе
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПокупок735");
КонецЕсли;
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 4 Тогда
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПокупок981");
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
Макет = ПолучитьОбщийМакет("КнигаПокупок534");
СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
КонецЕсли;
ОбластьСтрокиПовтора = Макет.ПолучитьОбласть("СтрокиДляПовтора");
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураСекций.Вставить("ШапкаРаздел81", Макет.ПолучитьОбласть("ШапкаРаздел81"));
СтруктураСекций.Вставить("ДекларацияИтоги", Макет.ПолучитьОбласть("ДекларацияИтоги81"));
ОбластьСтрокиПовтора.Область("НомераГрафКнига").Видимость = Ложь;
ОбластьСтрокиПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
Иначе
ОбластьСтрокиПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
ОбластьСтрокиПовтора.Область("НомераГрафДекларация81").Видимость = Ложь;
КонецЕсли;
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 >= 3 Тогда
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураСекций.Вставить("ШапкаРаздел81", Макет.ПолучитьОбласть("ШапкаРаздел81"));
СтруктураСекций.Вставить("ДекларацияИтоги", Макет.ПолучитьОбласть("ДекларацияИтоги"));
ОбластьСтрокиПовтора.Область("НомераГрафКнига").Видимость = Ложь;
Иначе
ОбластьСтрокиПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
КонецЕсли;
КонецЕсли;
СтруктураСекций.Вставить("СекцияСтрока", Макет.ПолучитьОбласть("Строка"));
СтруктураСекций.Вставить("СтрокиДляПовтора", ОбластьСтрокиПовтора);
Секция = Макет.ПолучитьОбласть("Строка");
СтрокаИтого = Макет.ПолучитьОбласть("Итого");
СтрокаВсего = Макет.ПолучитьОбласть("Всего");
Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
СекцияКонтрагент = Макет.ПолучитьОбласть("Контрагент");
СекцияВсегоКонтрагент = Макет.ПолучитьОбласть("ВсегоКонтрагент");
КонецЕсли;
ОкончаниеПредыдущегоРаздела = ТабличныйДокумент.ВысотаТаблицы;
НомерЛиста = НомерЛиста + 1;
СтруктураПараметров.Вставить("НалоговыйПериод",
?(СтруктураПараметров.ЗаполнениеДекларации, СтруктураПараметров.НачалоНалоговогоПериода, ИтогПоПериодамКорректировки.НалоговыйПериод));
СтруктураПараметров.Вставить("КонецНалоговогоПериода", КонецКвартала(ИтогПоПериодамКорректировки.КонецНалоговогоПериода));
СтруктураПараметров.Вставить("ДатаОформления", ИтогПоПериодамКорректировки.ДатаОформления);
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
УчетНДС.ВывестиШапкуДопЛиста(ТабличныйДокумент, Макет, СтруктураПараметров, НомерЛиста);
КонецЕсли;
СтруктураПараметров.ДатаФормированияДопЛиста = ИтогПоПериодамКорректировки.ДатаОформления;
ИтогЗаПериод = ПолучитьИтогиЗаПериодКнигаПокупок(СтруктураПараметров);
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
ОбщиеСведения = Новый Структура("НомерДопЛКнПок,Период,ОтчетГод,ДатаДопЛКнПок,Итого,Всего");
ОбщиеСведения.НомерДопЛКнПок = НомерЛиста;
ОбщиеСведения.Период = СтруктураПараметров.ПериодПоСКНП;
ОбщиеСведения.ОтчетГод = Строка(Формат(Год(ИтогПоПериодамКорректировки.НалоговыйПериод),"ЧГ=0"));
ОбщиеСведения.ДатаДопЛКнПок = Строка(Формат(ИтогПоПериодамКорректировки.ДатаОформления, "ДЛФ=Д"));
Итого = Новый Структура("СумНДСВыч");
Итого.СумНДСВыч = ИтогЗаПериод.НДС;
ОбщиеСведения.Итого = Итого;
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
СтрокаИтого.Параметры.Заполнить(ИтогЗаПериод);
ТабличныйДокумент.Вывести(СтрокаИтого);
Иначе
ВывестиШапкуРаздела81Декларации(ТабличныйДокумент, Макет, СтруктураПараметров, НомерЛиста, ИтогЗаПериод);
КонецЕсли;
Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
СтруктураСекций.Вставить("СекцияКонтрагент", Макет.ПолучитьОбласть("Контрагент"));
СтруктураСекций.Вставить("СекцияВсегоКонтрагент", Макет.ПолучитьОбласть("ВсегоКонтрагент"));
КонецЕсли;
ПреобразоватьЗаписиДополнительногоЛистаКнигиПокупок(
СтруктураПараметров,
ИтогПоПериодамКорректировки,
?(СтруктураПараметров.Свойство("РеквизитыДокумента"),СтруктураПараметров.РеквизитыДокумента, ИтогЗаПериод),
ТабличныйДокумент,
СтруктураСекций,
?(СтруктураПараметров.Свойство("ТабличнаяЧасть"),СтруктураПараметров.ТабличнаяЧасть, Неопределено));
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
СтрокаВсего.Параметры.Заполнить(ИтогЗаПериод);
ТабличныйДокумент.Вывести(СтрокаВсего);
КонецЕсли;
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
Всего = Новый Структура("СумНДСВыч");
Всего.СумНДСВыч = ИтогЗаПериод.НДС;
ОбщиеСведения.Всего = Всего;
СтруктураДанных = Новый Структура("ОбщиеСведения,Записи", ОбщиеСведения, СтруктураПараметров.Записи.Скопировать());
СтруктураПараметров.Записи.Очистить();
ДанныеОтчета.Добавить(СтруктураДанных);
КонецЕсли;
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме
И НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
КонецЕсли;
КонецЦикла;
НазваниеРаздела = СтрШаблон(НСтр("ru = 'Доп.листы за %1'"), НалоговыйПериод);
Если СтруктураПараметров.СчетчикСегментовНалоговогоПериода > 1 Тогда
НазваниеРаздела = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СтруктураПараметров.СчетчикСегментовНалоговогоПериода);
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(
СтруктураПараметров,
НазваниеРаздела,
СтруктураПараметров.СчетчикСегментов,
ТабличныйДокумент,
ДополнительныеПараметры);
СтруктураПараметров.СчетчикСегментов = СтруктураПараметров.СчетчикСегментов + 1;
КонецЦикла;
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ИмяРаздела = "Раздел8_Прил1";
Если СтруктураПараметров.СчетчикСтрокТекущегоСегмента <> 0 Тогда
ПерваяСтрокаСегмента = СтруктураПараметров.СчетчикСтрокДопЛиста - СтруктураПараметров.СчетчикСтрокТекущегоСегмента + 1;
Если ПерваяСтрокаСегмента = 1 Тогда
ТабличныйДокумент.Область("НДСПриложение").Значение = ИтогЗаПериод.НДС;
Иначе
ЗаписатьИтогиВПервыйСегментРаздела81(СтруктураПараметров, ИтогЗаПериод);
КонецЕсли;
ИначеЕсли СтруктураПараметров.СчетчикСтрокТекущегоСегмента = 0
И СтруктураПараметров.СчетчикСтрокДопЛиста <> 0 Тогда
ЗаписатьИтогиВПервыйСегментРаздела81(СтруктураПараметров, ИтогЗаПериод);
КонецЕсли;
ИтогиРаздел81.СумНДСИтП1Р8 = ИтогЗаПериод.НДС;
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
СтруктураПараметров.ДанныеОтчета = ДанныеОтчета;
КонецЕсли;
КонецПроцедуры
Процедура ЗаписатьИтогиВПервыйСегментРаздела81(СтруктураПараметров, ИтогЗаПериод)
ВидДополнительногоФайла = "ТабличныйДокументРаздел8_Прил1.1";
ИмяРаздела = "Раздел8_Прил1";
КонецПроцедуры
Процедура ВывестиШапкуРаздела81Декларации(ТабличныйДокумент, Макет, СтруктураПараметров, НомерДополнительногоЛиста, ИтогЗаПериод)
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Если НомерДополнительногоЛиста = 1 Тогда
Секция = Макет.ПолучитьОбласть("ШапкаРаздел81");
ТабличныйДокумент.Вывести(Секция);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
ДекларацияИтоги = Макет.ПолучитьОбласть("ДекларацияИтоги81");
Иначе
ДекларацияИтоги = Макет.ПолучитьОбласть("ДекларацияИтоги");
КонецЕсли;
ДекларацияИтоги.Параметры.Заполнить(ИтогЗаПериод);
ТабличныйДокумент.Вывести(ДекларацияИтоги);
КонецЕсли;
Секция = Макет.ПолучитьОбласть("ШапкаРаздел81НомерЛиста");
Секция.Параметры.НомерЛиста = НомерДополнительногоЛиста;
Секция.Параметры.ДатаСоставления = Формат(СтруктураПараметров.ДатаОформления, "ДФ=dd.MM.yyyy");
ТабличныйДокумент.Вывести(Секция);
Секция = Макет.ПолучитьОбласть("СтрокиДляПовтора");
Секция.Область("НомераГрафКнига").Видимость = Ложь;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
Секция.Область("НомераГрафДекларация").Видимость = Ложь;
КонецЕсли;
ТабличныйДокумент.Вывести(Секция);
КонецПроцедуры
Процедура ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет)
ОтветственныеЛица = ОтветственныеЛицаБП.ОтветственныеЛица(СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода);
Если ОбщегоНазначенияБПВызовСервераПовтИсп.ЭтоЮрЛицо(СтруктураПараметров.Организация) Тогда
ИмяРук = ОтветственныеЛица.РуководительПредставление;
ИмяОрг = "";
Свидетельство = "";
Иначе
ИмяРук = "";
ИмяОрг = ОтветственныеЛица.РуководительПредставление;
СведенияОЮрФизЛице = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода);
Свидетельство = СведенияОЮрФизЛице.Свидетельство;
КонецЕсли;
Секция = Макет.ПолучитьОбласть("Подвал");
Секция.Параметры.ИмяРук = ИмяРук;
Секция.Параметры.ИмяОрг = ИмяОрг;
Секция.Параметры.Свидетельство = Свидетельство;
ТабличныйДокумент.Вывести(Секция);
КонецПроцедуры
Процедура ИнициализироватьТаблицыДанныхНДС(СтруктураПараметров)
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
Записи = Новый ТаблицаЗначений;
Записи.Колонки.Добавить("НомПП", ОбщегоНазначения.ОписаниеТипаЧисло(12, 0));
Записи.Колонки.Добавить("НомерСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(1000));
Записи.Колонки.Добавить("ДатаСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Записи.Колонки.Добавить("НомИспрСчФ", ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
Записи.Колонки.Добавить("ДатаИспрСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Записи.Колонки.Добавить("НомерКСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(1000));
Записи.Колонки.Добавить("ДатаКСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Записи.Колонки.Добавить("НомИспрКСчФ", ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
Записи.Колонки.Добавить("ДатаИспрКСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Записи.Колонки.Добавить("НаимПрод", ОбщегоНазначения.ОписаниеТипаСтрока(1000));
Записи.Колонки.Добавить("ИННЮЛ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Записи.Колонки.Добавить("КПП", ОбщегоНазначения.ОписаниеТипаСтрока(9));
Записи.Колонки.Добавить("ИННФЛ", ОбщегоНазначения.ОписаниеТипаСтрока(12));
Записи.Колонки.Добавить("КодОКВ", ОбщегоНазначения.ОписаниеТипаСтрока(3));
Записи.Колонки.Добавить("КодВидОпер", Новый ОписаниеТипов("Массив"));
Записи.Колонки.Добавить("СвДокУплНал", Новый ОписаниеТипов("Массив"));
Записи.Колонки.Добавить("ДатаПринУчет", Новый ОписаниеТипов("Массив"));
Записи.Колонки.Добавить("СвПосредн");
Записи.Колонки.Добавить("СумНДСВыч", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
Записи.Колонки.Добавить("СвРегНом", Новый ОписаниеТипов("Массив"));
Записи.Колонки.Добавить("СтПокСчФВал", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Иначе
Записи.Колонки.Добавить("НомерТД", Новый ОписаниеТипов("Массив"));
Записи.Колонки.Добавить("СтТовУчНалВсего", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
КонецЕсли;
Если СтруктураПараметров.ФормироватьДополнительныеЛисты Тогда
ОбщиеСведения = Новый Структура("НомерДопЛКнПок,Период,ОтчетГод,ДатаДопЛКнПок,Итого,Всего");
СтруктураПараметров.Вставить("ДанныеОтчета");
Иначе
ОбщиеСведения = Новый Структура("СумНДСВыч");
КонецЕсли;
СтруктураПараметров.Вставить("Записи", Записи);
СтруктураПараметров.Вставить("ОбщиеСведения", ОбщиеСведения);
Иначе
Раздел8 = Новый ТаблицаЗначений;
Раздел8.Колонки.Добавить("НомерПор", ОбщегоНазначения.ОписаниеТипаЧисло(12, 0));
Раздел8.Колонки.Добавить("НомСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(0));
Раздел8.Колонки.Добавить("ДатаСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Раздел8.Колонки.Добавить("НомИспрСчФ", ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
Раздел8.Колонки.Добавить("ДатаИспрСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Раздел8.Колонки.Добавить("НомКСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(0));
Раздел8.Колонки.Добавить("ДатаКСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Раздел8.Колонки.Добавить("НомИспрКСчФ", ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
Раздел8.Колонки.Добавить("ДатаИспрКСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
Если СтруктураПараметров.ПравилаЗаполнения = "2015Кв1" Тогда
Раздел8.Колонки.Добавить("НомТД", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2017Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4" Тогда
Раздел8.Колонки.Добавить("РегНомТД", Новый ОписаниеТипов("Массив"));
ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
Раздел8.Колонки.Добавить("СвРегНом", Новый ОписаниеТипов("Массив"));
КонецЕсли;
КонецЕсли;
Раздел8.Колонки.Добавить("ОКВ", ОбщегоНазначения.ОписаниеТипаСтрока(3));
Раздел8.Колонки.Добавить("СтоимПокупВ", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел8.Колонки.Добавить("СумНДСВыч", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел8.Колонки.Добавить("КодВидОпер", Новый ОписаниеТипов("Массив"));
Раздел8.Колонки.Добавить("ДокПдтвУпл", Новый ОписаниеТипов("Массив"));
Раздел8.Колонки.Добавить("ДатаУчТов", Новый ОписаниеТипов("Массив"));
Раздел8.Колонки.Добавить("СвПрод", Новый ОписаниеТипов("Массив"));
Раздел8.Колонки.Добавить("СвПос");
Раздел8.Колонки.Добавить("ДополнительныеСведения");
Раздел81 = Раздел8.СкопироватьКолонки();
Раздел81.Колонки.СумНДСВыч.Имя = "СумНДС";
СтруктураПараметров.Вставить("ТаблицаРаздел8", Раздел8);
СтруктураПараметров.Вставить("ТаблицаРаздел81", Раздел81);
СтруктураПараметров.Вставить("ТабличныйДокументРаздел81");
ИтогиРаздел8 = Новый Структура("СумНДСВсКПк");
ИтогиРаздел81 = Новый Структура("СумНДСИтКПк,СумНДСИтП1Р8");
СтруктураПараметров.Вставить("ИтогиРаздел8", ИтогиРаздел8);
СтруктураПараметров.Вставить("ИтогиРаздел81", ИтогиРаздел81);
КонецЕсли;
КонецПроцедуры
Процедура ПреобразоватьЗаписиКнигиПокупок(
СтруктураПараметров,
НаборЗаписей,
ТабличныйДокумент,
СтрокаИтогПоОрганизации,
СтруктураСекций,
ТаблицаДокумента)
ПараметрыСтроки = СтруктураСекций.СекцияСтрока.Параметры;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
ПараметрыСтрокиРНПТ = СтруктураСекций.СекцияСтрокаРНПТ.Параметры;
КонецЕсли;
ИтогПоОрганизации = НаборЗаписей.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ИтогПоОрганизации.Следующий();
СтруктураПараметров.ЗаписьДополнительногоЛиста = Ложь;
ДополнительнаяИнформация = ПолучитьДополнительнуюИнформациюПоСчетуФактуре(СтруктураПараметров);
Если НЕ СтруктураПараметров.Свойство("ЗаполнениеДекларации") Тогда
СтруктураПараметров.Вставить("ЗаполнениеДекларации", Ложь);
ИначеЕсли СтруктураПараметров.ЗаполнениеДекларации И СтруктураПараметров.КонецПериода < '20150101' Тогда
СтруктураПараметров.ЗаполнениеДекларации = Ложь;
КонецЕсли;
Счетчик = 0;
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = 1;
НазваниеРаздела = Нстр("ru='Основной раздел'");
ЗаполнитьЗначенияСвойств(СтрокаИтогПоОрганизации, ИтогПоОрганизации);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел8);
СтруктураСекций.ДекларацияИтоги.Параметры.Заполнить(СтрокаИтогПоОрганизации);
ТабличныйДокумент.Вывести(СтруктураСекций.ДекларацияИтоги);
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ГруппироватьПоКонтрагентам
И НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
СтрокаИтогПоКонтрагенту = УчетНДС.НоваяСтрокаИтоговКнигиПокупок();
ИтогПоКонтрагенту = ИтогПоОрганизации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоКонтрагенту.Следующий() Цикл
ЗаполнитьЗначенияСвойств(СтрокаИтогПоКонтрагенту, ИтогПоКонтрагенту);
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ИтогПоКонтрагенту, Истина) Тогда
СтруктураСекций.СекцияКонтрагент.Параметры.Контрагент = ИтогПоКонтрагенту.Продавец;
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияКонтрагент);
ТабличныйДокумент.НачатьГруппуСтрок();
КонецЕсли;
ИтогПоДокументу = ИтогПоКонтрагенту.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоДокументу.Следующий() Цикл
ИтогПоКоду = ИтогПоДокументу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоКоду.Следующий() Цикл
ЗаписьКниги = ИтогПоКоду.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ЗаписьКниги.Следующий() Цикл
Если ЗаписьКниги.НДС + ЗаписьКниги.СуммаБезНДС = 0 Тогда
Продолжить;
КонецЕсли;
Если ЗаписьКниги.СводныйКорректировочный
И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4 Тогда
ДетальнаяЗапись = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока ДетальнаяЗапись.Следующий() Цикл
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ДетальнаяЗапись) Тогда
ПараметрыСтроки.Ном = Счетчик;
ЗаполнитьСтрокуКнигиПокупок(
ПараметрыСтроки, ДетальнаяЗапись, ДополнительнаяИнформация, СтруктураПараметров, Неопределено);
ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
УчетНДС.ДобавитьКонтрагентаНаПроверку(СтруктураПараметров, ДетальнаяЗапись, ОбластьТабличногоДокумента, , СчетчикСегментов);
Иначе
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоКонтрагенту, ДетальнаяЗапись, СтруктураПараметров);
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоОрганизации, ДетальнаяЗапись, СтруктураПараметров);
КонецЕсли;
КонецЦикла;
ИначеЕсли ЗаписьКниги.СводныйКомиссионный
И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4 Тогда
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПараметрыСтроки = ТаблицаДокумента.Добавить();
КонецЕсли;
ПараметрыСтроки.Ном = Счетчик;
ЗаполнитьСтрокуКнигиПокупокСводныйКомиссионный(
ПараметрыСтроки, ЗаписьКниги, ДополнительнаяИнформация, СтруктураПараметров);
ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
Иначе
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ДетальнаяЗапись = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
ДетальнаяЗапись.Следующий();
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ЗаписьКниги, , ДетальнаяЗапись) Тогда
ПараметрыСтроки.Ном = Счетчик;
ЗаполнитьСтрокуКнигиПокупок(
ПараметрыСтроки, ЗаписьКниги, ДополнительнаяИнформация, СтруктураПараметров, ДетальнаяЗапись);
УчетНДС.ВывестиГраницуСтроки(СтруктураПараметров, СтруктураСекций);
ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
УчетНДС.ДобавитьКонтрагентаНаПроверку(СтруктураПараметров, ЗаписьКниги, ОбластьТабличногоДокумента, ДетальнаяЗапись, СчетчикСегментов);
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ДетальнаяЗапись,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
Иначе
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоКонтрагенту, ЗаписьКниги, СтруктураПараметров);
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоОрганизации, ЗаписьКниги, СтруктураПараметров);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ИтогПоКонтрагенту, Истина) Тогда
ТабличныйДокумент.ЗакончитьГруппуСтрок();
СтруктураСекций.СекцияВсегоКонтрагент.Параметры.Заполнить(СтрокаИтогПоКонтрагенту);
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияВсегоКонтрагент);
КонецЕсли;
Если СчетчикСтрокТекущегоСегмента >= СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментов);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СчетчикСегментов, ТабличныйДокумент);
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
КонецЕсли;
КонецЦикла;
Иначе
ИтогПоДокументу = ИтогПоОрганизации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоДокументу.Следующий() Цикл
ИтогПоКоду = ИтогПоДокументу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоКоду.Следующий() Цикл
ЗаписьКниги = ИтогПоКоду.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ЗаписьКниги.Следующий() Цикл
Если ЗаписьКниги.НДС + ЗаписьКниги.СуммаБезНДС = 0 Тогда
Продолжить;
КонецЕсли;
Если ЗаписьКниги.СводныйКорректировочный
И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4 Тогда
ДетальнаяЗапись = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока ДетальнаяЗапись.Следующий() Цикл
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ДетальнаяЗапись) Тогда
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПараметрыСтроки = ТаблицаДокумента.Добавить();
КонецЕсли;
ПараметрыСтроки.Ном = Счетчик;
ЗаполнитьСтрокуКнигиПокупок(
ПараметрыСтроки, ДетальнаяЗапись, ДополнительнаяИнформация, СтруктураПараметров);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураСекций.СекцияСтрока.Область(1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
ИначеЕсли НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураСекций.СекцияСтрока.Область(1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
УчетНДС.ДобавитьКонтрагентаНаПроверку(СтруктураПараметров, ДетальнаяЗапись, ОбластьТабличногоДокумента, , СчетчикСегментов);
КонецЕсли;
Иначе
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоОрганизации, ДетальнаяЗапись, СтруктураПараметров);
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И СчетчикСтрокТекущегоСегмента = СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
ПерваяСтрокаСегмента = Счетчик - СчетчикСтрокТекущегоСегмента + 1;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураПараметров.ТаблицаРаздел8.Очистить();
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментов);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СчетчикСегментов, ТабличныйДокумент);
КонецЕсли;
ТабличныйДокумент.Очистить();
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел8);
КонецЕсли;
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
КонецЕсли;
КонецЦикла;
ИначеЕсли ЗаписьКниги.СводныйКомиссионный
И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4 Тогда
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПараметрыСтроки = ТаблицаДокумента.Добавить();
КонецЕсли;
ПараметрыСтроки.Ном = Счетчик;
ЗаполнитьСтрокуКнигиПокупокСводныйКомиссионный(
ПараметрыСтроки, ЗаписьКниги, ДополнительнаяИнформация, СтруктураПараметров);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
ИЛИ (СтруктураПараметров.ЗаполнениеДокумента И СтруктураПараметров.ФорматПоПостановлению735) Тогда
СтруктураСекций.СекцияСтрока.Область(1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И СчетчикСтрокТекущегоСегмента = СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
ПерваяСтрокаСегмента = Счетчик - СчетчикСтрокТекущегоСегмента + 1;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураПараметров.ТаблицаРаздел8.Очистить();
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментов);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СчетчикСегментов, ТабличныйДокумент);
КонецЕсли;
ТабличныйДокумент.Очистить();
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел8);
КонецЕсли;
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
КонецЕсли;
Иначе
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ДетальнаяЗапись = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
ДетальнаяЗапись.Следующий();
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ЗаписьКниги, , ДетальнаяЗапись) Тогда
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПараметрыСтроки = ТаблицаДокумента.Добавить();
КонецЕсли;
ПараметрыСтроки.Ном = Счетчик;
ЗаполнитьСтрокуКнигиПокупок(
ПараметрыСтроки, ЗаписьКниги, ДополнительнаяИнформация, СтруктураПараметров, ДетальнаяЗапись);
УчетНДС.ВывестиГраницуСтроки(СтруктураПараметров, СтруктураСекций);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураСекций.СекцияСтрока.Область(1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
ИначеЕсли НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураСекций.СекцияСтрока.Область(1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
УчетНДС.ДобавитьКонтрагентаНаПроверку(СтруктураПараметров, ЗаписьКниги, ОбластьТабличногоДокумента, ДетальнаяЗапись, СчетчикСегментов);
КонецЕсли;
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ДетальнаяЗапись,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
Иначе
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоОрганизации, ЗаписьКниги, СтруктураПараметров);
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И СчетчикСтрокТекущегоСегмента = СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
ПерваяСтрокаСегмента = Счетчик - СчетчикСтрокТекущегоСегмента + 1;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураПараметров.ТаблицаРаздел8.Очистить();
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментов);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СчетчикСегментов, ТабличныйДокумент);
КонецЕсли;
ТабличныйДокумент.Очистить();
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел8);
КонецЕсли;
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЕсли;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураПараметров.Вставить("СчетчикСтрокТекущегоСегмента", СчетчикСтрокТекущегоСегмента);
СтруктураПараметров.Вставить("Счетчик", Счетчик);
СтруктураПараметров.Вставить("СчетчикСегментов", СчетчикСегментов);
КонецЕсли;
КонецПроцедуры
Процедура ПреобразоватьЗаписиДополнительногоЛистаКнигиПокупок(
СтруктураПараметров,
ИтогПоПериодамКорректировки,
ИтогЗаПериод,
ТабличныйДокумент,
СтруктураСекций,
ТаблицаДокумента)
ДополнительнаяИнформация = ПолучитьДополнительнуюИнформациюПоСчетуФактуре(СтруктураПараметров);
Если НЕ СтруктураПараметров.Свойство("ЗаполнениеДекларации") Тогда
СтруктураПараметров.Вставить("ЗаполнениеДекларации", Ложь);
ИначеЕсли СтруктураПараметров.ЗаполнениеДекларации И СтруктураПараметров.КонецПериода < '20150101' Тогда
СтруктураПараметров.ЗаполнениеДекларации = Ложь;
КонецЕсли;
ПараметрыСтроки = СтруктураСекций.СекцияСтрока.Параметры;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
ПараметрыСтрокиРНПТ = СтруктураСекций.СекцияСтрокаРНПТ.Параметры;
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
Счетчик = СтруктураПараметров.СчетчикСтрокДопЛиста;
СчетчикСтрокТекущегоСегмента = СтруктураПараметров.СчетчикСтрокТекущегоСегмента;
Иначе
Счетчик = 0;
СчетчикСтрокТекущегоСегмента = 0;
КонецЕсли;
Если СтруктураПараметров.Свойство("СчетчикСегментов") Тогда
СчетчикСегментов = СтруктураПараметров.СчетчикСегментов + 1;
Иначе
СчетчикСегментов = 1;
КонецЕсли;
Если СтруктураПараметров.Свойство("СчетчикСегментовНалоговогоПериода") Тогда
СчетчикСегментовНалоговогоПериода = СтруктураПараметров.СчетчикСегментовНалоговогоПериода;
Иначе
СчетчикСегментовНалоговогоПериода = 1;
КонецЕсли;
НалоговыйПериод = ПредставлениеПериода(
СтруктураПараметров.НалоговыйПериод, КонецДня(СтруктураПараметров.КонецНалоговогоПериода), "ФП = Истина");
НазваниеРаздела = СтрШаблон(НСтр("ru = 'Доп.листы за %1'"), НалоговыйПериод);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ГруппироватьПоКонтрагентам
И НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ИтогПоКонтрагенту = ИтогПоПериодамКорректировки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоКонтрагенту.Следующий() Цикл
СтруктураСекций.СекцияКонтрагент.Параметры.Контрагент = ИтогПоКонтрагенту.Продавец;
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияКонтрагент);
ТабличныйДокумент.НачатьГруппуСтрок();
ИтогПоДокументу = ИтогПоКонтрагенту.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоДокументу.Следующий() Цикл
ИтогПоДоговору = ИтогПоДокументу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоДоговору.Следующий() Цикл
ИтогПоКоду = ИтогПоДоговору.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоКоду.Следующий() Цикл
ЗаписьКниги = ИтогПоКоду.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ЗаписьКниги.Следующий() Цикл
Если ЗаписьКниги.НДС + ЗаписьКниги.СуммаБезНДС = 0 Тогда
Продолжить;
КонецЕсли;
ДетальнаяЗапись = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
ДетальнаяЗапись.Следующий();
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ПараметрыСтроки.Ном = Счетчик;
ЗаполнитьСтрокуКнигиПокупок(
ПараметрыСтроки, ЗаписьКниги, ДополнительнаяИнформация, СтруктураПараметров, ДетальнаяЗапись);
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ДетальнаяЗапись,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
ИтогЗаПериод.ВсегоПокупок = ИтогЗаПериод.ВсегоПокупок + ЗаписьКниги.ВсегоПокупок;
ИтогЗаПериод.СуммаБезНДС10 = ИтогЗаПериод.СуммаБезНДС10 + ЗаписьКниги.СуммаБезНДС10;
ИтогЗаПериод.НДС10 = ИтогЗаПериод.НДС10 + ЗаписьКниги.НДС10;
ИтогЗаПериод.СуммаБезНДС18 = ИтогЗаПериод.СуммаБезНДС18 + ЗаписьКниги.СуммаБезНДС18;
ИтогЗаПериод.НДС18 = ИтогЗаПериод.НДС18 + ЗаписьКниги.НДС18;
ИтогЗаПериод.НДС0 = ИтогЗаПериод.НДС0 + ЗаписьКниги.НДС0;
ИтогЗаПериод.НДС = ИтогЗаПериод.НДС + ЗаписьКниги.НДС;
ИтогЗаПериод.СуммаСовсемБезНДС = ИтогЗаПериод.СуммаСовсемБезНДС + ЗаписьКниги.СуммаСовсемБезНДС;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ТабличныйДокумент.ЗакончитьГруппуСтрок();
СтруктураСекций.СекцияВсегоКонтрагент.Параметры.Заполнить(ИтогПоКонтрагенту);
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияВсегоКонтрагент);
Если СчетчикСтрокТекущегоСегмента >= СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментовНалоговогоПериода);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(
СтруктураПараметров,
ЗаголовокЛиста,
СчетчикСегментов,
ТабличныйДокумент,
ДополнительныеПараметры);
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода + 1;
КонецЕсли;
КонецЦикла;
Иначе
ИтогПоДокументу = ИтогПоПериодамКорректировки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоДокументу.Следующий() Цикл
ИтогПоДоговору = ИтогПоДокументу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоДоговору.Следующий() Цикл
ИтогПоКоду = ИтогПоДоговору.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоКоду.Следующий() Цикл
ЗаписьКниги = ИтогПоКоду.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ЗаписьКниги.Следующий() Цикл
Если ЗаписьКниги.НДС + ЗаписьКниги.СуммаБезНДС = 0 Тогда
Продолжить;
КонецЕсли;
ДетальнаяЗапись = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
ДетальнаяЗапись.Следующий();
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПараметрыСтроки = ТаблицаДокумента.Добавить();
КонецЕсли;
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ПараметрыСтроки.Ном = Счетчик;
ЗаполнитьСтрокуКнигиПокупок(
ПараметрыСтроки, ЗаписьКниги, ДополнительнаяИнформация, СтруктураПараметров, ДетальнаяЗапись);
УчетНДС.ВывестиГраницуСтроки(СтруктураПараметров, СтруктураСекций);
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735
ИЛИ НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураСекций.СекцияСтрока.Область(1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
КонецЕсли;
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ДетальнаяЗапись,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И СчетчикСтрокТекущегоСегмента = СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
ПерваяСтрокаСегмента = Счетчик - СчетчикСтрокТекущегоСегмента + 1;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураПараметров.ТаблицаРаздел81.Очистить();
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментовНалоговогоПериода);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(
СтруктураПараметров,
ЗаголовокЛиста,
СчетчикСегментов,
ТабличныйДокумент,
ДополнительныеПараметры);
КонецЕсли;
ТабличныйДокумент.Очистить();
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел81);
КонецЕсли;
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СтруктураПараметров.ТаблицаРаздел81.Очистить();
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода + 1;
КонецЕсли;
ИтогЗаПериод.ВсегоПокупок = ИтогЗаПериод.ВсегоПокупок + ЗаписьКниги.ВсегоПокупок;
ИтогЗаПериод.СуммаБезНДС10 = ИтогЗаПериод.СуммаБезНДС10 + ЗаписьКниги.СуммаБезНДС10;
ИтогЗаПериод.НДС10 = ИтогЗаПериод.НДС10 + ЗаписьКниги.НДС10;
ИтогЗаПериод.СуммаБезНДС18 = ИтогЗаПериод.СуммаБезНДС18 + ЗаписьКниги.СуммаБезНДС18;
ИтогЗаПериод.НДС18 = ИтогЗаПериод.НДС18 + ЗаписьКниги.НДС18;
ИтогЗаПериод.НДС0 = ИтогЗаПериод.НДС0 + ЗаписьКниги.НДС0;
ИтогЗаПериод.НДС = ИтогЗаПериод.НДС + ЗаписьКниги.НДС;
ИтогЗаПериод.СуммаСовсемБезНДС = ИтогЗаПериод.СуммаСовсемБезНДС + ЗаписьКниги.СуммаСовсемБезНДС;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЕсли;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураПараметров.СчетчикСтрокДопЛиста = Счетчик;
СтруктураПараметров.СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента;
СтруктураПараметров.СчетчикСегментов = СчетчикСегментов;
СтруктураПараметров.СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьСтрокуКнигиПокупок(
Секция, ЗаписьКниги, ДополнительнаяИнформация, СтруктураПараметров, ДетальнаяЗапись = Неопределено)
Если ДетальнаяЗапись <> Неопределено Тогда
ПараметрыЗаполнения = ДетальнаяЗапись;
Иначе
ПараметрыЗаполнения = ЗаписьКниги;
КонецЕсли;
ЗаполнитьЗначенияСвойств(Секция, ПараметрыЗаполнения);
СоставСтроки = Новый Структура;
СоставСтроки.Вставить("КодОперации", ПараметрыЗаполнения.КодВидаОперации);
Если ПараметрыЗаполнения.СводныйКомиссионный
И ТипЗнч(ПараметрыЗаполнения.СчетФактураДокумент) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
СводныйКомиссионныйСчетФактура = Ложь;
Иначе
СводныйКомиссионныйСчетФактура = ПараметрыЗаполнения.СводныйКомиссионный;
КонецЕсли;
Если СводныйКомиссионныйСчетФактура Тогда
Секция.Продавец = "";
Секция.Графа10 = "";
Графа9 = "";
Графа10 = "";
Иначе
СоставСтроки.Вставить("ПродавецИНН", ПараметрыЗаполнения.ПродавецИНН);
СоставСтроки.Вставить("ПродавецКПП", ПараметрыЗаполнения.ПродавецКПП);
Графа10 = Строка(ПараметрыЗаполнения.ПродавецИНН)
+ ?(ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецКПП), "/" , "")
+ Строка(ПараметрыЗаполнения.ПродавецКПП);
КонецЕсли;
Если ПараметрыЗаполнения.КодВидаОперации = "34" Тогда
ПараметрНДС = "-";
Иначе
ПараметрНДС = ЗаписьКниги.НДС;
КонецЕсли;
СоставСтроки.Вставить("Валюта", ?(ЗначениеЗаполнено(ПараметрыЗаполнения.Валюта),
"" + ПараметрыЗаполнения.Валюта + ", " + ПараметрыЗаполнения.ВалютаКод, ""));
СоставСтроки.Вставить("ВсегоПокупок", ЗаписьКниги.ВсегоПокупок);
СоставСтроки.Вставить("СуммаБезНДС18", ЗаписьКниги.СуммаБезНДС18);
СоставСтроки.Вставить("НДС18", ЗаписьКниги.НДС18);
СоставСтроки.Вставить("СуммаБезНДС10", ЗаписьКниги.СуммаБезНДС10);
СоставСтроки.Вставить("НДС10", ЗаписьКниги.НДС10);
СоставСтроки.Вставить("НДС0", ЗаписьКниги.НДС0);
СоставСтроки.Вставить("НДС", ПараметрНДС);
СоставСтроки.Вставить("СуммаСовсемБезНДС", ЗаписьКниги.СуммаСовсемБезНДС);
Если ПараметрыЗаполнения.КодВидаОперации = "18"
ИЛИ ПараметрыЗаполнения.СводныйКорректировочный Тогда
СоставСтроки.Вставить("ДатаОприходования", "");
Иначе
СоставСтроки.Вставить("ДатаОприходования", Формат(ЗаписьКниги.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
КонецЕсли;
СоставСтроки.Вставить("СчетФактура");
Если ЗначениеЗаполнено(ЗаписьКниги.СчетФактураДокумент) Тогда
СоставСтроки.СчетФактура = ЗаписьКниги.СчетФактураДокумент;
КонецЕсли;
ПредставлениеСФ = УчетНДС.ОпределитьДатуИНомерСФ(ПараметрыЗаполнения);
СоставСтроки.Вставить("ДатаНомер", ПредставлениеСФ.ДатаНомер);
СоставСтроки.Вставить("НомерДата", ПредставлениеСФ.НомерДата);
СоставСтроки.Вставить("НомерОтДата", ПредставлениеСФ.НомерОтДата);
СоставСтроки.Вставить("НомерДатаИсправления", ПредставлениеСФ.НомерДатаИсправленный);
СоставСтроки.Вставить("НомерОтДатаИсправленный", ПредставлениеСФ.НомерОтДатаИсправленный);
СоставСтроки.Вставить("НомерДатаКорректировки", ПредставлениеСФ.НомерДатаКорректировочный);
СоставСтроки.Вставить("НомерОтДатаКорректировочный", ПредставлениеСФ.НомерОтДатаКорректировочный);
СоставСтроки.Вставить("НомерДатаИсправленияКорректировки",
ПредставлениеСФ.НомерДатаИсправленныйКорректировочный);
СоставСтроки.Вставить("НомерОтДатаИсправленныйКорректировочный",
ПредставлениеСФ.НомерОтДатаИсправленныйКорректировочный);
ТекстОплаты = "";
СписокДатОплат = Новый СписокЗначений();
ТекстОплатыСНомером = "";
ТекстНомерОтДатаОплаты = "";
СписокНомеровИДатОплат = Новый СписокЗначений();
МассивДокПдтвУпл = Новый Массив();
МассивРегНомТД = Новый Массив();
ТекстНомерГТД = "";
ТекстСтранаНомерГТД = "";
ТекстГрафа9 = "";
ТекстГрафа10 = "";
МассивСвПрод = Новый Массив();
СуммаСНДС = 0;
СчетаФактуры = Новый Массив();
СчетаФактурыДокументы = Новый Массив();
Если ДетальнаяЗапись = Неопределено Тогда
Если ЗначениеЗаполнено(ЗаписьКниги.ДатаОплаты) Тогда
Если СписокДатОплат.НайтиПоЗначению(Формат(ЗаписьКниги.ДатаОплаты, "ДФ=dd.MM.yyyy")) = Неопределено тогда
ТекстОплаты = ТекстОплаты
+ ?(НЕ ЗначениеЗаполнено(ТекстОплаты), "", "," + Символы.ПС) + Формат(ЗаписьКниги.ДатаОплаты, "ДФ=dd.MM.yyyy");
СписокДатОплат.Добавить(Формат(ЗаписьКниги.ДатаОплаты, "ДФ=dd.MM.yyyy"));
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ЗаписьКниги.НомерДокументаОплаты) Тогда
НомерДатаОплаты = СтрШаблон(НСтр("ru='%1;%2'"),
ЗаписьКниги.НомерДокументаОплаты, Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
НомерОтДатаОплаты = СтрШаблон(НСтр("ru='%1 от %2'"),
ЗаписьКниги.НомерДокументаОплаты, Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено тогда
ТекстОплатыСНомером = ТекстОплатыСНомером
+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", "," + Символы.ПС) + НомерДатаОплаты;
ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты
+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";" + Символы.ПС) + НомерОтДатаОплаты;
СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураДокПдтвУпл = Новый Структура("НомДокПдтвУпл,ДатаДокПдтвУпл");
СтруктураДокПдтвУпл.НомДокПдтвУпл = ЗаписьКниги.НомерДокументаОплаты;
СтруктураДокПдтвУпл.ДатаДокПдтвУпл = Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
Иначе
СтруктураДокПдтвУпл = Новый Структура("НомерДокУплНал,ДатаДокУплНал");
СтруктураДокПдтвУпл.НомерДокУплНал = ЗаписьКниги.НомерДокументаОплаты;
СтруктураДокПдтвУпл.ДатаДокУплНал = Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
КонецЕсли;
МассивДокПдтвУпл.Добавить(СтруктураДокПдтвУпл);
КонецЕсли;
КонецЕсли;
СоставСтроки.СчетФактура = ЗаписьКниги.СчетФактураДокументРасшифровка;
СчетаФактуры.Добавить(ЗаписьКниги.СчетФактура);
СчетаФактурыДокументы.Добавить(ЗаписьКниги.СчетФактураДокумент);
Иначе
СтрокаЗаписи = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока СтрокаЗаписи.Следующий() Цикл
Если ЗначениеЗаполнено(СтрокаЗаписи.ДатаОплаты) Тогда
Если СписокДатОплат.НайтиПоЗначению(Формат(СтрокаЗаписи.ДатаОплаты, "ДФ=dd.MM.yyyy")) = Неопределено Тогда
ТекстОплаты = ТекстОплаты + ?(НЕ ЗначениеЗаполнено(ТекстОплаты), "", ","
+ Символы.ПС) + Формат(СтрокаЗаписи.ДатаОплаты, "ДФ=dd.MM.yyyy");
СписокДатОплат.Добавить(Формат(СтрокаЗаписи.ДатаОплаты, "ДФ=dd.MM.yyyy"));
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаЗаписи.НомерДокументаОплаты) Тогда
НомерДатаОплаты = СтрШаблон(НСтр("ru='%1;%2'"),
СтрокаЗаписи.НомерДокументаОплаты, Формат(СтрокаЗаписи.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
НомерОтДатаОплаты = СтрШаблон(НСтр("ru='%1 от %2'"),
СтрокаЗаписи.НомерДокументаОплаты, Формат(СтрокаЗаписи.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено тогда
ТекстОплатыСНомером = ТекстОплатыСНомером
+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", ","+ Символы.ПС) + НомерДатаОплаты;
ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты
+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";" + Символы.ПС) + НомерОтДатаОплаты;
СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураДокПдтвУпл = Новый Структура("НомДокПдтвУпл,ДатаДокПдтвУпл");
СтруктураДокПдтвУпл.НомДокПдтвУпл = СтрокаЗаписи.НомерДокументаОплаты;
СтруктураДокПдтвУпл.ДатаДокПдтвУпл = Формат(СтрокаЗаписи.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
Иначе
СтруктураДокПдтвУпл = Новый Структура("НомерДокУплНал,ДатаДокУплНал ");
СтруктураДокПдтвУпл.НомерДокУплНал = СтрокаЗаписи.НомерДокументаОплаты;
СтруктураДокПдтвУпл.ДатаДокУплНал = Формат(СтрокаЗаписи.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
КонецЕсли;
МассивДокПдтвУпл.Добавить(СтруктураДокПдтвУпл);
КонецЕсли;
КонецЕсли;
СоставСтроки.СчетФактура = СтрокаЗаписи.СчетФактураДокументРасшифровка;
Если НЕ СтрокаЗаписи.НаАванс Тогда
СчетаФактуры.Добавить(СтрокаЗаписи.СчетФактура);
КонецЕсли;
СчетаФактурыДокументы.Добавить(СтрокаЗаписи.СчетФактураДокумент);
КонецЦикла;
КонецЕсли;
СчетаФактуры = ОбщегоНазначенияБПВызовСервера.УдалитьПовторяющиесяЭлементыМассива(СчетаФактуры);
МассивСвРегНом = Новый Массив();
Для Каждого СчетФактура Из СчетаФактуры Цикл
Если ЗначениеЗаполнено(СчетФактура) Тогда
СтрокаДополнительнойИнформации = ДополнительнаяИнформация.Найти(СчетФактура, "Ссылка");
Иначе
СтрокаДополнительнойИнформации = Неопределено;
КонецЕсли;
Если СтрокаДополнительнойИнформации <> Неопределено Тогда
Если СокрЛП(СтрокаДополнительнойИнформации.ГТДиСтрана) <> "" Тогда
ТекстСтранаНомерГТД = ТекстСтранаНомерГТД + ?(ТекстСтранаНомерГТД = "", "", ", ")
+ СокрЛП(СтрокаДополнительнойИнформации.ГТДиСтрана);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 4 Тогда
ТекстНомерГТД = ТекстНомерГТД + ?(ТекстНомерГТД = "", "", ";")
+ СокрЛП(СтрокаДополнительнойИнформации.РегистрационныйНомерТД);
Иначе
ТекстНомерГТД = ТекстНомерГТД + ?(ТекстНомерГТД = "", "", ";")
+ СокрЛП(СтрокаДополнительнойИнформации.ГТД);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаДополнительнойИнформации.СвРегНом) Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивСвРегНом, СтрокаДополнительнойИнформации.СвРегНом);
КонецЕсли;
КонецЕсли;
КонецЦикла;
МассивРегНомТД = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекстНомерГТД, ";");
Для Каждого ЭлементКоллекции Из МассивРегНомТД Цикл
Если Не ЗначениеЗаполнено(ЭлементКоллекции) Тогда
Продолжить;
КонецЕсли;
СтруктураСвРегНом = Новый Структура("РегНомПросл,КолТовПросл,СтоимТовПросл,ОКЕИ");
СтруктураСвРегНом.РегНомПросл = ЭлементКоллекции;
МассивСвРегНом.Добавить(СтруктураСвРегНом);
КонецЦикла;
Если ПараметрыЗаполнения.ВсегоПокупок < 0 И (ПараметрыЗаполнения.СуммаБезНДС <> 0 ИЛИ ПараметрыЗаполнения.НДС <> 0) Тогда
УчетНДСПереопределяемый.ПреобразоватьПоказателиРНПТКСторнирующейЗаписи(МассивСвРегНом);
КонецЕсли;
Если ЗначениеЗаполнено(МассивСвРегНом) Тогда
ПервыйРНПТ = МассивСвРегНом[0];
СоставСтроки.Вставить("РегНомер", ПервыйРНПТ.РегНомПросл);
СоставСтроки.Вставить("КолПрослеж", ПервыйРНПТ.КолТовПросл);
СоставСтроки.Вставить("СтоимПрослеж", ПервыйРНПТ.СтоимТовПросл);
СоставСтроки.Вставить("ЕдПрослеж", ПервыйРНПТ.ОКЕИ);
СтруктураПараметров.Вставить("МассивСвРегНом", МассивСвРегНом);
Иначе
СоставСтроки.Вставить("РегНомер", "");
СоставСтроки.Вставить("КолПрослеж", "");
СоставСтроки.Вставить("СтоимПрослеж", "");
СоставСтроки.Вставить("ЕдПрослеж", "");
СтруктураПараметров.Вставить("МассивСвРегНом", Неопределено);
КонецЕсли;
СоставСтроки.Вставить("НомерГТД", ТекстСтранаНомерГТД);
СоставСтроки.Вставить("НомерГТД_", ТекстНомерГТД);
СчетаФактурыДокументы = ОбщегоНазначенияБПВызовСервера.УдалитьПовторяющиесяЭлементыМассива(СчетаФактурыДокументы);
Для Каждого СчетФактураДокумент Из СчетаФактурыДокументы Цикл
Если ЗначениеЗаполнено(СчетФактураДокумент) Тогда
СтрокаДополнительнойИнформации = ДополнительнаяИнформация.Найти(СчетФактураДокумент, "Ссылка");
Иначе
СтрокаДополнительнойИнформации = Неопределено;
КонецЕсли;
Если СтрокаДополнительнойИнформации <> Неопределено Тогда
РеквизитыПлатежныхДокументов = СтрокаДополнительнойИнформации.МассивПлатежныеДокументы;
Для Каждого ПлатежныйДокумент Из РеквизитыПлатежныхДокументов Цикл
НомерДатаОплаты = "" + ПлатежныйДокумент.НомерДокументаОплаты
+ ";" + Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
НомерОтДатыОплаты = "" + ПлатежныйДокумент.НомерДокументаОплаты
+ " от " + Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено тогда
ТекстОплатыСНомером = ТекстОплатыСНомером
+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", ","+ Символы.ПС) + НомерДатаОплаты;
ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты
+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";"+ Символы.ПС) + НомерОтДатыОплаты;
СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураДокПдтвУпл = Новый Структура("НомДокПдтвУпл,ДатаДокПдтвУпл");
СтруктураДокПдтвУпл.НомДокПдтвУпл = ПлатежныйДокумент.НомерДокументаОплаты;
СтруктураДокПдтвУпл.ДатаДокПдтвУпл = Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
Иначе
СтруктураДокПдтвУпл = Новый Структура("НомерДокУплНал,ДатаДокУплНал ");
СтруктураДокПдтвУпл.НомерДокУплНал = ПлатежныйДокумент.НомерДокументаОплаты;
СтруктураДокПдтвУпл.ДатаДокУплНал = Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
КонецЕсли;
МассивДокПдтвУпл.Добавить(СтруктураДокПдтвУпл);
КонецЕсли;
КонецЦикла;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 < 4
И НЕ ПустаяСтрока(СокрЛП(СтрокаДополнительнойИнформации.Графа9)) Тогда
ТекстГрафа9 = ТекстГрафа9 + ?(ПустаяСтрока(ТекстГрафа9), "", ", ")
+ СтрокаДополнительнойИнформации.Графа9;
ТекстГрафа10 = ТекстГрафа10 + ?(ПустаяСтрока(ТекстГрафа10), "", ", ")
+ СтрокаДополнительнойИнформации.Графа10;
МассивСвПрод = СтрокаДополнительнойИнформации.МассивСвПрод;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ПараметрыЗаполнения.КодВидаОперации = "20"
И ПараметрыЗаполнения.НалоговыйПериод >= '20190101'
И Не ЗначениеЗаполнено(ТекстНомерОтДатаОплаты) Тогда
ТекстНомерОтДатаОплаты = "-";
КонецЕсли;
СоставСтроки.Вставить("ДатаОплаты", ТекстОплаты);
СоставСтроки.Вставить("НомерДатаОплаты", ТекстОплатыСНомером);
СоставСтроки.Вставить("НомерОтДатаОплаты", ТекстНомерОтДатаОплаты);
СоставСтроки.Вставить("Графа10", ?(ПустаяСтрока(ТекстГрафа9), Графа10, ТекстГрафа10));
Если СводныйКомиссионныйСчетФактура Тогда
СоставСтроки.Вставить("Продавец");
Иначе
СоставСтроки.Вставить("Продавец", ?(ПустаяСтрока(ТекстГрафа9), ПараметрыЗаполнения.Продавец, ТекстГрафа9));
КонецЕсли;
Если НЕ ПустаяСтрока(ТекстГрафа9)
ИЛИ СводныйКомиссионныйСчетФактура Тогда
Посредник = ПараметрыЗаполнения.Продавец;
ПосредникИНН = ПараметрыЗаполнения.ПродавецИНН;
ПосредникКПП = ПараметрыЗаполнения.ПродавецКПП;
ПосредникИНН_КПП = Строка(ПараметрыЗаполнения.ПродавецИНН)
+ ?(ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецКПП), "/" + Строка(ПараметрыЗаполнения.ПродавецКПП), "");
СоставСтроки.Вставить("Контрагент", ТекстГрафа9);
ИначеЕсли ЗначениеЗаполнено(ПараметрыЗаполнения.Посредник) Тогда
Посредник = ПараметрыЗаполнения.Посредник;
ПосредникИНН = ПараметрыЗаполнения.ПосредникИНН;
ПосредникКПП = ПараметрыЗаполнения.ПосредникКПП;
ПосредникИНН_КПП = Строка(ПараметрыЗаполнения.ПосредникИНН)
+ ?(ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникКПП), "/" + Строка(ПараметрыЗаполнения.ПосредникКПП), "");
Иначе
Посредник = "";
ПосредникИНН_КПП = "";
ПосредникИНН = "";
ПосредникКПП = "";
КонецЕсли;
СоставСтроки.Вставить("Посредник", Посредник);
СоставСтроки.Вставить("ПосредникИНН_КПП", ПосредникИНН_КПП);
ЗаполнитьЗначенияСвойств(Секция, СоставСтроки);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ДополнительныеСведения = Новый Структура("Контрагент,ПредставлениеКонтрагента,Документ,ПредставлениеДокумента");
СоставСтроки.Вставить("НомерПор", Секция.Ном);
СоставСтроки.Вставить("НомСчФПрод", ПредставлениеСФ.Номер);
СоставСтроки.Вставить("ДатаСчФПрод", ПредставлениеСФ.Дата);
СоставСтроки.Вставить("НомИспрСчФ", ПредставлениеСФ.НомерИсправленный);
СоставСтроки.Вставить("ДатаИспрСчФ", ПредставлениеСФ.ДатаИсправленный);
СоставСтроки.Вставить("НомКСчФПрод", ПредставлениеСФ.НомерКорректировочный);
СоставСтроки.Вставить("ДатаКСчФПрод", ПредставлениеСФ.ДатаКорректировочный);
СоставСтроки.Вставить("НомИспрКСчФ", ПредставлениеСФ.НомерИсправленныйКорректировочный);
СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
Если СтруктураПараметров.ПравилаЗаполнения = "2015Кв1" Тогда
СоставСтроки.Вставить("НомТД", ТекстНомерГТД);
ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2017Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4" Тогда
Если ЗначениеЗаполнено(ТекстНомерГТД) Тогда
РегНомТДНеуникальные = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекстНомерГТД, ";");
МассивРегНомТД = ОбщегоНазначенияКлиентСервер.СвернутьМассив(РегНомТДНеуникальные);
КонецЕсли;
СоставСтроки.Вставить("РегНомТД", МассивРегНомТД);
ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
СоставСтроки.Вставить("СвРегНом", МассивСвРегНом);
КонецЕсли;
СоставСтроки.Вставить("ОКВ", Строка(ПараметрыЗаполнения.ВалютаКод));
СоставСтроки.Вставить("СтоимПокупВ", СоставСтроки.ВсегоПокупок);
СоставСтроки.Вставить("СумНДСВыч", СоставСтроки.НДС);
СоставСтроки.Вставить("СумНДС", СоставСтроки.НДС);
МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрыЗаполнения.КодВидаОперации, ";");
СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
НеВыгружатьПродавца = МассивКодВидОпер.Найти("19") <> Неопределено ИЛИ МассивКодВидОпер.Найти("20") <> Неопределено;
МассивДатаУчТов = Новый Массив();
Если ЗначениеЗаполнено(ЗаписьКниги.ДатаПринятияНаУчет) Тогда
МассивДатаУчТов.Добавить(Формат(ЗаписьКниги.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
КонецЕсли;
СоставСтроки.Вставить("ДатаУчТов", МассивДатаУчТов);
СоставСтроки.Вставить("ДокПдтвУпл", МассивДокПдтвУпл);
Если (СтруктураПараметров.ПравилаЗаполнения = "2020Кв4"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1")
И НеВыгружатьПродавца Тогда
МассивСвПрод.Очистить();
СоставСтроки.Вставить("СвПрод", МассивСвПрод);
Если ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникСсылка)
И (ЗначениеЗаполнено(ПосредникИНН) ИЛИ ЗначениеЗаполнено(ПосредникКПП)) Тогда
СтруктураРеквизитовПосредника = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПосредникИНН, ПосредникКПП);
СтруктураРеквизитовПосредника.Вставить("Контрагент", ПараметрыЗаполнения.ПосредникСсылка);
СтруктураРеквизитовПосредника.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Посредник);
СоставСтроки.Вставить("СвПос", СтруктураРеквизитовПосредника);
КонецЕсли;
ИначеЕсли (СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1")
И СводныйКомиссионныйСчетФактура Тогда
МассивСвПрод.Очистить();
СоставСтроки.Вставить("СвПрод", МассивСвПрод);
Если ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецИНН)
ИЛИ ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецКПП) Тогда
СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
ПараметрыЗаполнения.ПродавецИНН, ПараметрыЗаполнения.ПродавецКПП);
СтруктураРеквизитовКонтрагента.Вставить("Контрагент", ПараметрыЗаполнения.Контрагент);
СтруктураРеквизитовКонтрагента.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Продавец);
СоставСтроки.Вставить("СвПос", СтруктураРеквизитовКонтрагента);
КонецЕсли;
Иначе
Если МассивСвПрод.Количество() = 0 Тогда
Если ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецИНН)
ИЛИ ЗначениеЗаполнено(ПараметрыЗаполнения.ПродавецКПП) Тогда
СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
ПараметрыЗаполнения.ПродавецИНН, ПараметрыЗаполнения.ПродавецКПП);
СтруктураРеквизитовКонтрагента.Вставить("Контрагент", ПараметрыЗаполнения.Контрагент);
СтруктураРеквизитовКонтрагента.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Продавец);
МассивСвПрод.Добавить(СтруктураРеквизитовКонтрагента);
КонецЕсли;
ДополнительныеСведения.Контрагент = ПараметрыЗаполнения.Контрагент;
ДополнительныеСведения.ПредставлениеКонтрагента = ПараметрыЗаполнения.Продавец;
Иначе
ДополнительныеСведения.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
ДополнительныеСведения.ПредставлениеКонтрагента = НСтр("ru='Сводные счета-фактуры'");
КонецЕсли;
СоставСтроки.Вставить("СвПрод", МассивСвПрод);
Если ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникСсылка)
И (ЗначениеЗаполнено(ПосредникИНН) ИЛИ ЗначениеЗаполнено(ПосредникКПП)) Тогда
СтруктураРеквизитовПосредника = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПосредникИНН, ПосредникКПП);
СтруктураРеквизитовПосредника.Вставить("Контрагент", ПараметрыЗаполнения.ПосредникСсылка);
СтруктураРеквизитовПосредника.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Посредник);
СоставСтроки.Вставить("СвПос", СтруктураРеквизитовПосредника);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ПредставлениеСФ.НомерКорректировочный) Тогда
ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
НСтр("ru='Корректировочный счет-фактура № %1 от %2 на сумму %3 %4'"),
ПредставлениеСФ.НомерКорректировочный,
ПредставлениеСФ.ДатаКорректировочный,
Формат(СоставСтроки.ВсегоПокупок, "ЧДЦ=2; ЧН="),
ПараметрыЗаполнения.ВалютаНаименование);
Иначе
ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
НСтр("ru='%1 на сумму %2 %3'"),
ПредставлениеСФ.Представление,
Формат(СоставСтроки.ВсегоПокупок, "ЧДЦ=2; ЧН="),
ПараметрыЗаполнения.ВалютаНаименование);
КонецЕсли;
ДополнительныеСведения.Документ = СоставСтроки.СчетФактура;
СоставСтроки.Вставить("ДополнительныеСведения", ДополнительныеСведения);
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел81.Добавить();
Иначе
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел8.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
СоставСтроки.Вставить("НомПП", Секция.Ном);
СоставСтроки.Вставить("НомерСчФ", ПредставлениеСФ.Номер);
СоставСтроки.Вставить("ДатаСчФ", ПредставлениеСФ.Дата);
СоставСтроки.Вставить("НомИспрСчФ", ПредставлениеСФ.НомерИсправленный);
СоставСтроки.Вставить("ДатаИспрСчФ", ПредставлениеСФ.ДатаИсправленный);
СоставСтроки.Вставить("НомерКСчФ", ПредставлениеСФ.НомерКорректировочный);
СоставСтроки.Вставить("ДатаКСчФ", ПредставлениеСФ.ДатаКорректировочный);
СоставСтроки.Вставить("НомИспрКСчФ", ПредставлениеСФ.НомерИсправленныйКорректировочный);
СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
МассивНомТД = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекстНомерГТД, ";");
СоставСтроки.Вставить("НомерТД", МассивНомТД);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5
И Не ЗначениеЗаполнено(ПараметрыЗаполнения.ВалютаКод) Тогда
ВалютаКод = "643";
Иначе
ВалютаКод = Строка(ПараметрыЗаполнения.ВалютаКод);
КонецЕсли;
СоставСтроки.Вставить("КодОКВ", ВалютаКод);
СоставСтроки.Вставить("СтТовУчНалВсего", СоставСтроки.ВсегоПокупок);
СоставСтроки.Вставить("СтПокСчФВал", СоставСтроки.ВсегоПокупок);
СоставСтроки.Вставить("СумНДСВыч", ?(СоставСтроки.НДС = 0, "без НДС", СоставСтроки.НДС));
МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрыЗаполнения.КодВидаОперации, ";");
СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
МассивДатаПринУчет = Новый Массив();
Если ЗначениеЗаполнено(ЗаписьКниги.ДатаПринятияНаУчет) Тогда
МассивДатаПринУчет.Добавить(Формат(ЗаписьКниги.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
КонецЕсли;
СоставСтроки.Вставить("ДатаПринУчет", МассивДатаПринУчет);
СоставСтроки.Вставить("СвДокУплНал", МассивДокПдтвУпл);
СтруктураРеквизитовКонтрагента = Новый Структура();
Если МассивСвПрод.Количество() = 0
И НЕ ПустаяСтрока(ПараметрыЗаполнения.ПродавецИНН) Тогда
СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПараметрыЗаполнения.ПродавецИНН, ПараметрыЗаполнения.ПродавецКПП);
ИначеЕсли МассивСвПрод.Количество() > 0 Тогда
СтруктураРеквизитовКонтрагента = МассивСвПрод[0];
КонецЕсли;
Если СтруктураРеквизитовКонтрагента.Свойство("ИННФЛ") Тогда
СоставСтроки.Вставить("ИННФЛ", СтруктураРеквизитовКонтрагента.ИННФЛ);
ИначеЕсли СтруктураРеквизитовКонтрагента.Свойство("ИННЮЛ") Тогда
СоставСтроки.Вставить("ИННЮЛ", СтруктураРеквизитовКонтрагента.ИННЮЛ);
СоставСтроки.Вставить("КПП", СтруктураРеквизитовКонтрагента.КПП);
КонецЕсли;
МассивНаимПрод = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СоставСтроки.Продавец, ";");
Если МассивНаимПрод.Количество() > 0 Тогда
СоставСтроки.Вставить("НаимПрод", МассивНаимПрод[0]);
КонецЕсли;
Если НЕ ПустаяСтрока(ПосредникИНН) Тогда
СоставСтроки.Вставить("СвПосредн",
УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПосредникИНН, ПосредникКПП, Посредник));
КонецЕсли;
Если ЗначениеЗаполнено(МассивСвРегНом) Тогда
СоставСтроки.Вставить("СвРегНом", МассивСвРегНом);
КонецЕсли;
СтрокаРаздела = СтруктураПараметров.Записи.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьСтрокуКнигиПокупокСводныйКомиссионный(
Секция, ДетальнаяЗапись, ДополнительнаяИнформация, СтруктураПараметров)
СоставСтроки = Новый Структура;
ТекстОплаты = "";
СписокДатОплат = Новый СписокЗначений();
ТекстОплатыСНомером = "";
ТекстНомерОтДатаОплаты = "";
СписокНомеровИДатОплат = Новый СписокЗначений();
МассивДокПдтвУпл = Новый Массив();
МассивРегНомТД = Новый Массив();
ТекстНомерГТД = "";
ТекстСтранаНомерГТД = "";
ТекстГрафа9 = "";
ТекстГрафа10 = "";
МассивСвПрод = Новый Массив();
СуммаСНДС = 0;
СчетаФактуры = Новый Массив();
СчетаФактурыДокументы = Новый Массив();
ЗаписьКнигиДетальная = ДетальнаяЗапись.Выбрать(ОбходРезультатаЗапроса.Прямой);
КоличествоЗаписей = ЗаписьКнигиДетальная.Количество();
ВсегоПокупок = 0;
НДС = 0;
СчетчикЗаписей = 0;
Пока ЗаписьКнигиДетальная.Следующий() Цикл
ЗаполнитьЗначенияСвойств(Секция, ЗаписьКнигиДетальная);
СчетчикЗаписей = СчетчикЗаписей + 1;
Если ЗаписьКнигиДетальная.НаАванс Тогда
ВсегоПокупок = ВсегоПокупок + ЗаписьКнигиДетальная.ВсегоПокупок;
ИначеЕсли ВсегоПокупок = 0 Тогда
ВсегоПокупок = ЗаписьКнигиДетальная.ВсегоПокупок;
КонецЕсли;
НДС = НДС + ЗаписьКнигиДетальная.НДС;
Если КоличествоЗаписей = СчетчикЗаписей Тогда
ВалютаКод = Строка(ЗаписьКнигиДетальная.ВалютаКод);
ВалютаНаименование = ЗаписьКнигиДетальная.ВалютаНаименование;
Если ЗначениеЗаполнено(ЗаписьКнигиДетальная.НомерДокументаОплаты) Тогда
НомерДатаОплаты = СтрШаблон(НСтр("ru='%1;%2'"),
ЗаписьКнигиДетальная.НомерДокументаОплаты, Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
НомерОтДатаОплаты = СтрШаблон(НСтр("ru='%1 от %2'"),
ЗаписьКнигиДетальная.НомерДокументаОплаты, Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено тогда
ТекстОплатыСНомером = ТекстОплатыСНомером
+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", "," + Символы.ПС) + НомерДатаОплаты;
ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты
+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", "," + Символы.ПС) + НомерОтДатаОплаты;
СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураДокПдтвУпл = Новый Структура("НомДокПдтвУпл,ДатаДокПдтвУпл");
СтруктураДокПдтвУпл.НомДокПдтвУпл = ЗаписьКнигиДетальная.НомерДокументаОплаты;
СтруктураДокПдтвУпл.ДатаДокПдтвУпл = Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
Иначе
СтруктураДокПдтвУпл = Новый Структура("НомерДокУплНал,ДатаДокУплНал");
СтруктураДокПдтвУпл.НомерДокУплНал = ЗаписьКнигиДетальная.НомерДокументаОплаты;
СтруктураДокПдтвУпл.ДатаДокУплНал = Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
КонецЕсли;
МассивДокПдтвУпл.Добавить(СтруктураДокПдтвУпл);
КонецЕсли;
КонецЕсли;
СоставСтроки.Вставить("СчетФактура");
СоставСтроки.СчетФактура = ЗаписьКнигиДетальная.СчетФактураДокументРасшифровка;
СчетаФактуры.Добавить(ЗаписьКнигиДетальная.СчетФактура);
СчетаФактурыДокументы.Добавить(ЗаписьКнигиДетальная.СчетФактураДокумент);
ЗаполнитьЗначенияСвойств(Секция, ЗаписьКнигиДетальная);
СоставСтроки.Вставить("КодОперации", ЗаписьКнигиДетальная.КодВидаОперации);
СоставСтроки.Вставить("ПродавецИНН", ЗаписьКнигиДетальная.ПродавецИНН);
СоставСтроки.Вставить("ПродавецКПП", ЗаписьКнигиДетальная.ПродавецКПП);
ПредставлениеСФ = УчетНДС.ОпределитьДатуИНомерСФ(ЗаписьКнигиДетальная);
СоставСтроки.Вставить("ДатаНомер", ПредставлениеСФ.ДатаНомер);
СоставСтроки.Вставить("НомерДата", ПредставлениеСФ.НомерДата);
СоставСтроки.Вставить("НомерОтДата", ПредставлениеСФ.НомерОтДата);
СоставСтроки.Вставить("НомерДатаИсправления", ПредставлениеСФ.НомерДатаИсправленный);
СоставСтроки.Вставить("НомерОтДатаИсправленный", ПредставлениеСФ.НомерОтДатаИсправленный);
СоставСтроки.Вставить("НомерДатаКорректировки", ПредставлениеСФ.НомерДатаКорректировочный);
СоставСтроки.Вставить("НомерОтДатаКорректировочный", ПредставлениеСФ.НомерОтДатаКорректировочный);
СоставСтроки.Вставить("НомерДатаИсправленияКорректировки",
ПредставлениеСФ.НомерДатаИсправленныйКорректировочный);
СоставСтроки.Вставить("НомерОтДатаИсправленныйКорректировочный",
ПредставлениеСФ.НомерОтДатаИсправленныйКорректировочный);
Графа10 = Строка(ЗаписьКнигиДетальная.ПродавецИНН)
+ ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПродавецКПП), "/" , "")
+ Строка(ЗаписьКнигиДетальная.ПродавецКПП);
СоставСтроки.Вставить("Валюта", ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.Валюта),
"" + ЗаписьКнигиДетальная.Валюта + ", " + ЗаписьКнигиДетальная.ВалютаКод, ""));
СоставСтроки.Вставить("ВсегоПокупок", ВсегоПокупок);
СоставСтроки.Вставить("НДС", НДС);
СоставСтроки.Вставить("СуммаБезНДС18", 0);
СоставСтроки.Вставить("НДС18", 0);
СоставСтроки.Вставить("СуммаБезНДС10", 0);
СоставСтроки.Вставить("НДС10", 0);
СоставСтроки.Вставить("НДС0", 0);
СоставСтроки.Вставить("СуммаСовсемБезНДС", 0);
СоставСтроки.Вставить("ДатаОприходования", Формат(ЗаписьКнигиДетальная.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
СчетаФактуры = ОбщегоНазначенияБПВызовСервера.УдалитьПовторяющиесяЭлементыМассива(СчетаФактуры);
Для Каждого СчетФактура Из СчетаФактуры Цикл
Если ЗначениеЗаполнено(СчетФактура) Тогда
СтрокаДополнительнойИнформации = ДополнительнаяИнформация.Найти(СчетФактура, "Ссылка");
Иначе
СтрокаДополнительнойИнформации = Неопределено;
КонецЕсли;
Если СтрокаДополнительнойИнформации <> Неопределено Тогда
Если СокрЛП(СтрокаДополнительнойИнформации.ГТДиСтрана) <> "" Тогда
ТекстСтранаНомерГТД = ТекстСтранаНомерГТД + ?(ТекстСтранаНомерГТД = "", "", ", ")
+ СокрЛП(СтрокаДополнительнойИнформации.ГТДиСтрана);
ТекстНомерГТД = ТекстНомерГТД + ?(ТекстНомерГТД = "", "", ", ")
+ СокрЛП(СтрокаДополнительнойИнформации.ГТД);
МассивРегНомТД.Добавить(СокрЛП(СтрокаДополнительнойИнформации.ГТД));
КонецЕсли;
КонецЕсли;
КонецЦикла;
СоставСтроки.Вставить("НомерГТД", ТекстСтранаНомерГТД);
СоставСтроки.Вставить("НомерГТД_", ТекстНомерГТД);
СчетаФактурыДокументы = ОбщегоНазначенияБПВызовСервера.УдалитьПовторяющиесяЭлементыМассива(СчетаФактурыДокументы);
Для Каждого СчетФактураДокумент Из СчетаФактурыДокументы Цикл
Если ЗначениеЗаполнено(СчетФактураДокумент) Тогда
СтрокаДополнительнойИнформации = ДополнительнаяИнформация.Найти(СчетФактураДокумент, "Ссылка");
Иначе
СтрокаДополнительнойИнформации = Неопределено;
КонецЕсли;
Если СтрокаДополнительнойИнформации <> Неопределено Тогда
РеквизитыПлатежныхДокументов = СтрокаДополнительнойИнформации.МассивПлатежныеДокументы;
Для Каждого ПлатежныйДокумент Из РеквизитыПлатежныхДокументов Цикл
НомерДатаОплаты = "" + ПлатежныйДокумент.НомерДокументаОплаты
+ ";" + Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
НомерОтДатыОплаты = "" + ПлатежныйДокумент.НомерДокументаОплаты
+ " от " + Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено тогда
ТекстОплатыСНомером = ТекстОплатыСНомером
+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", ","+ Символы.ПС) + НомерДатаОплаты;
СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты
+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";"+ Символы.ПС) + НомерОтДатыОплаты;
СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураДокПдтвУпл = Новый Структура("НомДокПдтвУпл,ДатаДокПдтвУпл");
СтруктураДокПдтвУпл.НомДокПдтвУпл = ПлатежныйДокумент.НомерДокументаОплаты;
СтруктураДокПдтвУпл.ДатаДокПдтвУпл = Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
Иначе
СтруктураДокПдтвУпл = Новый Структура("НомерДокУплНал,ДатаДокУплНал ");
СтруктураДокПдтвУпл.НомерДокУплНал = ПлатежныйДокумент.НомерДокументаОплаты;
СтруктураДокПдтвУпл.ДатаДокУплНал = Формат(ПлатежныйДокумент.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
КонецЕсли;
МассивДокПдтвУпл.Добавить(СтруктураДокПдтвУпл);
КонецЕсли;
КонецЦикла;
Если НЕ ПустаяСтрока(СокрЛП(СтрокаДополнительнойИнформации.Графа9)) Тогда
ТекстГрафа9 = ТекстГрафа9 + ?(ПустаяСтрока(ТекстГрафа9), "", ", ")
+ СтрокаДополнительнойИнформации.Графа9;
ТекстГрафа10 = ТекстГрафа10 + ?(ПустаяСтрока(ТекстГрафа10), "", ", ")
+ СтрокаДополнительнойИнформации.Графа10;
МассивСвПрод = СтрокаДополнительнойИнформации.МассивСвПрод;
КонецЕсли;
ИначеЕсли ЗаписьКнигиДетальная.НаАванс Тогда
Если ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПродавецИНН)
ИЛИ ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПродавецКПП) Тогда
СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
ЗаписьКнигиДетальная.ПродавецИНН, ЗаписьКнигиДетальная.ПродавецКПП);
СтруктураРеквизитовКонтрагента.Вставить("Контрагент", ЗаписьКнигиДетальная.Контрагент);
СтруктураРеквизитовКонтрагента.Вставить("КонтрагентНаименование", ЗаписьКнигиДетальная.Продавец);
МассивСвПрод.Добавить(СтруктураРеквизитовКонтрагента);
КонецЕсли;
КонецЕсли;
КонецЦикла;
СоставСтроки.Вставить("НомерДатаОплаты", ТекстОплатыСНомером);
СоставСтроки.Вставить("НомерОтДатаОплаты", ТекстНомерОтДатаОплаты);
СоставСтроки.Вставить("Продавец", ?(ПустаяСтрока(ТекстГрафа9), ЗаписьКнигиДетальная.Продавец, ТекстГрафа9));
СоставСтроки.Вставить("Графа10", ?(ПустаяСтрока(ТекстГрафа9), Графа10, ТекстГрафа10));
Если НЕ ПустаяСтрока(ТекстГрафа9) Тогда
Посредник = ЗаписьКнигиДетальная.Продавец;
ПосредникИНН = ЗаписьКнигиДетальная.ПродавецИНН;
ПосредникКПП = ЗаписьКнигиДетальная.ПродавецКПП;
ПосредникИНН_КПП = Строка(ЗаписьКнигиДетальная.ПродавецИНН)
+ ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПродавецКПП), "/" + Строка(ЗаписьКнигиДетальная.ПродавецКПП), "");
СоставСтроки.Вставить("Контрагент", ТекстГрафа9);
ПосредникСсылка = ЗаписьКнигиДетальная.Контрагент;
ИначеЕсли ЗначениеЗаполнено(ЗаписьКнигиДетальная.Посредник) Тогда
Посредник = ЗаписьКнигиДетальная.Посредник;
ПосредникИНН = ЗаписьКнигиДетальная.ПосредникИНН;
ПосредникКПП = ЗаписьКнигиДетальная.ПосредникКПП;
ПосредникИНН_КПП = Строка(ЗаписьКнигиДетальная.ПосредникИНН)
+ ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПосредникКПП), "/" + Строка(ЗаписьКнигиДетальная.ПосредникКПП), "");
ПосредникСсылка = ЗаписьКнигиДетальная.ПосредникСсылка;
Иначе
Посредник = "";
ПосредникИНН_КПП = "";
ПосредникИНН = "";
ПосредникКПП = "";
ПосредникСсылка = Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
СоставСтроки.Вставить("Посредник", Посредник);
СоставСтроки.Вставить("ПосредникИНН_КПП", ПосредникИНН_КПП);
ЗаполнитьЗначенияСвойств(Секция, СоставСтроки);
КонецЕсли;
КонецЦикла;
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ДополнительныеСведения = Новый Структура("Контрагент,ПредставлениеКонтрагента,Документ,ПредставлениеДокумента");
СоставСтроки.Вставить("НомерПор", Секция.Ном);
СоставСтроки.Вставить("НомСчФПрод", ПредставлениеСФ.Номер);
СоставСтроки.Вставить("ДатаСчФПрод", ПредставлениеСФ.Дата);
СоставСтроки.Вставить("НомИспрСчФ", ПредставлениеСФ.НомерИсправленный);
СоставСтроки.Вставить("ДатаИспрСчФ", ПредставлениеСФ.ДатаИсправленный);
СоставСтроки.Вставить("НомКСчФПрод", ПредставлениеСФ.НомерКорректировочный);
СоставСтроки.Вставить("ДатаКСчФПрод", ПредставлениеСФ.ДатаКорректировочный);
СоставСтроки.Вставить("НомИспрКСчФ", ПредставлениеСФ.НомерИсправленныйКорректировочный);
СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
Если СтруктураПараметров.ПравилаЗаполнения = "2015Кв1" Тогда
СоставСтроки.Вставить("НомТД", ТекстНомерГТД);
ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2017Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4" Тогда
СоставСтроки.Вставить("РегНомТД", МассивРегНомТД);
КонецЕсли;
СоставСтроки.Вставить("ОКВ", ВалютаКод);
СоставСтроки.Вставить("СтоимПокупВ", СоставСтроки.ВсегоПокупок);
СоставСтроки.Вставить("СумНДСВыч", СоставСтроки.НДС);
СоставСтроки.Вставить("СумНДС", СоставСтроки.НДС);
МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ДетальнаяЗапись.КодВидаОперации, ";");
СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
МассивДатаУчТов = Новый Массив();
Если ЗначениеЗаполнено(ДетальнаяЗапись.ДатаПринятияНаУчет) Тогда
МассивДатаУчТов.Добавить(Формат(ДетальнаяЗапись.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
КонецЕсли;
СоставСтроки.Вставить("ДатаУчТов", МассивДатаУчТов);
СоставСтроки.Вставить("ДокПдтвУпл", МассивДокПдтвУпл);
ДополнительныеСведения.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
ДополнительныеСведения.ПредставлениеКонтрагента = НСтр("ru='Сводные счета-фактуры'");
СоставСтроки.Вставить("СвПрод", МассивСвПрод);
Если ЗначениеЗаполнено(Посредник)
И (ЗначениеЗаполнено(ПосредникИНН) ИЛИ ЗначениеЗаполнено(ПосредникКПП))Тогда
СтруктураРеквизитовПосредника = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПосредникИНН, ПосредникКПП);
СтруктураРеквизитовПосредника.Вставить("Контрагент", ПосредникСсылка);
СтруктураРеквизитовПосредника.Вставить("КонтрагентНаименование", Посредник);
СоставСтроки.Вставить("СвПос", СтруктураРеквизитовПосредника);
КонецЕсли;
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел81.Добавить();
Иначе
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел8.Добавить();
КонецЕсли;
Если ЗначениеЗаполнено(ПредставлениеСФ.НомерКорректировочный) Тогда
ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
НСтр("ru='Корректировочный счет-фактура № %1 от %2 на сумму %3 %4'"),
ПредставлениеСФ.НомерКорректировочный,
ПредставлениеСФ.ДатаКорректировочный,
Формат(СоставСтроки.ВсегоПокупок, "ЧДЦ=2; ЧН="),
ВалютаНаименование);
Иначе
ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
НСтр("ru='%1 на сумму %2 %3'"),
ПредставлениеСФ.Представление,
Формат(СоставСтроки.ВсегоПокупок, "ЧДЦ=2; ЧН="),
ВалютаНаименование);
КонецЕсли;
ДополнительныеСведения.Документ = СоставСтроки.СчетФактура;
СоставСтроки.Вставить("ДополнительныеСведения", ДополнительныеСведения);
ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
СоставСтроки.Вставить("НомПП", Секция.Ном);
СоставСтроки.Вставить("НомерСчФ", ПредставлениеСФ.Номер);
СоставСтроки.Вставить("ДатаСчФ", ПредставлениеСФ.Дата);
СоставСтроки.Вставить("НомИспрСчФ", ПредставлениеСФ.НомерИсправленный);
СоставСтроки.Вставить("ДатаИспрСчФ", ПредставлениеСФ.ДатаИсправленный);
СоставСтроки.Вставить("НомерКСчФ", ПредставлениеСФ.НомерКорректировочный);
СоставСтроки.Вставить("ДатаКСчФ", ПредставлениеСФ.ДатаКорректировочный);
СоставСтроки.Вставить("НомИспрКСчФ", ПредставлениеСФ.НомерИсправленныйКорректировочный);
СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
МассивНомТД = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекстНомерГТД, ";");
СоставСтроки.Вставить("НомерТД", МассивНомТД);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5
И Не ЗначениеЗаполнено(ВалютаКод) Тогда
ВалютаКод = "643";
КонецЕсли;
СоставСтроки.Вставить("КодОКВ", ВалютаКод);
СоставСтроки.Вставить("СтТовУчНалВсего", СоставСтроки.ВсегоПокупок);
СоставСтроки.Вставить("СтПокСчФВал", СоставСтроки.ВсегоПокупок);
СоставСтроки.Вставить("СумНДСВыч", ?(СоставСтроки.НДС = 0, "без НДС", СоставСтроки.НДС));
МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ДетальнаяЗапись.КодВидаОперации, ";");
СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
МассивДатаПринУчет = Новый Массив();
Если ЗначениеЗаполнено(ДетальнаяЗапись.ДатаПринятияНаУчет) Тогда
МассивДатаПринУчет.Добавить(Формат(ДетальнаяЗапись.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy"));
КонецЕсли;
СоставСтроки.Вставить("ДатаПринУчет", МассивДатаПринУчет);
СоставСтроки.Вставить("СвДокУплНал", МассивДокПдтвУпл);
СтруктураРеквизитовКонтрагента = Новый Структура();
Если МассивСвПрод.Количество() = 0
И НЕ ПустаяСтрока(ДетальнаяЗапись.ПродавецИНН) Тогда
СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
ДетальнаяЗапись.ПродавецИНН, ДетальнаяЗапись.ПродавецКПП);
ИначеЕсли МассивСвПрод.Количество() > 0 Тогда
СтруктураРеквизитовКонтрагента = МассивСвПрод[0];
КонецЕсли;
Если СтруктураРеквизитовКонтрагента.Свойство("ИННФЛ") Тогда
СоставСтроки.Вставить("ИННФЛ", СтруктураРеквизитовКонтрагента.ИННФЛ);
ИначеЕсли СтруктураРеквизитовКонтрагента.Свойство("ИННЮЛ") Тогда
СоставСтроки.Вставить("ИННЮЛ", СтруктураРеквизитовКонтрагента.ИННЮЛ);
СоставСтроки.Вставить("КПП", СтруктураРеквизитовКонтрагента.КПП);
КонецЕсли;
МассивНаимПрод = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СоставСтроки.Продавец, ";");
Если МассивНаимПрод.Количество() > 0 Тогда
СоставСтроки.Вставить("НаимПрод", МассивНаимПрод[0]);
КонецЕсли;
Если НЕ ПустаяСтрока(ПосредникИНН) Тогда
СоставСтроки.Вставить("СвПосредн",
УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПосредникИНН, ПосредникКПП, Посредник));
КонецЕсли;
СтрокаРаздела = СтруктураПараметров.Записи.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
КонецЕсли;
КонецПроцедуры
Процедура УстановитьПараметрыЗапросаКнигиПокупок(Запрос, СтруктураПараметров)
Запрос.УстановитьПараметр("НачалоПериода", СтруктураПараметров.НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецДня(СтруктураПараметров.КонецПериода));
Запрос.УстановитьПараметр("НачалоПримененияПостановления1137",
УчетНДСПереопределяемый.ПолучитьДатуНачалаДействияПостановления1137());
Запрос.УстановитьПараметр("Организация", СтруктураПараметров.СписокОрганизаций);
Запрос.УстановитьПараметр("ОтбиратьПоКонтрагенту", НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме И СтруктураПараметров.ОтбиратьПоКонтрагенту);
Запрос.УстановитьПараметр("КонтрагентДляОтбора", СтруктураПараметров.КонтрагентДляОтбора);
Запрос.УстановитьПараметр("ВыводитьПокупателейПоАвансам", СтруктураПараметров.ВыводитьПокупателейПоАвансам);
Запрос.УстановитьПараметр("ВалютаРегУчета", ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета());
Запрос.УстановитьПараметр("НаименованиеВалютыРубль", НСтр("ru='руб.'"));
ЗаполнениеДокументовОтчетности = СтруктураПараметров.ЗаполнениеДокумента ИЛИ СтруктураПараметров.ЗаполнениеДекларации;
Если ЗаполнениеДокументовОтчетности И СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Запрос.УстановитьПараметр("НачалоНалоговогоПериода", СтруктураПараметров.НачалоНалоговогоПериода);
Запрос.УстановитьПараметр("КонецНалоговогоПериода", КонецДня(СтруктураПараметров.КонецНалоговогоПериода));
КонецЕсли;
Запрос.УстановитьПараметр("ПравилаПостановления735", СтруктураПараметров.ВерсияПостановленияНДС1137 >= 3);
Запрос.УстановитьПараметр("Постановление1137_2019", СтруктураПараметров.Постановление1137_2019);
Запрос.УстановитьПараметр("ПравилаПостановления981", СтруктураПараметров.ВерсияПостановленияНДС1137 >= 4);
СтавкиНДС18 = Новый Массив();
СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18);
СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18_118);
СтавкиНДС10 = Новый Массив();
СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10);
СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10_110);
СтавкаНДС0 = Перечисления.СтавкиНДС.НДС0;
СтавкаБезНДС = Перечисления.СтавкиНДС.БезНДС;
Запрос.УстановитьПараметр("СтавкиНДС18", СтавкиНДС18);
Запрос.УстановитьПараметр("СтавкиНДС10", СтавкиНДС10);
Запрос.УстановитьПараметр("СтавкаНДС0", СтавкаНДС0);
Запрос.УстановитьПараметр("СтавкаБезНДС", СтавкаБезНДС);
ВидыЦенностей_СобственныеСФ = Новый Массив;
ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.ВнутреннееПотребление);
ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.СМРСобственнымиСилами);
ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученных);
Запрос.УстановитьПараметр("ВидыЦенностей_СобственныеСФ", ВидыЦенностей_СобственныеСФ);
ВидыЦенностей_Аванс = Новый Массив;
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученныеНалоговыйАгент);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученныхНалоговыйАгент);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученных);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыВыданные);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыВыданныеНалоговыйАгент);
Запрос.УстановитьПараметр("ВидыЦенностей_Аванс", ВидыЦенностей_Аванс);
Запрос.УстановитьПараметр("ВидыЦенностей_АвансыВыданные", Перечисления.ВидыЦенностей.АвансыВыданные);
ВидыЦенностей_СуммовыеРазницы = Новый Массив;
ВидыЦенностей_СуммовыеРазницы.Добавить(Перечисления.ВидыЦенностей.СуммыСвязанныеСРасчетамиПоОплате);
Запрос.УстановитьПараметр("ВидыЦенностей_СуммоваяРазница", ВидыЦенностей_СуммовыеРазницы);
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгент",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент());
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгентВсеВиды",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент(, Истина));
МассивДокументовИсправлений = Новый Массив;
МассивДокументовИсправлений.Добавить(Неопределено);
ТипыДокументовИсправлений = Метаданные.РегистрыНакопления.НДСЗаписиКнигиПокупок.Измерения.ИсправленныйСчетФактура.Тип;
Для Каждого МетаданныеДокумента Из Метаданные.Документы Цикл
Если ТипыДокументовИсправлений.СодержитТип(Тип("ДокументСсылка." + МетаданныеДокумента.Имя)) Тогда
МассивДокументовИсправлений.Добавить(Документы[МетаданныеДокумента.Имя].ПустаяСсылка());
КонецЕсли;
КонецЦикла;
Запрос.УстановитьПараметр("ПустыеДокументыИсправления", МассивДокументовИсправлений);
Запрос.УстановитьПараметр("ТипыДокументовРучныхОперацийНДС", УчетНДСПереопределяемый.ТипыДокументовРучныхОперацийНДС());
КонецПроцедуры
Функция ДополнительноеУсловиеЗапроса(СтруктураПараметров, ЗаписьДополнительногоЛиста = Ложь, ИмяТаблицы = "")
Если СтруктураПараметров.ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж Тогда
Если ЗаписьДополнительногоЛиста Тогда
СтрокаУсловия = "[ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды) И [ИмяТаблицы]КорректируемыйПериод < ДАТАВРЕМЯ(2019, 1, 1)";
Иначе
СтрокаУсловия = "[ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды)И [ИмяТаблицы]Период < ДАТАВРЕМЯ(2019, 1, 1)";
КонецЕсли;
ИначеЕсли НЕ СтруктураПараметров.ПлательщикНДС Тогда
Если ЗаписьДополнительногоЛиста Тогда
СтрокаУсловия = "[ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды) И [ИмяТаблицы]КорректируемыйПериод >= ДАТАВРЕМЯ(2019, 1, 1)";
Иначе
СтрокаУсловия = "[ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды) И [ИмяТаблицы]Период >= ДАТАВРЕМЯ(2019, 1, 1)";
КонецЕсли;
Иначе
СтрокаУсловия = "ИСТИНА";
КонецЕсли;
Если ЗначениеЗаполнено(ИмяТаблицы) Тогда
СтрокаУсловия = СтрЗаменить(СтрокаУсловия, "[ИмяТаблицы]", ИмяТаблицы + ".");
Иначе
СтрокаУсловия = СтрЗаменить(СтрокаУсловия, "[ИмяТаблицы]", "");
КонецЕсли;
Возврат СтрокаУсловия;
КонецФункции
#Область ПолучениеЗаписей
Функция ЗаписиКнигиПокупок(СтруктураПараметров)
УстановитьПривилегированныйРежим(Истина);
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
УстановитьПараметрыЗапросаКнигиПокупок(Запрос, СтруктураПараметров);
ТекстЗапроса = ТекстЗапросаЗаписиРегистраНДСПокупки(СтруктураПараметров);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 4 Тогда
ТекстЗапроса = ТекстЗапроса + УчетНДСОтчетыПереопределяемый.ТекстЗапросаРеквизитыСчетовФактурПостановление981КнигаПокупок();
Иначе
ТекстЗапроса = ТекстЗапроса + УчетНДСОтчетыПереопределяемый.ТекстЗапросаРеквизитыСчетовФактурПостановление735КнигаПокупок();
КонецЕсли;
Запрос.Текст = ТекстЗапроса + ТекстЗапросаПодготовленныеЗаписиКнигиПокупок(СтруктураПараметров);
Запрос.Выполнить();
УчетНДСПереопределяемый.РегистрационныеСведенияНаДаты(МенеджерВременныхТаблиц);
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Запрос.Текст = ТекстЗапросаДополнительныйЛистКнигиПокупок(СтруктураПараметров);
Иначе
Запрос.Текст = ТекстЗапросаКнигаПокупок(СтруктураПараметров);
КонецЕсли;
Выборка = Запрос.Выполнить();
СтруктураПараметров.Вставить("МенеджерВременныхТаблиц", МенеджерВременныхТаблиц);
Возврат Выборка;
КонецФункции
Функция ТекстЗапросаЗаписиРегистраНДСПокупки(СтруктураПараметров)
ТекстыЗапросов = Новый Массив;
ТекстОрганизацияЯвляетсяПоставщиком = УчетНДСПереопределяемый.ТекстЗапросаСчетаФактурыПолученныеГдеОрганизацияЯвляетсяПоставщиком();
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаОрганизацияЯвляетсяПоставщиком.СчетФактура,
| ТаблицаОрганизацияЯвляетсяПоставщиком.Организация,
| ТаблицаОрганизацияЯвляетсяПоставщиком.ГоловнаяОрганизация,
| ТаблицаОрганизацияЯвляетсяПоставщиком.ЭтоКорректировкаРеализации
|
|ПОМЕСТИТЬ ВТ_ТаблицаОрганизацияЯвляетсяПоставщиком
|ИЗ
| (" + ТекстОрганизацияЯвляетсяПоставщиком + ") КАК ТаблицаОрганизацияЯвляетсяПоставщиком
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура,
| Организация
|";
ТекстыЗапросов.Добавить(ТекстЗапроса);
ТекстСчетаФактурыИсправленияКнигиПокупок = УчетНДСПереопределяемый.ТекстЗапросаСчетаФактурыИсправленияКнигиПокупок();
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаСчетаФактурыИсправления.СчетФактура,
| ТаблицаСчетаФактурыИсправления.Организация,
| ТаблицаСчетаФактурыИсправления.ГоловнаяОрганизация,
| ТаблицаСчетаФактурыИсправления.ЭтоКорректировкаПоступления,
| ТаблицаСчетаФактурыИсправления.ЭтоКорректировкаРеализации
|
|ПОМЕСТИТЬ ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок
|ИЗ
| (" + ТекстСчетаФактурыИсправленияКнигиПокупок + ") КАК ТаблицаСчетаФактурыИсправления
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура,
| Организация
|";
ТекстыЗапросов.Добавить(ТекстЗапроса);
ТекстЗапроса =
"ВЫБРАТЬ
| НДСЗаписиКнигиПокупок.Период КАК Период,
| НАЧАЛОПЕРИОДА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста
| ТОГДА НДСЗаписиКнигиПокупок.КорректируемыйПериод
| ИНАЧЕ НДСЗаписиКнигиПокупок.Период
| КОНЕЦ, КВАРТАЛ) КАК НалоговыйПериод,
| КОНЕЦПЕРИОДА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста
| ТОГДА НДСЗаписиКнигиПокупок.КорректируемыйПериод
| ИНАЧЕ НДСЗаписиКнигиПокупок.Период
| КОНЕЦ, КВАРТАЛ) КАК КонецНалоговогоПериода,
| НДСЗаписиКнигиПокупок.Организация КАК Организация,
| ВЫБОР
| КОГДА &ВыводитьПокупателейПоАвансам
| И НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПокупок.Поставщик
| КОГДА НДСЗаписиКнигиПокупок.КодВидаОперации = ""17""
| ТОГДА НДСЗаписиКнигиПокупок.Организация
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_СобственныеСФ)
| ИЛИ НДСЗаписиКнигиПокупок.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.Возврат)
| И НЕ ВТ_ТаблицаОрганизацияЯвляетсяПоставщиком.СчетФактура ЕСТЬ NULL
| ИЛИ ЕСТЬNULL(ВТ_ТаблицаОрганизацияЯвляетсяПоставщиком.ЭтоКорректировкаРеализации, ЛОЖЬ)
| ТОГДА НДСЗаписиКнигиПокупок.Организация
| КОГДА НДСЗаписиКнигиПокупок.КодВидаОперации = ""25""
| ИЛИ НДСЗаписиКнигиПокупок.КодВидаОперации = ""24""
| ТОГДА НДСЗаписиКнигиПокупок.Организация
| КОГДА НДСЗаписиКнигиПокупок.ПродавцомВыступаетОрганизация
| ТОГДА НДСЗаписиКнигиПокупок.Организация
| ИНАЧЕ НДСЗаписиКнигиПокупок.Поставщик
| КОНЕЦ КАК Контрагент,
| НДСЗаписиКнигиПокупок.Поставщик КАК КонтрагентПоСчетуФактуре,
| ВЫБОР
| КОГДА НЕ НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура
| ИНАЧЕ НДСЗаписиКнигиПокупок.СчетФактура
| КОНЕЦ КАК СчетФактура,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПокупок.ДатаОплаты
| КОНЕЦ КАК ДатаОплаты,
| НДСЗаписиКнигиПокупок.ДокументОплаты КАК ДокументОплаты,
| СУММА(ЕСТЬNULL(НДСЗаписиКнигиПокупок.СуммаБезНДС, 0) + ЕСТЬNULL(НДСЗаписиКнигиПокупок.НДС, 0)) КАК ВсегоПокупок,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.СтавкаНДС В (&СтавкиНДС18)
| И НЕ НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПокупок.СуммаБезНДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаБезНДС18,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.СтавкаНДС В (&СтавкиНДС18)
| ТОГДА НДСЗаписиКнигиПокупок.СуммаБезНДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаГрафа170,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.СтавкаНДС В (&СтавкиНДС18)
| ТОГДА НДСЗаписиКнигиПокупок.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК НДС18,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.СтавкаНДС В (&СтавкиНДС10)
| И НЕ НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПокупок.СуммаБезНДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаБезНДС10,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.СтавкаНДС В (&СтавкиНДС10)
| ТОГДА НДСЗаписиКнигиПокупок.СуммаБезНДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаГрафа180,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.СтавкаНДС В (&СтавкиНДС10)
| ТОГДА НДСЗаписиКнигиПокупок.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК НДС10,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.СтавкаНДС = &СтавкаНДС0
| ТОГДА НДСЗаписиКнигиПокупок.СуммаБезНДС + НДСЗаписиКнигиПокупок.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК НДС0,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.СтавкаНДС = &СтавкаБезНДС
| ТОГДА НДСЗаписиКнигиПокупок.СуммаБезНДС + НДСЗаписиКнигиПокупок.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаСовсемБезНДС,
| ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора КАК СчетФактураДата,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА """"
| ИНАЧЕ ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| КОНЕЦ КАК ДатаПринятияНаУчет,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| И НДСЗаписиКнигиПокупок.ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА НДСЗаписиКнигиПокупок.ДатаОплаты
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности = &ВидыЦенностей_АвансыВыданные
| ТОГДА ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПокупок.ДатаСобытия
| КОНЕЦ
| КОГДА НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| КОГДА НДСЗаписиКнигиПокупок.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПокупок.ДатаСобытия
| КОНЕЦ КАК ДатаДляСортировкиЗаписей,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НаАванс,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| И НЕ ТИПЗНАЧЕНИЯ(НДСЗаписиКнигиПокупок.СчетФактура) В (&ТипыДокументовРучныхОперацийНДС)
| ТОГДА НДСЗаписиКнигиПокупок.СтавкаНДС
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК СтавкаНДСАванса,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ НДСЗаписиКнигиПокупок.ДоговорКонтрагента
| КОНЕЦ КАК ДоговорКонтрагента,
| ВЫБОР
| КОГДА НЕ НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_НалоговыйАгент)
| ТОГДА НДСЗаписиКнигиПокупок.ДокументОплаты
| ИНАЧЕ НДСЗаписиКнигиПокупок.СчетФактура
| КОНЕЦ КАК ДокументОснованиеСчетаФактуры,
| ВЫБОР
| КОГДА (ЕСТЬNULL(ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок.ЭтоКорректировкаПоступления, ЛОЖЬ)
| ИЛИ ЕСТЬNULL(ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок.ЭтоКорректировкаРеализации, ЛОЖЬ))
| И ЕСТЬNULL(НДСЗаписиКнигиПокупок.СуммаБезНДС, 0) + ЕСТЬNULL(НДСЗаписиКнигиПокупок.НДС, 0) < 0
| ИЛИ НЕ ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок.СчетФактура ЕСТЬ NULL
| И ЕСТЬNULL(НДСЗаписиКнигиПокупок.СуммаБезНДС, 0) + ЕСТЬNULL(НДСЗаписиКнигиПокупок.НДС, 0) < 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК Исправление,
| НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПокупок.ДатаСобытия
| КОНЕЦ
| ИНАЧЕ ДанныеПервичныхДокументовИсправленныйСчетФактура.ДатаРегистратора
| КОНЕЦ КАК ДатаСобытия,
| СУММА(НДСЗаписиКнигиПокупок.НДС) КАК НДС,
| СУММА(НДСЗаписиКнигиПокупок.СуммаБезНДС) КАК СуммаБезНДС,
| НДСЗаписиКнигиПокупок.НомерДокументаОплаты КАК НомерДокументаОплаты,
| НДСЗаписиКнигиПокупок.ДатаДокументаОплаты КАК ДатаДокументаОплаты,
| НДСЗаписиКнигиПокупок.КодВидаОперации КАК КодВидаОперации,
| ЛОЖЬ КАК ВозвратЧерезКомиссионера,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоАвансыПолученные,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности = &ВидыЦенностей_АвансыВыданные
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоАвансыВыданные
|ПОМЕСТИТЬ ЗаписиКнигиПокупок
|ИЗ
| РегистрНакопления.НДСЗаписиКнигиПокупок КАК НДСЗаписиКнигиПокупок
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументовСчетФактура
| ПО НДСЗаписиКнигиПокупок.Организация = ДанныеПервичныхДокументовСчетФактура.Организация
| И НДСЗаписиКнигиПокупок.СчетФактура = ДанныеПервичныхДокументовСчетФактура.Документ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументовИсправленныйСчетФактура
| ПО НДСЗаписиКнигиПокупок.Организация = ДанныеПервичныхДокументовИсправленныйСчетФактура.Организация
| И НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура = ДанныеПервичныхДокументовИсправленныйСчетФактура.Документ
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТаблицаОрганизацияЯвляетсяПоставщиком КАК ВТ_ТаблицаОрганизацияЯвляетсяПоставщиком
| ПО НДСЗаписиКнигиПокупок.Организация = ВТ_ТаблицаОрганизацияЯвляетсяПоставщиком.Организация
| И НДСЗаписиКнигиПокупок.СчетФактура = ВТ_ТаблицаОрганизацияЯвляетсяПоставщиком.СчетФактура
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок КАК ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок
| ПО НДСЗаписиКнигиПокупок.Регистратор = ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок.СчетФактура
| И НДСЗаписиКнигиПокупок.Организация = ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок.Организация
|ГДЕ
| НДСЗаписиКнигиПокупок.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И НДСЗаписиКнигиПокупок.Организация В(&Организация)
| И НЕ НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста
| И НДСЗаписиКнигиПокупок.Активность
| И &ОтборПоКонтрагенту
| И &ДополнительноеУсловие
|
|СГРУППИРОВАТЬ ПО
| НДСЗаписиКнигиПокупок.Период,
| НАЧАЛОПЕРИОДА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста
| ТОГДА НДСЗаписиКнигиПокупок.КорректируемыйПериод
| ИНАЧЕ НДСЗаписиКнигиПокупок.Период
| КОНЕЦ, КВАРТАЛ),
| КОНЕЦПЕРИОДА(ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста
| ТОГДА НДСЗаписиКнигиПокупок.КорректируемыйПериод
| ИНАЧЕ НДСЗаписиКнигиПокупок.Период
| КОНЕЦ, КВАРТАЛ),
| НДСЗаписиКнигиПокупок.Организация,
| НДСЗаписиКнигиПокупок.ДокументОплаты,
| НДСЗаписиКнигиПокупок.Поставщик,
| ВЫБОР
| КОГДА НЕ НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура
| ИНАЧЕ НДСЗаписиКнигиПокупок.СчетФактура
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПокупок.ДатаОплаты
| КОНЕЦ,
| ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| И НЕ ТИПЗНАЧЕНИЯ(НДСЗаписиКнигиПокупок.СчетФактура) В (&ТипыДокументовРучныхОперацийНДС)
| ТОГДА НДСЗаписиКнигиПокупок.СтавкаНДС
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ НДСЗаписиКнигиПокупок.ДоговорКонтрагента
| КОНЕЦ,
| НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура,
| НДСЗаписиКнигиПокупок.НомерДокументаОплаты,
| НДСЗаписиКнигиПокупок.ДатаДокументаОплаты,
| НДСЗаписиКнигиПокупок.КодВидаОперации,
| ВЫБОР
| КОГДА &ВыводитьПокупателейПоАвансам
| И НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПокупок.Поставщик
| КОГДА НДСЗаписиКнигиПокупок.КодВидаОперации = ""17""
| ТОГДА НДСЗаписиКнигиПокупок.Организация
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_СобственныеСФ)
| ИЛИ НДСЗаписиКнигиПокупок.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.Возврат)
| И НЕ ВТ_ТаблицаОрганизацияЯвляетсяПоставщиком.СчетФактура ЕСТЬ NULL
| ИЛИ ЕСТЬNULL(ВТ_ТаблицаОрганизацияЯвляетсяПоставщиком.ЭтоКорректировкаРеализации, ЛОЖЬ)
| ТОГДА НДСЗаписиКнигиПокупок.Организация
| КОГДА НДСЗаписиКнигиПокупок.КодВидаОперации = ""25""
| ИЛИ НДСЗаписиКнигиПокупок.КодВидаОперации = ""24""
| ТОГДА НДСЗаписиКнигиПокупок.Организация
| КОГДА НДСЗаписиКнигиПокупок.ПродавцомВыступаетОрганизация
| ТОГДА НДСЗаписиКнигиПокупок.Организация
| ИНАЧЕ НДСЗаписиКнигиПокупок.Поставщик
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА """"
| ИНАЧЕ ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| И НДСЗаписиКнигиПокупок.ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА НДСЗаписиКнигиПокупок.ДатаОплаты
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности = &ВидыЦенностей_АвансыВыданные
| ТОГДА ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПокупок.ДатаСобытия
| КОНЕЦ
| КОГДА НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| КОГДА НДСЗаписиКнигиПокупок.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПокупок.ДатаСобытия
| КОНЕЦ,
| ВЫБОР
| КОГДА НЕ НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_НалоговыйАгент)
| ТОГДА НДСЗаписиКнигиПокупок.ДокументОплаты
| ИНАЧЕ НДСЗаписиКнигиПокупок.СчетФактура
| КОНЕЦ,
| ВЫБОР
| КОГДА (ЕСТЬNULL(ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок.ЭтоКорректировкаПоступления, ЛОЖЬ)
| ИЛИ ЕСТЬNULL(ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок.ЭтоКорректировкаРеализации, ЛОЖЬ))
| И ЕСТЬNULL(НДСЗаписиКнигиПокупок.СуммаБезНДС, 0) + ЕСТЬNULL(НДСЗаписиКнигиПокупок.НДС, 0) < 0
| ИЛИ НЕ ВТ_ТаблицаСчетаФактурыИсправленияКнигиПокупок.СчетФактура ЕСТЬ NULL
| И ЕСТЬNULL(НДСЗаписиКнигиПокупок.СуммаБезНДС, 0) + ЕСТЬNULL(НДСЗаписиКнигиПокупок.НДС, 0) < 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПокупок.ДатаСобытия
| КОНЕЦ
| ИНАЧЕ ДанныеПервичныхДокументовИсправленныйСчетФактура.ДатаРегистратора
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности = &ВидыЦенностей_АвансыВыданные
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|
|ИНДЕКСИРОВАТЬ ПО
| ДокументОснованиеСчетаФактуры
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗаписиКнигиПокупок.СчетФактура КАК СчетФактура,
| ЗаписиКнигиПокупок.НаАванс КАК НаАванс
|ПОМЕСТИТЬ СписокСчетовФактур
|ИЗ
| ЗаписиКнигиПокупок КАК ЗаписиКнигиПокупок
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура";
ДополнительноеУсловие = ДополнительноеУсловиеЗапроса(
СтруктураПараметров,
СтруктураПараметров.ЗаписьДополнительногоЛиста,
"НДСЗаписиКнигиПокупок");
ТекстЗапроса = СтрЗаменить(
ТекстЗапроса,
"&ДополнительноеУсловие",
ДополнительноеУсловие);
Если НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме
И СтруктураПараметров.ОтбиратьПоКонтрагенту Тогда
ТекстЗапросаДляОтбора =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ОтборПоКонтрагентуСсылки
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| (Контрагенты.Ссылка = &КонтрагентДляОтбора
| ИЛИ Контрагенты.ОбособленноеПодразделение
| И Контрагенты.ГоловнойКонтрагент = &КонтрагентДляОтбора)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Организации.Ссылка
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| (Организации.Ссылка = &КонтрагентДляОтбора
| ИЛИ Организации.ОбособленноеПодразделение
| И Организации.ГоловнаяОрганизация = &КонтрагентДляОтбора)
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка";
Если ОбщегоНазначения.ОбъектЯвляетсяГруппой(СтруктураПараметров.КонтрагентДляОтбора) Тогда
ТекстЗапросаДляОтбора = СтрЗаменить(ТекстЗапросаДляОтбора,
" = &КонтрагентДляОтбора", " В ИЕРАРХИИ(&КонтрагентДляОтбора)");
КонецЕсли;
Если БухгалтерскийУчетПереопределяемый.ИспользуютсяКомиссионныеСхемы() Тогда
ТекстЗапросаДляОтбора = ТекстЗапросаДляОтбора + ОбщегоНазначения.РазделительПакетаЗапросов() +
"ВЫБРАТЬ
| ДокументыОснования.ДокументОснование КАК СчетФактура
|ПОМЕСТИТЬ ОтборПоПродавцуНаПечать
|ИЗ
| РегистрСведений.ЖурналУчетаСчетовФактур КАК ЖурналУчетаСчетовФактур
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный.ДокументыОснования КАК ДокументыОснования
| ПО ЖурналУчетаСчетовФактур.СчетФактура = ДокументыОснования.Ссылка
|ГДЕ
| ЖурналУчетаСчетовФактур.Организация В(&Организация)
| И ЖурналУчетаСчетовФактур.Продавец В
| (ВЫБРАТЬ
| ОтборПоКонтрагентуСсылки.Ссылка
| ИЗ
| ОтборПоКонтрагентуСсылки КАК ОтборПоКонтрагентуСсылки)
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОтборПоКонтрагенту",
"(НДСЗаписиКнигиПокупок.Поставщик В
| (ВЫБРАТЬ
| ОтборПоКонтрагентуСсылки.Ссылка
| ИЗ
| ОтборПоКонтрагентуСсылки КАК ОтборПоКонтрагентуСсылки)
| ИЛИ НДСЗаписиКнигиПокупок.СчетФактура В
| (ВЫБРАТЬ
| ОтборПоПродавцуНаПечать.СчетФактура
| ИЗ
| ОтборПоПродавцуНаПечать))");
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОтборПоКонтрагенту",
"НДСЗаписиКнигиПокупок.Поставщик В
| (ВЫБРАТЬ
| ОтборПоКонтрагентуСсылки.Ссылка
| ИЗ
| ОтборПоКонтрагентуСсылки КАК ОтборПоКонтрагентуСсылки)");
КонецЕсли;
ТекстЗапроса = ТекстЗапросаДляОтбора + ОбщегоНазначения.РазделительПакетаЗапросов() + ТекстЗапроса;
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &ОтборПоКонтрагенту", "");
КонецЕсли;
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Если СтруктураПараметров.ЗаполнениеДокумента И НЕ СтруктураПараметров.ФорматПоПостановлению735
ИЛИ СтруктураПараметров.ЗаполнениеДекларации Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"И НЕ НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста",
"И НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста
| И НДСЗаписиКнигиПокупок.КорректируемыйПериод >= &НачалоНалоговогоПериода
| И НДСЗаписиКнигиПокупок.КорректируемыйПериод <= &КонецНалоговогоПериода");
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента И СтруктураПараметров.ФорматПоПостановлению735
ИЛИ СтруктураПараметров.ДополнительныеЛистыЗаТекущийПериод Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"Период МЕЖДУ &НачалоПериода И &КонецПериода",
"Период >= &НачалоПериода");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"И НЕ НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста",
"И НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста
| И НДСЗаписиКнигиПокупок.КорректируемыйПериод >= &НачалоПериода
| И НДСЗаписиКнигиПокупок.КорректируемыйПериод <= &КонецПериода");
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"И НЕ НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста",
"И НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста
| И НДСЗаписиКнигиПокупок.КорректируемыйПериод >= &НачалоПримененияПостановления1137");
КонецЕсли;
КонецЕсли;
ТекстыЗапросов.Добавить(ТекстЗапроса);
ТекстыЗапросов.Добавить("");
Возврат СтрСоединить(ТекстыЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
КонецФункции
Функция ТекстЗапросаПодготовленныеЗаписиКнигиПокупок(СтруктураПараметров)
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Корректировка.УменьшитьСуммуНДСКВычету КАК УменьшитьСуммуНДСКВычету,
| ЗаписиКнигиПокупок.ДокументОснованиеСчетаФактуры КАК ДокументОснованиеСчетаФактуры
|ПОМЕСТИТЬ КорректировкиПриобретенияУменьшитьСуммуНДСКВычетуПоИсходномуСчетуФактуре
|ИЗ
| ЗаписиКнигиПокупок КАК ЗаписиКнигиПокупок
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.КорректировкаПриобретения КАК Корректировка
| ПО Корректировка.ДокументОснование = ЗаписиКнигиПокупок.ДокументОснованиеСчетаФактуры
| И Корректировка.ВидКорректировки = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаПоСогласованиюСторон)
| И Корректировка.Проведен
| И (Корректировка.УменьшитьСуммуНДСКВычету
| ИЛИ Корректировка.ЗакупкаПодДеятельность В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПроизводствоСДЦ),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.Космос)))
|ИНДЕКСИРОВАТЬ ПО
| ДокументОснованиеСчетаФактуры
|;
|
|
|ВЫБРАТЬ
| ЗаписиКнигиПокупок.НалоговыйПериод КАК НалоговыйПериод,
| НАЧАЛОПЕРИОДА(ЗаписиКнигиПокупок.Период, ДЕНЬ) КАК ДатаОформления,
| ЗаписиКнигиПокупок.КонецНалоговогоПериода КАК КонецНалоговогоПериода,
| ЗаписиКнигиПокупок.Организация КАК Организация,
| ВЫБОР
| КОГДА ТаблицаСчетаФактурыДокументы.СводныйКорректировочный = ИСТИНА
| И НЕ ЗаписиКнигиПокупок.НаАванс
| И &ПравилаПостановления981
| ТОГДА ЗаписиКнигиПокупок.КонтрагентПоСчетуФактуре
| КОГДА ЗаписиКнигиПокупок.Контрагент ССЫЛКА Справочник.Организации
| ТОГДА ЗаписиКнигиПокупок.Контрагент
| КОГДА НЕ ТаблицаСчетаФактурыДокументы.ПродавецДляПечати ЕСТЬ NULL
| ТОГДА ТаблицаСчетаФактурыДокументы.ПродавецДляПечати
| ИНАЧЕ ЗаписиКнигиПокупок.Контрагент
| КОНЕЦ КАК Контрагент,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.КПППродавцаДляПечати, """") КАК КПППродавцаДляПечати,
| ЗаписиКнигиПокупок.СчетФактура КАК СчетФактура,
| ЗаписиКнигиПокупок.ДатаОплаты КАК ДатаОплаты,
| ЗаписиКнигиПокупок.СчетФактураДата КАК СчетФактураДата,
| ВЫБОР
| КОГДА ЗаписиКнигиПокупок.ЭтоАвансыВыданные
| ТОГДА """"
| КОГДА ЗаписиКнигиПокупок.ЭтоАвансыПолученные
| ТОГДА ЗаписиКнигиПокупок.ДатаПринятияНаУчет
| ИНАЧЕ ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ДатаДокументаОснования, ЗаписиКнигиПокупок.ДатаПринятияНаУчет)
| КОНЕЦ ДатаПринятияНаУчет,
| ЗаписиКнигиПокупок.ДатаДляСортировкиЗаписей КАК ДатаДляСортировкиЗаписей,
| НАЧАЛОПЕРИОДА(ВЫБОР
| КОГДА НЕ ТаблицаСчетаФактурыДокументы.ДатаСчетаФактурыСортировка ЕСТЬ NULL
| ТОГДА ТаблицаСчетаФактурыДокументы.ДатаСчетаФактурыСортировка
| ИНАЧЕ ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ДатаСчетаФактуры, ЗаписиКнигиПокупок.СчетФактураДата)
| КОНЕЦ, ДЕНЬ) КАК ДатаСчетаФактурыСортировка,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.СчетФактураДокумент, ЗаписиКнигиПокупок.СчетФактура) КАК СчетФактураДокумент,
| ТаблицаСчетаФактурыДокументы.НомерСчетаФактуры КАК НомерСчетаФактуры,
| ТаблицаСчетаФактурыДокументы.ДатаСчетаФактуры КАК ДатаСчетаФактуры,
| ЗаписиКнигиПокупок.НаАванс КАК НаАванс,
| ЗаписиКнигиПокупок.СтавкаНДСАванса КАК СтавкаНДСАванса,
| ЗаписиКнигиПокупок.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ВЫБОР
| КОГДА ЗаписиКнигиПокупок.НалоговыйПериод >= ДАТАВРЕМЯ(2014, 10, 1)
| ТОГДА ВЫБОР
| КОГДА ЗаписиКнигиПокупок.ВсегоПокупок <= 0
| ТОГДА -ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПокупокВВалюте, -ЗаписиКнигиПокупок.ВсегоПокупок)
| КОГДА НЕ Корректировка.УменьшитьСуммуНДСКВычету ЕСТЬ NULL
| ТОГДА ЗаписиКнигиПокупок.ВсегоПокупок
| ИНАЧЕ ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПокупокВВалюте, ЗаписиКнигиПокупок.ВсегоПокупок)
| КОНЕЦ
| ИНАЧЕ ЗаписиКнигиПокупок.ВсегоПокупок
| КОНЕЦ КАК ВсегоПокупок,
| ВЫБОР
| КОГДА ЗаписиКнигиПокупок.НаАванс
| ТОГДА 0
| ИНАЧЕ ЗаписиКнигиПокупок.СуммаБезНДС18
| КОНЕЦ КАК СуммаБезНДС18,
| ЗаписиКнигиПокупок.НДС18 КАК НДС18,
| ВЫБОР
| КОГДА ЗаписиКнигиПокупок.НаАванс
| ТОГДА 0
| ИНАЧЕ ЗаписиКнигиПокупок.СуммаБезНДС10
| КОНЕЦ КАК СуммаБезНДС10,
| ЗаписиКнигиПокупок.НДС10 КАК НДС10,
| ЗаписиКнигиПокупок.НДС0 КАК НДС0,
| ЗаписиКнигиПокупок.СуммаСовсемБезНДС КАК СуммаСовсемБезНДС,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.СчетФактураДокументРасшифровка, ЗаписиКнигиПокупок.СчетФактура) КАК СчетФактураДокументРасшифровка,
| ЗаписиКнигиПокупок.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| ТаблицаСчетаФактурыДокументы.ДатаИсправления КАК ДатаИсправления,
| ТаблицаСчетаФактурыДокументы.НомерИсправления КАК НомерИсправления,
| ТаблицаСчетаФактурыДокументы.ДатаКорректировки КАК ДатаКорректировки,
| ТаблицаСчетаФактурыДокументы.НомерКорректировки КАК НомерКорректировки,
| ТаблицаСчетаФактурыДокументы.ДатаИсправленияКорректировки КАК ДатаИсправленияКорректировки,
| ТаблицаСчетаФактурыДокументы.НомерИсправленияКорректировки КАК НомерИсправленияКорректировки,
| ЗаписиКнигиПокупок.Исправление КАК Исправление,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ОбрабатыватьНомерДокумента, ЛОЖЬ) КАК ОбрабатыватьНомерДокумента,
| ЗаписиКнигиПокупок.ДатаСобытия КАК ДатаСобытия,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.СводныйКорректировочный, ЛОЖЬ) КАК СводныйКорректировочный,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.СводныйКомиссионный, ЛОЖЬ) КАК СводныйКомиссионный,
| ВЫБОР
| КОГДА ЗаписиКнигиПокупок.КодВидаОперации <> """"
| ТОГДА ЗаписиКнигиПокупок.КодВидаОперации
| ИНАЧЕ ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.КодВидаОперации, ""01"")
| КОНЕЦ КАК КодВидаОперации,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.Валюта, &ВалютаРегУчета) <> &ВалютаРегУчета
| ТОГДА ТаблицаСчетаФактурыДокументы.ВалютаНаименованиеПолное
| ИНАЧЕ """"
| КОНЕЦ КАК Валюта,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.Валюта, &ВалютаРегУчета) <> &ВалютаРегУчета
| ТОГДА ТаблицаСчетаФактурыДокументы.ВалютаКод
| ИНАЧЕ """"
| КОНЕЦ КАК ВалютаКод,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.Валюта, &ВалютаРегУчета) <> &ВалютаРегУчета
| ТОГДА ТаблицаСчетаФактурыДокументы.ВалютаНаименование
| ИНАЧЕ &НаименованиеВалютыРубль
| КОНЕЦ КАК ВалютаНаименование,
| ЗаписиКнигиПокупок.НДС КАК НДС,
| ЗаписиКнигиПокупок.СуммаБезНДС КАК СуммаБезНДС,
| ЗаписиКнигиПокупок.НомерДокументаОплаты КАК НомерДокументаОплаты,
| ЗаписиКнигиПокупок.ДатаДокументаОплаты КАК ДатаДокументаОплаты,
| ТаблицаСчетаФактурыДокументы.ПосредникСсылка КАК ПосредникСсылка,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ИННПродавцаДляПечати, """") КАК ИННПродавцаДляПечати,
| ТаблицаСчетаФактурыДокументы.ПосредникИНН КАК ПосредникИНН,
| ТаблицаСчетаФактурыДокументы.ПосредникКПП КАК ПосредникКПП
|ПОМЕСТИТЬ ПодготовленныеЗаписиКнигиПокупок
|ИЗ
| ЗаписиКнигиПокупок КАК ЗаписиКнигиПокупок
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаСчетаФактурыДокументы КАК ТаблицаСчетаФактурыДокументы
| ПО ЗаписиКнигиПокупок.ДокументОснованиеСчетаФактуры = ТаблицаСчетаФактурыДокументы.ДокументОснованиеСчетаФактуры
| И ЗаписиКнигиПокупок.КонтрагентПоСчетуФактуре = ТаблицаСчетаФактурыДокументы.КонтрагентПоСчетуФактуре
| И ЗаписиКнигиПокупок.ДоговорКонтрагента = ТаблицаСчетаФактурыДокументы.ДоговорКонтрагента
| И ЗаписиКнигиПокупок.СтавкаНДСАванса = ТаблицаСчетаФактурыДокументы.СтавкаНДСАванса
| И ЗаписиКнигиПокупок.Организация = ТаблицаСчетаФактурыДокументы.Организация
| ЛЕВОЕ СОЕДИНЕНИЕ КорректировкиПриобретенияУменьшитьСуммуНДСКВычетуПоИсходномуСчетуФактуре КАК Корректировка
| ПО ЗаписиКнигиПокупок.ДокументОснованиеСчетаФактуры = Корректировка.ДокументОснованиеСчетаФактуры
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактураДокумент
|;
|
|
|ВЫБРАТЬ
| ПодготовленныеЗаписиКнигиПокупок.Контрагент КАК Ссылка,
| ПодготовленныеЗаписиКнигиПокупок.ДатаСчетаФактурыСортировка КАК ДатаСведений
|ПОМЕСТИТЬ СсылкиНаДаты
|ИЗ
| ПодготовленныеЗаписиКнигиПокупок КАК ПодготовленныеЗаписиКнигиПокупок
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ПодготовленныеЗаписиКнигиПокупок.ПосредникСсылка,
| ПодготовленныеЗаписиКнигиПокупок.ДатаСчетаФактурыСортировка
|ИЗ
| ПодготовленныеЗаписиКнигиПокупок КАК ПодготовленныеЗаписиКнигиПокупок
|ГДЕ
| ПодготовленныеЗаписиКнигиПокупок.ПосредникСсылка <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|УНИЧТОЖИТЬ ТаблицаСчетаФактурыДокументы
|;
|
|
|УНИЧТОЖИТЬ ЗаписиКнигиПокупок";
Возврат ТекстЗапроса + ОбщегоНазначения.РазделительПакетаЗапросов();
КонецФункции
Функция ТекстЗапросаКнигаПокупок(СтруктураПараметров)
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОшибочныеРеквизитыКонтрагентов.СчетФактура КАК СчетФактура,
| ОшибочныеРеквизитыКонтрагентов.Контрагент КАК Контрагент,
| ОшибочныеРеквизитыКонтрагентов.ИНН КАК ИНН,
| ОшибочныеРеквизитыКонтрагентов.КПП КАК КПП
|ПОМЕСТИТЬ ОшибочныеРеквизитыКонтрагентов
|ИЗ
| ПодготовленныеЗаписиКнигиПокупок КАК ПодготовленныеЗаписиКнигиПокупок
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОшибочныеРеквизитыКонтрагентов.СрезПоследних(, Организация В (&Организация)) КАК ОшибочныеРеквизитыКонтрагентов
| ПО ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокумент = ОшибочныеРеквизитыКонтрагентов.СчетФактура
| И ПодготовленныеЗаписиКнигиПокупок.Контрагент = ОшибочныеРеквизитыКонтрагентов.Контрагент
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура,
| Контрагент
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОшибочныеРеквизитыКонтрагентов.СчетФактура КАК СчетФактура,
| ОшибочныеРеквизитыКонтрагентов.Контрагент КАК Контрагент,
| ОшибочныеРеквизитыКонтрагентов.ИНН КАК ИНН,
| ОшибочныеРеквизитыКонтрагентов.КПП КАК КПП
|ПОМЕСТИТЬ ОшибочныеРеквизитыПосредников
|ИЗ
| ПодготовленныеЗаписиКнигиПокупок КАК ПодготовленныеЗаписиКнигиПокупок
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОшибочныеРеквизитыКонтрагентов.СрезПоследних(, Организация В (&Организация)) КАК ОшибочныеРеквизитыКонтрагентов
| ПО ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокумент = ОшибочныеРеквизитыКонтрагентов.СчетФактура
| И ПодготовленныеЗаписиКнигиПокупок.ПосредникСсылка = ОшибочныеРеквизитыКонтрагентов.Контрагент
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура,
| Контрагент
|;
|
|
|ВЫБРАТЬ
| ПодготовленныеЗаписиКнигиПокупок.НалоговыйПериод КАК НалоговыйПериод,
| ПодготовленныеЗаписиКнигиПокупок.Организация КАК Организация,
| ПодготовленныеЗаписиКнигиПокупок.Контрагент КАК Контрагент,
| ВЫБОР
| КОГДА НЕ ОшибочныеРеквизитыКонтрагентов.ИНН ЕСТЬ NULL
| ТОГДА ОшибочныеРеквизитыКонтрагентов.ИНН
| ИНАЧЕ ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПокупок.Контрагент ССЫЛКА Справочник.Организации
| ТОГДА ЕСТЬNULL(СведенияОКонтрагентеНаДату.ИНН, """")
| КОГДА ПодготовленныеЗаписиКнигиПокупок.ИННПродавцаДляПечати <> """"
| ТОГДА ПодготовленныеЗаписиКнигиПокупок.ИННПродавцаДляПечати
| ИНАЧЕ ЕСТЬNULL(СведенияОКонтрагентеНаДату.ИНН, """")
| КОНЕЦ
| КОНЕЦ КАК ПродавецИНН,
| ВЫБОР
| КОГДА НЕ ОшибочныеРеквизитыКонтрагентов.КПП ЕСТЬ NULL
| ТОГДА ОшибочныеРеквизитыКонтрагентов.КПП
| ИНАЧЕ ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПокупок.Контрагент ССЫЛКА Справочник.Организации
| И ПодготовленныеЗаписиКнигиПокупок.Контрагент <> ПодготовленныеЗаписиКнигиПокупок.Организация
| И ПодготовленныеЗаписиКнигиПокупок.КПППродавцаДляПечати <> """"
| ТОГДА ПодготовленныеЗаписиКнигиПокупок.КПППродавцаДляПечати
| КОГДА ПодготовленныеЗаписиКнигиПокупок.Контрагент ССЫЛКА Справочник.Организации
| ТОГДА ЕСТЬNULL(СведенияОКонтрагентеНаДату.КПП, """")
| КОГДА ПодготовленныеЗаписиКнигиПокупок.КПППродавцаДляПечати <> """"
| ТОГДА ПодготовленныеЗаписиКнигиПокупок.КПППродавцаДляПечати
| ИНАЧЕ ЕСТЬNULL(СведенияОКонтрагентеНаДату.КПП, """")
| КОНЕЦ
| КОНЕЦ КАК ПродавецКПП,
| ЕСТЬNULL(СведенияОКонтрагентеНаДату.Наименование, """") КАК Продавец,
| ПодготовленныеЗаписиКнигиПокупок.СчетФактура КАК СчетФактура,
| ПодготовленныеЗаписиКнигиПокупок.ДатаОплаты КАК ДатаОплаты,
| ПодготовленныеЗаписиКнигиПокупок.СчетФактураДата КАК СчетФактураДата,
| ПодготовленныеЗаписиКнигиПокупок.ДатаПринятияНаУчет КАК ДатаПринятияНаУчет,
| ПодготовленныеЗаписиКнигиПокупок.ДатаДляСортировкиЗаписей КАК ДатаДляСортировкиЗаписей,
| ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокумент КАК СчетФактураДокумент,
| ПодготовленныеЗаписиКнигиПокупок.НомерСчетаФактуры КАК НомерСчетаФактуры,
| ПодготовленныеЗаписиКнигиПокупок.ДатаСчетаФактуры КАК ДатаСчетаФактуры,
| ПодготовленныеЗаписиКнигиПокупок.НаАванс КАК НаАванс,
| ПодготовленныеЗаписиКнигиПокупок.СтавкаНДСАванса КАК СтавкаНДСАванса,
| ПодготовленныеЗаписиКнигиПокупок.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ПодготовленныеЗаписиКнигиПокупок.ВсегоПокупок КАК ВсегоПокупок,
| ПодготовленныеЗаписиКнигиПокупок.СуммаБезНДС18 КАК СуммаБезНДС18,
| ПодготовленныеЗаписиКнигиПокупок.НДС18 КАК НДС18,
| ПодготовленныеЗаписиКнигиПокупок.СуммаБезНДС10 КАК СуммаБезНДС10,
| ПодготовленныеЗаписиКнигиПокупок.НДС10 КАК НДС10,
| ПодготовленныеЗаписиКнигиПокупок.НДС0 КАК НДС0,
| ПодготовленныеЗаписиКнигиПокупок.СуммаСовсемБезНДС КАК СуммаСовсемБезНДС,
| ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокументРасшифровка КАК СчетФактураДокументРасшифровка,
| ПодготовленныеЗаписиКнигиПокупок.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| ПодготовленныеЗаписиКнигиПокупок.ДатаИсправления КАК ДатаИсправления,
| ПодготовленныеЗаписиКнигиПокупок.НомерИсправления КАК НомерИсправления,
| ПодготовленныеЗаписиКнигиПокупок.ДатаКорректировки КАК ДатаКорректировки,
| ПодготовленныеЗаписиКнигиПокупок.НомерКорректировки КАК НомерКорректировки,
| ПодготовленныеЗаписиКнигиПокупок.ДатаИсправленияКорректировки КАК ДатаИсправленияКорректировки,
| ПодготовленныеЗаписиКнигиПокупок.НомерИсправленияКорректировки КАК НомерИсправленияКорректировки,
| ПодготовленныеЗаписиКнигиПокупок.Исправление КАК Исправление,
| ПодготовленныеЗаписиКнигиПокупок.ОбрабатыватьНомерДокумента КАК ОбрабатыватьНомерДокумента,
| ПодготовленныеЗаписиКнигиПокупок.ДатаСчетаФактурыСортировка КАК ДатаСчетаФактурыСортировка,
| ПодготовленныеЗаписиКнигиПокупок.ДатаСобытия КАК ДатаСобытия,
| ПодготовленныеЗаписиКнигиПокупок.СводныйКорректировочный КАК СводныйКорректировочный,
| ПодготовленныеЗаписиКнигиПокупок.СводныйКомиссионный КАК СводныйКомиссионный,
| ПодготовленныеЗаписиКнигиПокупок.КодВидаОперации КАК КодВидаОперации,
| ПодготовленныеЗаписиКнигиПокупок.Валюта КАК Валюта,
| ПодготовленныеЗаписиКнигиПокупок.ВалютаНаименование КАК ВалютаНаименование,
| ПодготовленныеЗаписиКнигиПокупок.ВалютаКод КАК ВалютаКод,
| ПодготовленныеЗаписиКнигиПокупок.НДС КАК НДС,
| ПодготовленныеЗаписиКнигиПокупок.СуммаБезНДС КАК СуммаБезНДС,
| ПодготовленныеЗаписиКнигиПокупок.НомерДокументаОплаты КАК НомерДокументаОплаты,
| ПодготовленныеЗаписиКнигиПокупок.ДатаДокументаОплаты КАК ДатаДокументаОплаты,
| ПодготовленныеЗаписиКнигиПокупок.ПосредникСсылка КАК ПосредникСсылка,
| ЕСТЬNULL(СведенияОПосредникеНаДату.Наименование, """") КАК Посредник,
| ВЫБОР
| КОГДА НЕ ОшибочныеРеквизитыПосредников.ИНН ЕСТЬ NULL
| ТОГДА ОшибочныеРеквизитыПосредников.ИНН
| КОГДА ПодготовленныеЗаписиКнигиПокупок.ПосредникИНН <> """"
| ТОГДА ПодготовленныеЗаписиКнигиПокупок.ПосредникИНН
| ИНАЧЕ ЕСТЬNULL(СведенияОПосредникеНаДату.ИНН, """")
| КОНЕЦ КАК ПосредникИНН,
| ВЫБОР
| КОГДА НЕ ОшибочныеРеквизитыПосредников.КПП ЕСТЬ NULL
| ТОГДА ОшибочныеРеквизитыПосредников.КПП
| КОГДА ПодготовленныеЗаписиКнигиПокупок.ПосредникКПП <> """"
| ТОГДА ПодготовленныеЗаписиКнигиПокупок.ПосредникКПП
| ИНАЧЕ ЕСТЬNULL(СведенияОПосредникеНаДату.КПП, """")
| КОНЕЦ КАК ПосредникКПП
|ИЗ
| ПодготовленныеЗаписиКнигиПокупок КАК ПодготовленныеЗаписиКнигиПокупок
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОКонтрагентеНаДату
| ПО ПодготовленныеЗаписиКнигиПокупок.Контрагент = СведенияОКонтрагентеНаДату.Ссылка
| И ПодготовленныеЗаписиКнигиПокупок.ДатаСчетаФактурыСортировка = СведенияОКонтрагентеНаДату.ДатаСведений
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОПосредникеНаДату
| ПО ПодготовленныеЗаписиКнигиПокупок.ПосредникСсылка = СведенияОПосредникеНаДату.Ссылка
| И ПодготовленныеЗаписиКнигиПокупок.ДатаСчетаФактурыСортировка = СведенияОПосредникеНаДату.ДатаСведений
| ЛЕВОЕ СОЕДИНЕНИЕ ОшибочныеРеквизитыКонтрагентов КАК ОшибочныеРеквизитыКонтрагентов
| ПО ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокумент = ОшибочныеРеквизитыКонтрагентов.СчетФактура
| И ПодготовленныеЗаписиКнигиПокупок.Контрагент = ОшибочныеРеквизитыКонтрагентов.Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ ОшибочныеРеквизитыПосредников КАК ОшибочныеРеквизитыПосредников
| ПО ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокумент = ОшибочныеРеквизитыПосредников.СчетФактура
| И ПодготовленныеЗаписиКнигиПокупок.ПосредникСсылка = ОшибочныеРеквизитыПосредников.Контрагент
|
|УПОРЯДОЧИТЬ ПО
| ДатаДляСортировкиЗаписей,
| ДатаОплаты,
| ДатаСчетаФактуры,
| НомерСчетаФактуры,
| Продавец
|ИТОГИ
| МАКСИМУМ(Контрагент),
| МАКСИМУМ(Продавец),
| МИНИМУМ(ДатаОплаты),
| МАКСИМУМ(ДатаПринятияНаУчет),
| МАКСИМУМ(ДатаДляСортировкиЗаписей),
| МАКСИМУМ(НаАванс),
| ВЫБОР
| КОГДА &ПравилаПостановления735
| ТОГДА МАКСИМУМ(ВсегоПокупок)
| ИНАЧЕ СУММА(ВсегоПокупок)
| КОНЕЦ КАК ВсегоПокупок,
| СУММА(СуммаБезНДС18),
| СУММА(НДС18),
| СУММА(СуммаБезНДС10),
| СУММА(НДС10),
| СУММА(НДС0),
| СУММА(СуммаСовсемБезНДС),
| МИНИМУМ(ДатаСчетаФактурыСортировка),
| МАКСИМУМ(СводныйКорректировочный),
| МАКСИМУМ(СводныйКомиссионный),
| СУММА(НДС),
| СУММА(СуммаБезНДС),
| МАКСИМУМ(НомерДокументаОплаты),
| МАКСИМУМ(ДатаДокументаОплаты)
|ПО
| ОБЩИЕ,
| СчетФактураДокумент,
| КодВидаОперации,
| Исправление
|;
|
|
|УНИЧТОЖИТЬ СведенияОСсылкахНаДаты
|;
|
|
|УНИЧТОЖИТЬ СсылкиНаДаты
|;
|
|
|УНИЧТОЖИТЬ ОшибочныеРеквизитыКонтрагентов
|;
|
|
|УНИЧТОЖИТЬ ОшибочныеРеквизитыПосредников";
Если СтруктураПараметров.ГруппироватьПоКонтрагентам И НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"ПО
| ОБЩИЕ,",
"ПО
| ОБЩИЕ, Контрагент, ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"УПОРЯДОЧИТЬ ПО",
"УПОРЯДОЧИТЬ ПО Продавец, ");
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДополнительныйЛистКнигиПокупок(СтруктураПараметров)
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОшибочныеРеквизитыКонтрагентов.СчетФактура КАК СчетФактура,
| ОшибочныеРеквизитыКонтрагентов.Контрагент КАК Контрагент,
| ОшибочныеРеквизитыКонтрагентов.ИНН КАК ИНН,
| ОшибочныеРеквизитыКонтрагентов.КПП КАК КПП
|ПОМЕСТИТЬ ОшибочныеРеквизитыКонтрагентов
|ИЗ
| ПодготовленныеЗаписиКнигиПокупок КАК ПодготовленныеЗаписиКнигиПокупок
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОшибочныеРеквизитыКонтрагентов.СрезПоследних(, Организация В (&Организация)) КАК ОшибочныеРеквизитыКонтрагентов
| ПО ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокумент = ОшибочныеРеквизитыКонтрагентов.СчетФактура
| И ПодготовленныеЗаписиКнигиПокупок.Контрагент = ОшибочныеРеквизитыКонтрагентов.Контрагент
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура,
| Контрагент
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОшибочныеРеквизитыКонтрагентов.СчетФактура КАК СчетФактура,
| ОшибочныеРеквизитыКонтрагентов.Контрагент КАК Контрагент,
| ОшибочныеРеквизитыКонтрагентов.ИНН КАК ИНН,
| ОшибочныеРеквизитыКонтрагентов.КПП КАК КПП
|ПОМЕСТИТЬ ОшибочныеРеквизитыПосредников
|ИЗ
| ПодготовленныеЗаписиКнигиПокупок КАК ПодготовленныеЗаписиКнигиПокупок
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОшибочныеРеквизитыКонтрагентов.СрезПоследних(, Организация В (&Организация)) КАК ОшибочныеРеквизитыКонтрагентов
| ПО ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокумент = ОшибочныеРеквизитыКонтрагентов.СчетФактура
| И ПодготовленныеЗаписиКнигиПокупок.ПосредникСсылка = ОшибочныеРеквизитыКонтрагентов.Контрагент
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура,
| Контрагент
|;
|
|
|ВЫБРАТЬ
| ПодготовленныеЗаписиКнигиПокупок.НалоговыйПериод КАК НалоговыйПериод,
| ПодготовленныеЗаписиКнигиПокупок.Организация КАК Организация,
| ПодготовленныеЗаписиКнигиПокупок.Контрагент КАК Контрагент,
| ВЫБОР
| КОГДА НЕ ОшибочныеРеквизитыКонтрагентов.ИНН ЕСТЬ NULL
| ТОГДА ОшибочныеРеквизитыКонтрагентов.ИНН
| ИНАЧЕ ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПокупок.Контрагент ССЫЛКА Справочник.Организации
| ТОГДА ЕСТЬNULL(СведенияОКонтрагентеНаДату.ИНН, """")
| КОГДА ПодготовленныеЗаписиКнигиПокупок.ИННПродавцаДляПечати <> """"
| ТОГДА ПодготовленныеЗаписиКнигиПокупок.ИННПродавцаДляПечати
| ИНАЧЕ ЕСТЬNULL(СведенияОКонтрагентеНаДату.ИНН, """")
| КОНЕЦ
| КОНЕЦ КАК ПродавецИНН,
| ВЫБОР
| КОГДА НЕ ОшибочныеРеквизитыКонтрагентов.КПП ЕСТЬ NULL
| ТОГДА ОшибочныеРеквизитыКонтрагентов.КПП
| ИНАЧЕ ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПокупок.Контрагент ССЫЛКА Справочник.Организации
| И ПодготовленныеЗаписиКнигиПокупок.Контрагент <> ПодготовленныеЗаписиКнигиПокупок.Организация
| И ПодготовленныеЗаписиКнигиПокупок.КПППродавцаДляПечати <> """"
| ТОГДА ПодготовленныеЗаписиКнигиПокупок.КПППродавцаДляПечати
| КОГДА ПодготовленныеЗаписиКнигиПокупок.Контрагент ССЫЛКА Справочник.Организации
| ТОГДА ЕСТЬNULL(СведенияОКонтрагентеНаДату.КПП, """")
| КОГДА ПодготовленныеЗаписиКнигиПокупок.КПППродавцаДляПечати <> """"
| ТОГДА ПодготовленныеЗаписиКнигиПокупок.КПППродавцаДляПечати
| ИНАЧЕ ЕСТЬNULL(СведенияОКонтрагентеНаДату.КПП, """")
| КОНЕЦ
| КОНЕЦ КАК ПродавецКПП,
| ЕСТЬNULL(СведенияОКонтрагентеНаДату.Наименование, """") КАК Продавец,
| ПодготовленныеЗаписиКнигиПокупок.СчетФактура КАК СчетФактура,
| ПодготовленныеЗаписиКнигиПокупок.ДатаОплаты КАК ДатаОплаты,
| ПодготовленныеЗаписиКнигиПокупок.СчетФактураДата КАК СчетФактураДата,
| ПодготовленныеЗаписиКнигиПокупок.ДатаПринятияНаУчет КАК ДатаПринятияНаУчет,
| ПодготовленныеЗаписиКнигиПокупок.ДатаДляСортировкиЗаписей КАК ДатаДляСортировкиЗаписей,
| ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокумент КАК СчетФактураДокумент,
| ПодготовленныеЗаписиКнигиПокупок.НомерСчетаФактуры КАК НомерСчетаФактуры,
| ПодготовленныеЗаписиКнигиПокупок.ДатаСчетаФактуры КАК ДатаСчетаФактуры,
| ПодготовленныеЗаписиКнигиПокупок.НаАванс КАК НаАванс,
| ПодготовленныеЗаписиКнигиПокупок.СтавкаНДСАванса КАК СтавкаНДСАванса,
| ПодготовленныеЗаписиКнигиПокупок.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ПодготовленныеЗаписиКнигиПокупок.ВсегоПокупок КАК ВсегоПокупок,
| ПодготовленныеЗаписиКнигиПокупок.СуммаБезНДС18 КАК СуммаБезНДС18,
| ПодготовленныеЗаписиКнигиПокупок.НДС18 КАК НДС18,
| ПодготовленныеЗаписиКнигиПокупок.СуммаБезНДС10 КАК СуммаБезНДС10,
| ПодготовленныеЗаписиКнигиПокупок.НДС10 КАК НДС10,
| ПодготовленныеЗаписиКнигиПокупок.НДС0 КАК НДС0,
| ПодготовленныеЗаписиКнигиПокупок.СуммаСовсемБезНДС КАК СуммаСовсемБезНДС,
| ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокументРасшифровка КАК СчетФактураДокументРасшифровка,
| ПодготовленныеЗаписиКнигиПокупок.ДатаОформления КАК ДатаОформления,
| ПодготовленныеЗаписиКнигиПокупок.КонецНалоговогоПериода КАК КонецНалоговогоПериода,
| ПодготовленныеЗаписиКнигиПокупок.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| ПодготовленныеЗаписиКнигиПокупок.ДатаИсправления КАК ДатаИсправления,
| ПодготовленныеЗаписиКнигиПокупок.НомерИсправления КАК НомерИсправления,
| ПодготовленныеЗаписиКнигиПокупок.ДатаКорректировки КАК ДатаКорректировки,
| ПодготовленныеЗаписиКнигиПокупок.НомерКорректировки КАК НомерКорректировки,
| ПодготовленныеЗаписиКнигиПокупок.ДатаИсправленияКорректировки КАК ДатаИсправленияКорректировки,
| ПодготовленныеЗаписиКнигиПокупок.НомерИсправленияКорректировки КАК НомерИсправленияКорректировки,
| ПодготовленныеЗаписиКнигиПокупок.ОбрабатыватьНомерДокумента КАК ОбрабатыватьНомерДокумента,
| ПодготовленныеЗаписиКнигиПокупок.ДатаСобытия КАК ДатаСобытия,
| ПодготовленныеЗаписиКнигиПокупок.СводныйКорректировочный КАК СводныйКорректировочный,
| ПодготовленныеЗаписиКнигиПокупок.СводныйКомиссионный КАК СводныйКомиссионный,
| ПодготовленныеЗаписиКнигиПокупок.КодВидаОперации КАК КодВидаОперации,
| ПодготовленныеЗаписиКнигиПокупок.Валюта КАК Валюта,
| ПодготовленныеЗаписиКнигиПокупок.ВалютаНаименование КАК ВалютаНаименование,
| ПодготовленныеЗаписиКнигиПокупок.ВалютаКод КАК ВалютаКод,
| ПодготовленныеЗаписиКнигиПокупок.НДС КАК НДС,
| ПодготовленныеЗаписиКнигиПокупок.СуммаБезНДС КАК СуммаБезНДС,
| ПодготовленныеЗаписиКнигиПокупок.НомерДокументаОплаты КАК НомерДокументаОплаты,
| ПодготовленныеЗаписиКнигиПокупок.ДатаДокументаОплаты КАК ДатаДокументаОплаты,
| ПодготовленныеЗаписиКнигиПокупок.ПосредникСсылка КАК ПосредникСсылка,
| ЕСТЬNULL(СведенияОПосредникеНаДату.Наименование, """") КАК Посредник,
| ВЫБОР
| КОГДА НЕ ОшибочныеРеквизитыПосредников.ИНН ЕСТЬ NULL
| ТОГДА ОшибочныеРеквизитыПосредников.ИНН
| КОГДА ПодготовленныеЗаписиКнигиПокупок.ПосредникИНН <> """"
| ТОГДА ПодготовленныеЗаписиКнигиПокупок.ПосредникИНН
| ИНАЧЕ ЕСТЬNULL(СведенияОПосредникеНаДату.ИНН, """")
| КОНЕЦ КАК ПосредникИНН,
| ВЫБОР
| КОГДА НЕ ОшибочныеРеквизитыПосредников.КПП ЕСТЬ NULL
| ТОГДА ОшибочныеРеквизитыПосредников.КПП
| КОГДА ПодготовленныеЗаписиКнигиПокупок.ПосредникКПП <> """"
| ТОГДА ПодготовленныеЗаписиКнигиПокупок.ПосредникКПП
| ИНАЧЕ ЕСТЬNULL(СведенияОПосредникеНаДату.КПП, """")
| КОНЕЦ КАК ПосредникКПП
|ИЗ
| ПодготовленныеЗаписиКнигиПокупок КАК ПодготовленныеЗаписиКнигиПокупок
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОКонтрагентеНаДату
| ПО ПодготовленныеЗаписиКнигиПокупок.Контрагент = СведенияОКонтрагентеНаДату.Ссылка
| И ПодготовленныеЗаписиКнигиПокупок.ДатаСчетаФактурыСортировка = СведенияОКонтрагентеНаДату.ДатаСведений
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОПосредникеНаДату
| ПО ПодготовленныеЗаписиКнигиПокупок.ПосредникСсылка = СведенияОПосредникеНаДату.Ссылка
| И ПодготовленныеЗаписиКнигиПокупок.ДатаСчетаФактурыСортировка = СведенияОПосредникеНаДату.ДатаСведений
| ЛЕВОЕ СОЕДИНЕНИЕ ОшибочныеРеквизитыКонтрагентов КАК ОшибочныеРеквизитыКонтрагентов
| ПО ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокумент = ОшибочныеРеквизитыКонтрагентов.СчетФактура
| И ПодготовленныеЗаписиКнигиПокупок.Контрагент = ОшибочныеРеквизитыКонтрагентов.Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ ОшибочныеРеквизитыПосредников КАК ОшибочныеРеквизитыПосредников
| ПО ПодготовленныеЗаписиКнигиПокупок.СчетФактураДокумент = ОшибочныеРеквизитыПосредников.СчетФактура
| И ПодготовленныеЗаписиКнигиПокупок.ПосредникСсылка = ОшибочныеРеквизитыПосредников.Контрагент
|
|УПОРЯДОЧИТЬ ПО
| НалоговыйПериод,
| ДатаСобытия,
| ДатаОформления,
| СчетФактураДата,
| ДатаОплаты,
| ИсправленныйСчетФактура,
| Продавец
|ИТОГИ
| МАКСИМУМ(Контрагент),
| МАКСИМУМ(Продавец),
| МАКСИМУМ(ДатаПринятияНаУчет),
| МИНИМУМ(ДатаДляСортировкиЗаписей),
| МАКСИМУМ(НаАванс),
| ВЫБОР
| КОГДА НалоговыйПериод >= ДАТАВРЕМЯ(2014, 10, 1)
| ТОГДА МАКСИМУМ(ВсегоПокупок)
| ИНАЧЕ СУММА(ВсегоПокупок)
| КОНЕЦ КАК ВсегоПокупок,
| СУММА(СуммаБезНДС18),
| СУММА(НДС18),
| СУММА(СуммаБезНДС10),
| СУММА(НДС10),
| СУММА(НДС0),
| СУММА(СуммаСовсемБезНДС),
| МАКСИМУМ(КонецНалоговогоПериода),
| МАКСИМУМ(СводныйКорректировочный),
| МАКСИМУМ(СводныйКомиссионный),
| СУММА(НДС),
| СУММА(СуммаБезНДС),
| МАКСИМУМ(НомерДокументаОплаты),
| МАКСИМУМ(ДатаДокументаОплаты)
|ПО
| НалоговыйПериод,
| ДатаОформления,
| СчетФактураДокумент,
| ДоговорКонтрагента,
| КодВидаОперации,
| ИсправленныйСчетФактура
|;
|
|
|УНИЧТОЖИТЬ СведенияОСсылкахНаДаты
|;
|
|
|УНИЧТОЖИТЬ СсылкиНаДаты
|;
|
|
|УНИЧТОЖИТЬ ОшибочныеРеквизитыКонтрагентов
|;
|
|
|УНИЧТОЖИТЬ ОшибочныеРеквизитыПосредников";
Если СтруктураПараметров.ГруппироватьПоКонтрагентам И НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"ПО
| НалоговыйПериод,
| ДатаОформления,",
"ПО
| НалоговыйПериод,
| ДатаОформления,
| Контрагент, ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"УПОРЯДОЧИТЬ ПО",
"УПОРЯДОЧИТЬ ПО Продавец, ");
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция ПолучитьДополнительнуюИнформациюПоСчетуФактуре(СтруктураПараметров)
ДополнительнаяИнформация = НовыйДополнительнаяИнформацияПоСчетуФактуре();
Если СтруктураПараметров.ДанныеДляПроверкиКонтрагентов.Свойство("ВыводитьТолькоНекорректныхКонтрагентов")
И СтруктураПараметров.ДанныеДляПроверкиКонтрагентов.ВыводитьТолькоНекорректныхКонтрагентов Тогда
Возврат ДополнительнаяИнформация;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Организация", СтруктураПараметров.СписокОрганизаций);
Запрос.МенеджерВременныхТаблиц = СтруктураПараметров.МенеджерВременныхТаблиц;
УчетНДСПереопределяемый.ДополнитьПокупкиИнформациейОНомерахДекларацийНаТовары(ДополнительнаяИнформация, СтруктураПараметров, Запрос);
УчетНДСПереопределяемый.ДополнитьИнформациейОПосредникахИПлатежах(ДополнительнаяИнформация, СтруктураПараметров, Запрос);
Возврат ДополнительнаяИнформация;
КонецФункции
Функция НовыйДополнительнаяИнформацияПоСчетуФактуре()
ДополнительнаяИнформация = Новый ТаблицаЗначений;
ДополнительнаяИнформация.Колонки.Добавить("Ссылка", Документы.ТипВсеСсылки());
ДополнительнаяИнформация.Индексы.Добавить("Ссылка");
ДополнительнаяИнформация.Колонки.Добавить("ГТДиСтрана", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДополнительнаяИнформация.Колонки.Добавить("ГТД", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДополнительнаяИнформация.Колонки.Добавить("Графа9", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДополнительнаяИнформация.Колонки.Добавить("Графа10", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДополнительнаяИнформация.Колонки.Добавить("МассивСвПрод", Новый ОписаниеТипов("Массив"));
ДополнительнаяИнформация.Колонки.Добавить("МассивПлатежныеДокументы", Новый ОписаниеТипов("Массив"));
ДополнительнаяИнформация.Колонки.Добавить("РегистрационныйНомерТД", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДополнительнаяИнформация.Колонки.Добавить("СвРегНом", Новый ОписаниеТипов("Массив"));
Возврат ДополнительнаяИнформация;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли