#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
Процедура НастроитьВариантыОтчета(Настройки) Экспорт
ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.КнигаПродаж);
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "");
ОписаниеВарианта.Описание = НСтр("ru = 'Формирование книги продаж после выполнения регламентных операций закрытия периода по НДС.'");
ОписаниеВарианта.НастройкиДляПоиска.НаименованияПолей = НСтр("ru = 'Продавец
|ИНН
|КПП
|Продажа за период
|Дата и номер счета-фактуры
|Номер и дата исправления счета-фактуры
|Номер и дата корректировочного счета-фактуры
|Наименование покупателя
|Страна происхождения товара
|НДС'");
ОписаниеВарианта.НастройкиДляПоиска.НаименованияПараметровИОтборов = НСтр("ru = 'Период
|Организация
|Контрагент
|Выводить продавцов'");
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Процедура СформироватьОтчет(Знач СтруктураПараметров, АдресХранилища) Экспорт
ПодготовитьОтчет(СтруктураПараметров);
ПоместитьВоВременноеХранилище(СтруктураПараметров, АдресХранилища);
КонецПроцедуры
Процедура ПодготовитьОтчет(СтруктураПараметров) Экспорт
Если ЗначениеЗаполнено(СтруктураПараметров.КонтрагентДляОтбора)
ИЛИ СтруктураПараметров.ВыводитьПродавцовПоАвансам
ИЛИ СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
СтандартнаяФорма = Ложь;
Иначе
СтандартнаяФорма = УчетНДСПереопределяемый.ПериодОтчетаСоответствуетНалоговому(
СтруктураПараметров.Организация, СтруктураПараметров.НачалоПериода, СтруктураПараметров.КонецПериода);
КонецЕсли;
СтруктураПараметров.Вставить("СформироватьОтчетПоСтандартнойФорме", СтандартнаяФорма);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СписокОрганизацийОтбора = СтруктураПараметров.СписокОрганизаций;
ИначеЕсли НЕ СтруктураПараметров.ВключатьОбособленныеПодразделения Тогда
СписокОрганизацийОтбора = Новый СписокЗначений;
СписокОрганизацийОтбора.Добавить(СтруктураПараметров.Организация);
Иначе
СписокОрганизацийОтбора = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьСписокОбособленныхПодразделений(
СтруктураПараметров.Организация);
КонецЕсли;
СписокДоступныхОрганизаций = ОбщегоНазначенияБПВызовСервераПовтИсп.ВсеОрганизацииДанныеКоторыхДоступныПоRLS(ложь);
СписокОрганизаций = Новый СписокЗначений;
Для Каждого ОрганизацияСписка Из СписокОрганизацийОтбора Цикл
Если СписокДоступныхОрганизаций.Найти(ОрганизацияСписка.Значение) <> Неопределено Тогда
СписокОрганизаций.Добавить(ОрганизацияСписка.Значение);
КонецЕсли;
КонецЦикла;
СтруктураПараметров.Вставить("СписокОрганизаций", СписокОрганизаций);
СтруктураПараметров.Вставить("ЗаписьДополнительногоЛиста", Ложь);
СтруктураПараметров.Вставить("СчетчикСегментов", 0);
ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(СтруктураПараметров.КонецПериода);
СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137", ВерсияПостановленияНДС1137);
Если НЕ СтруктураПараметров.Свойство("ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС") Тогда
СтруктураПараметров.Вставить("ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС",
УчетНДС.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС());
КонецЕсли;
ИнициализироватьТаблицыДанныхНДС(СтруктураПараметров);
СтруктураПараметров.Вставить("ОткрыватьПомощникИзМакета");
СтруктураПараметров.ОткрыватьПомощникИзМакета =
УчетНДСПереопределяемый.ОткрыватьПомощникИзМакета(СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода)
И НЕ СтруктураПараметров.ЗаполнениеДекларации
И НЕ СтруктураПараметров.ЗаполнениеДокумента ;
СписокСообщений = Новый СписокЗначений();
Если НЕ (СтруктураПараметров.ВыводитьТолькоДопЛисты И СтруктураПараметров.ФормироватьДополнительныеЛисты) Тогда
Результат = Неопределено;
ОпределитьПараметрыФормированияОтчета(СтруктураПараметров);
Если ПроверкаКонтрагентов.ФормироватьОтчетСтандартнымСпособом(СтруктураПараметров, Результат) Тогда
Результат = ЗаписиКнигиПродаж(СтруктураПараметров);
ПроверкаКонтрагентов.ЗапомнитьДанныеОтчета(СтруктураПараметров, Результат);
КонецЕсли;
СформироватьОсновнойРаздел(СтруктураПараметров, Результат);
КонецЕсли;
СтруктураПараметров = ПроверитьНаличиеДопЛистовКнигиПродаж(СтруктураПараметров);
Если СтруктураПараметров.ДополнительныеЛистыЗаТекущийПериод Или Не СтруктураПараметров.ФормироватьДополнительныеЛисты Тогда
Если СтруктураПараметров.КорректируемыйПериод Тогда
СписокСообщений.Добавить(НСтр("ru = 'В указанном периоде отчета были внесены изменения в предшествующие налоговые периоды.
|Дополнительные листы по корректируемым налоговым периодам, в которые внесены изменения, можно построить в текущем отчете.
|Для этого необходимо взвести флажок ""Формировать дополнительные листы"" и выбрать значение ""за корректируемый период"".'"));
КонецЕсли;
Если СтруктураПараметров.ФормироватьДополнительныеЛисты И Не СтруктураПараметров.ТекущийПериод Тогда
СписокСообщений.Добавить(НСтр("ru = 'В указанном периоде отчета не вносились изменения в последующих налоговых периодах.
|Построение дополнительных листов за текущий налоговый период не требуется.'"));
КонецЕсли;
КонецЕсли;
Если НЕ СтруктураПараметров.ДополнительныеЛистыЗаТекущийПериод Или Не СтруктураПараметров.ФормироватьДополнительныеЛисты Тогда
Если СтруктураПараметров.ТекущийПериод Тогда
СписокСообщений.Добавить(НСтр("ru = 'В указанном периоде отчета есть изменения, внесенные в последующих налоговых периодах.
|Дополнительные листы по текущему налоговому периоду можно построить в текущем отчете.
|Для этого необходимо взвести флажок ""Формировать дополнительные листы"" и выбрать значение ""за текущий период"".'"));
КонецЕсли;
Если СтруктураПараметров.ФормироватьДополнительныеЛисты И Не СтруктураПараметров.КорректируемыйПериод Тогда
СписокСообщений.Добавить(НСтр("ru = 'В указанном периоде отчета не вносились изменения в предыдущие налоговые периоды.
|Построение дополнительных листов за корректируемый налоговый период не требуется.'"));
КонецЕсли;
КонецЕсли;
Если СтруктураПараметров.ФормироватьДополнительныеЛисты Тогда
СтруктураПараметров.ЗаписьДополнительногоЛиста = Истина;
ОпределитьПараметрыФормированияОтчета(СтруктураПараметров);
Результат = ЗаписиКнигиПродаж(СтруктураПараметров);
СформироватьДополнительныеЛисты(СтруктураПараметров, Результат);
КонецЕсли;
Если НЕ СтруктураПараметров.ДанныеДляПроверкиКонтрагентов.Свойство("ВыводитьТолькоНекорректныхКонтрагентов")
ИЛИ НЕ СтруктураПараметров.ДанныеДляПроверкиКонтрагентов.ВыводитьТолькоНекорректныхКонтрагентов Тогда
СтруктураПараметров.МенеджерВременныхТаблиц.Закрыть();
КонецЕсли;
СтруктураПараметров.Вставить("СписокСообщений", СписокСообщений);
КонецПроцедуры
Функция ПроверитьНаличиеДопЛистовКнигиПродаж(СтруктураПараметров) Экспорт
СтруктураПараметров.Вставить("ТекущийПериод", Ложь);
СтруктураПараметров.Вставить("КорректируемыйПериод", Ложь);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| 1 КАК Порядок,
| НДСЗаписиКнигиПродажОбороты.СчетФактура КАК СчетФактура,
| НДСЗаписиКнигиПродажОбороты.Покупатель КАК Покупатель,
| НДСЗаписиКнигиПродажОбороты.СтавкаНДС КАК СтавкаНДС,
| ВЫБОР
| КОГДА ЕСТЬNULL(СУММА(НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот), 0) <> 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЕстьДопЛисты,
| НДСЗаписиКнигиПродажОбороты.КорректируемыйПериод КАК КорректируемыйПериод,
| НДСЗаписиКнигиПродажОбороты.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура
|ИЗ
| РегистрНакопления.НДСЗаписиКнигиПродаж.Обороты(
| &НачалоПериода,
| &КонецПериода,
| День,
| Организация В (&Организация)
| И &ДополнительноеУсловие
| И ЗаписьДополнительногоЛиста
| И КорректируемыйПериод >= &НачалоПримененияПостановления1137) КАК НДСЗаписиКнигиПродажОбороты
|
|СГРУППИРОВАТЬ ПО
| НДСЗаписиКнигиПродажОбороты.СчетФактура,
| НДСЗаписиКнигиПродажОбороты.Покупатель,
| НДСЗаписиКнигиПродажОбороты.СтавкаНДС,
| НДСЗаписиКнигиПродажОбороты.КорректируемыйПериод,
| НДСЗаписиКнигиПродажОбороты.ИсправленныйСчетФактура
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2,
| НДСЗаписиКнигиПродажОбороты.СчетФактура,
| НДСЗаписиКнигиПродажОбороты.Покупатель,
| НДСЗаписиКнигиПродажОбороты.СтавкаНДС,
| ВЫБОР
| КОГДА ЕСТЬNULL(СУММА(НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот), 0) <> 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| &НачалоПериода,
| НДСЗаписиКнигиПродажОбороты.ИсправленныйСчетФактура
|ИЗ
| РегистрНакопления.НДСЗаписиКнигиПродаж.Обороты(
| &НачалоПериода,
| ,
| День,
| Организация В (&Организация)
| И &ДополнительноеУсловие
| И ЗаписьДополнительногоЛиста
| И КорректируемыйПериод >= &НачалоПериода
| И КорректируемыйПериод <= &КонецПериода) КАК НДСЗаписиКнигиПродажОбороты
|
|СГРУППИРОВАТЬ ПО
| НДСЗаписиКнигиПродажОбороты.СчетФактура,
| НДСЗаписиКнигиПродажОбороты.Покупатель,
| НДСЗаписиКнигиПродажОбороты.СтавкаНДС,
| НДСЗаписиКнигиПродажОбороты.ИсправленныйСчетФактура";
Запрос.УстановитьПараметр("НачалоПериода", СтруктураПараметров.НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецДня(СтруктураПараметров.КонецПериода));
Запрос.УстановитьПараметр("Организация", СтруктураПараметров.СписокОрганизаций);
Запрос.УстановитьПараметр("НачалоПримененияПостановления1137",
УчетНДСПереопределяемый.ПолучитьДатуНачалаДействияПостановления1137());
ДатаПроверкиПараметровУчета = КонецДня(СтруктураПараметров.КонецПериода);
ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(ДатаПроверкиПараметровУчета);
СтруктураПараметров.Вставить("ПрименяетсяОсвобождениеОтУплатыНДС",
УчетнаяПолитика.ПрименяетсяОсвобождениеОтУплатыНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("ПлательщикНДС",
УчетнаяПолитика.ПлательщикНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("ПлательщикНДСПрименяющийУСН",
УчетнаяПолитика.ПлательщикНДСПрименяющийУСН(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
МассивСтавокНДС = Перечисления.СтавкиНДС.СтавкиПоОперациямОтражаемымВКнигеПродаж(ВерсияПостановленияНДС1137);
Запрос.УстановитьПараметр("МассивСтавокНДС", МассивСтавокНДС);
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгентВсеВиды",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент(, Истина));
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"&ДополнительноеУсловие",
ДополнительноеУсловиеЗапроса(СтруктураПараметров));
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат СтруктураПараметров;
КонецЕсли;
Результат = Результат.Выгрузить();
Для Каждого СтрокаРезультата Из Результат Цикл
Если СтрокаРезультата.Порядок = 1 И СтрокаРезультата.ЕстьДопЛисты Тогда
СтруктураПараметров.КорректируемыйПериод = Истина;
ИначеЕсли СтрокаРезультата.ЕстьДопЛисты Тогда
СтруктураПараметров.ТекущийПериод = Истина;
КонецЕсли;
Если СтруктураПараметров.КорректируемыйПериод И СтруктураПараметров.ТекущийПериод Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Возврат СтруктураПараметров;
КонецФункции
#Область ПолучениеЗаписей
Функция ПолучитьИтогиЗаПериодКнигаПродаж(СтруктураПараметров) Экспорт
ЭтоПечатьВыписок = Ложь;
Если СтруктураПараметров.Свойство("ЭтоВыписка") Тогда
Если СтруктураПараметров.ЭтоВыписка Тогда
ЭтоПечатьВыписок = Истина;
КонецЕсли;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаписиКнигиПродаж.МесяцДляВыписок КАК Период,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.ВсегоПродаж), 0) КАК ВсегоПродаж,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.СуммаБезНДС20), 0) КАК СуммаБезНДС20,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.НДС20), 0) КАК НДС20,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.СуммаБезНДС18), 0) КАК СуммаБезНДС18,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.НДС18), 0) КАК НДС18,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.СуммаБезНДС10), 0) КАК СуммаБезНДС10,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.НДС10), 0) КАК НДС10,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.СуммаБезНДС7), 0) КАК СуммаБезНДС7,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.НДС7), 0) КАК НДС7,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.СуммаБезНДС5), 0) КАК СуммаБезНДС5,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.НДС5), 0) КАК НДС5,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.НДС0), 0) КАК НДС0,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.СуммаСовсемБезНДС), 0) КАК СуммаСовсемБезНДС
|ИЗ
| (ВЫБРАТЬ
| &МесяцДляВыписок КАК МесяцДляВыписок,
| НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот КАК ВсегоПродаж,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС20)
| И НДСЗаписиКнигиПродажОбороты.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС20)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДС20,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС20)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК НДС20,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС18)
| И НДСЗаписиКнигиПродажОбороты.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС18)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДС18,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС18)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК НДС18,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС10)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДС10,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС10)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК НДС10,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС7)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДС7,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС7)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК НДС7,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС5)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДС5,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС5)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК НДС5,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС = &СтавкаНДС0
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК НДС0,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС = &СтавкаБезНДС
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаСовсемБезНДС
| ИЗ
| РегистрНакопления.НДСЗаписиКнигиПродаж.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Месяц,
| Организация В (&Организация)
| И &ДополнительноеУсловие
| И НЕ ЗаписьДополнительногоЛиста) КАК НДСЗаписиКнигиПродажОбороты
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| &МесяцДляВыписок,
| НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС20)
| И НДСЗаписиКнигиПродажОбороты.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС20)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС20)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС18)
| И НДСЗаписиКнигиПродажОбороты.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС18)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС18)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС10)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС10)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС7)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС7)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС5)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС5)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС = &СтавкаНДС0
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС = &СтавкаБезНДС
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ
| ИЗ
| РегистрНакопления.НДСЗаписиКнигиПродаж.Обороты(
| &НачалоПериода,
| &МоментФормированияДопЛиста,
| Месяц,
| Организация В (&Организация)
| И &ДополнительноеУсловие
| И (ЗаписьДополнительногоЛиста
| И КорректируемыйПериод >= &НачалоПериода
| И КорректируемыйПериод <= &КонецПериода)) КАК НДСЗаписиКнигиПродажОбороты) КАК ЗаписиКнигиПродаж
|
|СГРУППИРОВАТЬ ПО
| ЗаписиКнигиПродаж.МесяцДляВыписок";
Запрос.УстановитьПараметр("НачалоПериода", СтруктураПараметров.НалоговыйПериод);
Запрос.УстановитьПараметр("КонецПериода", КонецДня(СтруктураПараметров.КонецНалоговогоПериода));
Запрос.УстановитьПараметр("Организация", СтруктураПараметров.СписокОрганизаций);
Запрос.УстановитьПараметр("МоментФормированияДопЛиста",
Новый Граница(НачалоДня(СтруктураПараметров.ДатаФормированияДопЛиста),ВидГраницы.Исключая));
Если ЭтоПечатьВыписок Тогда
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"&МесяцДляВыписок", "НДСЗаписиКнигиПродажОбороты.Период");
Иначе
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"СГРУППИРОВАТЬ ПО
| ЗаписиКнигиПродаж.МесяцДляВыписок", "");
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"&МесяцДляВыписок", "Истина");
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"Месяц", "Период");
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"ЗаписиКнигиПродаж.ПериодДляВыписок", "Истина");
КонецЕсли;
ДатаПроверкиПараметровУчета = КонецДня(СтруктураПараметров.КонецНалоговогоПериода);
ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(ДатаПроверкиПараметровУчета);
СтруктураПараметров.Вставить("ПрименяетсяОсвобождениеОтУплатыНДС",
УчетнаяПолитика.ПрименяетсяОсвобождениеОтУплатыНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("ПлательщикНДС",
УчетнаяПолитика.ПлательщикНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("ПлательщикНДСПрименяющийУСН",
УчетнаяПолитика.ПлательщикНДСПрименяющийУСН(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
МассивСтавокНДС = Перечисления.СтавкиНДС.СтавкиПоОперациямОтражаемымВКнигеПродаж(ВерсияПостановленияНДС1137);
Запрос.УстановитьПараметр("МассивСтавокНДС", МассивСтавокНДС);
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгентВсеВиды",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент(, Истина));
СтавкиНДС20 = Новый Массив();
СтавкиНДС20.Добавить(Перечисления.СтавкиНДС.НДС20);
СтавкиНДС20.Добавить(Перечисления.СтавкиНДС.НДС20_120);
СтавкиНДС18 = Новый Массив();
СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18);
СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18_118);
СтавкиНДС10 = Новый Массив();
СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10);
СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10_110);
СтавкиНДС7 = Новый Массив();
СтавкиНДС7.Добавить(Перечисления.СтавкиНДС.НДС7);
СтавкиНДС7.Добавить(Перечисления.СтавкиНДС.НДС7_107);
СтавкиНДС5 = Новый Массив();
СтавкиНДС5.Добавить(Перечисления.СтавкиНДС.НДС5);
СтавкиНДС5.Добавить(Перечисления.СтавкиНДС.НДС5_105);
СтавкаНДС0 = Перечисления.СтавкиНДС.НДС0;
СтавкаБезНДС = Перечисления.СтавкиНДС.БезНДС;
Запрос.УстановитьПараметр("СтавкиНДС20", СтавкиНДС20);
Запрос.УстановитьПараметр("СтавкиНДС18", СтавкиНДС18);
Запрос.УстановитьПараметр("СтавкиНДС10", СтавкиНДС10);
Запрос.УстановитьПараметр("СтавкиНДС7", СтавкиНДС7);
Запрос.УстановитьПараметр("СтавкиНДС5", СтавкиНДС5);
Запрос.УстановитьПараметр("СтавкаНДС0", СтавкаНДС0);
Запрос.УстановитьПараметр("СтавкаБезНДС", СтавкаБезНДС);
ВидыЦенностей_Аванс = Новый Массив;
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученных);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыВыданные);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.СуммыСвязанныеСРасчетамиПоОплате);
Запрос.УстановитьПараметр("ВидыЦенностей_Аванс", ВидыЦенностей_Аванс);
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"&ДополнительноеУсловие",
ДополнительноеУсловиеЗапроса(СтруктураПараметров, Ложь));
ИтогЗаПериод = Запрос.Выполнить();
Если НЕ ИтогЗаПериод.Пустой() Тогда
Если ЭтоПечатьВыписок Тогда
Возврат ИтогЗаПериод.Выгрузить();
Иначе
Возврат ИтогЗаПериод.Выгрузить()[0];
КонецЕсли;
Иначе
ИтогЗаПериод = Новый Структура;
ИтогЗаПериод.Вставить("ВсегоПродаж", 0);
ИтогЗаПериод.Вставить("СуммаБезНДС5", 0);
ИтогЗаПериод.Вставить("НДС5", 0);
ИтогЗаПериод.Вставить("СуммаБезНДС7", 0);
ИтогЗаПериод.Вставить("НДС7", 0);
ИтогЗаПериод.Вставить("СуммаБезНДС10", 0);
ИтогЗаПериод.Вставить("НДС10", 0);
ИтогЗаПериод.Вставить("СуммаБезНДС18", 0);
ИтогЗаПериод.Вставить("НДС18", 0);
ИтогЗаПериод.Вставить("СуммаБезНДС20", 0);
ИтогЗаПериод.Вставить("НДС20", 0);
ИтогЗаПериод.Вставить("НДС0", 0);
ИтогЗаПериод.Вставить("СуммаСовсемБезНДС", 0);
Если ЭтоПечатьВыписок Тогда
ИтогЗаПериод.Вставить("Период", '00010101');
КонецЕсли;
Возврат ИтогЗаПериод;
КонецЕсли;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ОпределитьПараметрыФормированияОтчета(СтруктураПараметров)
ДатаПроверкиПараметровУчета = СтруктураПараметров.КонецПериода;
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Если СтруктураПараметров.ЗаполнениеДокумента ИЛИ СтруктураПараметров.ЗаполнениеДекларации Тогда
ДатаПроверкиПараметровУчета = СтруктураПараметров.КонецНалоговогоПериода;
КонецЕсли;
КонецЕсли;
ПлательщикНДС = УчетнаяПолитика.ПлательщикНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета);
ПлательщикНДСПрименяющийУСН = УчетнаяПолитика.ПлательщикНДСПрименяющийУСН(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета);
ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж = ДатаПроверкиПараметровУчета >= '20180101'
И ДатаПроверкиПараметровУчета < '20190101'
И НЕ ПлательщикНДС;
СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137",
УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("Постановление1137_2019",
УчетНДСПереопределяемый.ПрименяетсяПостановление15(ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("ПлательщикНДС", ПлательщикНДС);
СтруктураПараметров.Вставить("ПлательщикНДСПрименяющийУСН", ПлательщикНДСПрименяющийУСН);
СтруктураПараметров.Вставить("ПрименяетсяОсвобождениеОтУплатыНДС",
УчетнаяПолитика.ПрименяетсяОсвобождениеОтУплатыНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж", ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж);
КонецПроцедуры
Процедура СформироватьОсновнойРаздел(СтруктураПараметров, Результат);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Очистить();
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КнигаПродаж";
ТабличныйДокумент.ЧерноБелаяПечать = Истина;
СтруктураСекций = Новый Структура();
ПрименяетсяПостановление1448 = УчетНДСПереопределяемый.ПрименяетсяПостановление1448(СтруктураПараметров.КонецПериода);
Если ПрименяетсяПостановление1448 Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж1448");
СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж534");
СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
ИначеЕсли УчетНДСПереопределяемый.ПрименяетсяПостановление15(СтруктураПараметров.КонецПериода) Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж15");
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 4 Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж981");
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 3 Тогда
Если СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ПравилаЗаполнения = "2017Кв1" Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж1137_2017");
Иначе
Макет = ПолучитьОбщийМакет("КнигаПродаж735");
КонецЕсли;
Иначе
Макет = ПолучитьОбщийМакет("КнигаПродаж1137");
КонецЕсли;
НазваниеРаздела = Нстр("ru='Основной раздел'");
ОбластьСтрокиДляПовтора = Макет.ПолучитьОбласть("СтрокиДляПовтора");
СекцияВсего = Макет.ПолучитьОбласть("Всего");
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураСекций.Вставить("ШапкаРаздел9", Макет.ПолучитьОбласть("ШапкаРаздел9"));
СтруктураСекций.Вставить("ДекларацияИтоги", Макет.ПолучитьОбласть("ДекларацияИтоги"));
ОбластьСтрокиДляПовтора.Область("НомераГрафКнига").Видимость = Ложь;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
ОбластьСтрокиДляПовтора.Область("НомераГрафДекларация91").Видимость = Ложь;
КонецЕсли;
СтруктураСекций.Вставить("СтрокиДляПовтора", ОбластьСтрокиДляПовтора);
Иначе
Если ОбластьСтрокиДляПовтора.Области.Найти("НомераГрафДекларация") <> Неопределено Тогда
ОбластьСтрокиДляПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
КонецЕсли;
СтруктураСекций.Вставить("СтрокиДляПовтора", ОбластьСтрокиДляПовтора);
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
Секция = Макет.ПолучитьОбласть("ШапкаИнформация");
ТабличныйДокумент.Вывести(Секция);
КонецЕсли;
СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода, , , , Истина);
НазваниеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм");
ИННОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "ИНН", Ложь);
КППОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "КПП", Ложь);
Секция = Макет.ПолучитьОбласть("Шапка");
Если Секция.Области.Найти("НомераГрафДекларация") <> Неопределено Тогда
Секция.Область("НомераГрафДекларация").Видимость = Ложь;
КонецЕсли;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
СекцияЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ТабличныйДокумент.Вывести(СекцияЗаголовок);
Секция.Область("Период91").Видимость = Ложь;
Секция.Область("НомераГрафДекларация91").Видимость = Ложь;
КонецЕсли;
Секция.Параметры.УстановленныйОтбор = "";
Секция.Параметры.НачалоПериода = Формат(СтруктураПараметров.НачалоПериода, "ДФ=dd.MM.yyyy");
Секция.Параметры.КонецПериода = Формат(СтруктураПараметров.КонецПериода, "ДФ=dd.MM.yyyy");
Секция.Параметры.НазваниеОрганизации = НазваниеОрганизации;
Секция.Параметры.ИННКППОрганизации = ИННОрганизации
+ ?(НЕ ЗначениеЗаполнено(КППОрганизации), "", ("/" + КППОрганизации));
Если НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме И СтруктураПараметров.ОтбиратьПоКонтрагенту Тогда
Если ОбщегоНазначения.ОбъектЯвляетсяГруппой(СтруктураПараметров.КонтрагентДляОтбора) Тогда
НадписьОтбор = НСтр("ru='Отбор: Контрагент в группе %1'");
Иначе
НадписьОтбор = НСтр("ru='Отбор: Контрагент = %1'");
КонецЕсли;
Секция.Параметры.УстановленныйОтбор = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НадписьОтбор, СтруктураПараметров.КонтрагентДляОтбора);
КонецЕсли;
ТабличныйДокумент.Вывести(Секция);
КонецЕсли;
Если Результат.Пустой() Тогда
СтруктураПараметров.СчетчикСегментов = СтруктураПараметров.СчетчикСегментов + 1;
ТабличныйДокумент.Вывести(СекцияВсего);
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме
И НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
КонецЕсли;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, НазваниеРаздела, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);
Возврат;
КонецЕсли;
СтруктураСекций.Вставить("СекцияСтрока", Макет.ПолучитьОбласть("Строка"));
Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
СтруктураСекций.Вставить("СекцияКонтрагент", Макет.ПолучитьОбласть("Контрагент"));
СтруктураСекций.Вставить("СекцияВсегоКонтрагент", Макет.ПолучитьОбласть("ВсегоКонтрагент"));
КонецЕсли;
СтрокаИтогПоОрганизации = НоваяСтрокаИтоговКнигиПродаж();
ПреобразоватьЗаписиКнигиПродаж(
СтруктураПараметров,
Результат,
ТабличныйДокумент,
СтрокаИтогПоОрганизации,
СтруктураСекций,
?(СтруктураПараметров.Свойство("ТабличнаяЧасть"),СтруктураПараметров.ТабличнаяЧасть, Неопределено));
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
СекцияВсего.Параметры.Заполнить(СтрокаИтогПоОрганизации);
ТабличныйДокумент.Вывести(СекцияВсего);
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.ПовторятьПриПечатиСтроки = ТабличныйДокумент.Область("СтрокиДляПовтора");
КонецЕсли;
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме
И НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
КонецЕсли;
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ИмяРаздела = "Раздел9";
Если СтруктураПараметров.СчетчикСтрокТекущегоСегмента <> 0 Тогда
ПерваяСтрокаСегмента = СтруктураПараметров.Счетчик - СтруктураПараметров.СчетчикСтрокТекущегоСегмента + 1;
КонецЕсли;
ИтогиРаздел9 = Новый Структура(
"СтПродБезНДС20,СтПродБезНДС18,СтПродБезНДС10,СтПродБезНДС0, СтПродБезНДС7, СтПродБезНДС5,
|СумНДСВсКПр20,СумНДСВсКПр18,СумНДСВсКПр10,СтПродОсвВсКПр, СумНДСВсКПр7, СумНДСВсКПр5");
ИтогиРаздел9.СтПродБезНДС20 = СтрокаИтогПоОрганизации.СуммаБезНДС20;
ИтогиРаздел9.СтПродБезНДС18 = СтрокаИтогПоОрганизации.СуммаБезНДС18;
ИтогиРаздел9.СтПродБезНДС10 = СтрокаИтогПоОрганизации.СуммаБезНДС10;
ИтогиРаздел9.СтПродБезНДС0 = СтрокаИтогПоОрганизации.НДС0;
ИтогиРаздел9.СумНДСВсКПр20 = СтрокаИтогПоОрганизации.НДС20;
ИтогиРаздел9.СумНДСВсКПр18 = СтрокаИтогПоОрганизации.НДС18;
ИтогиРаздел9.СумНДСВсКПр10 = СтрокаИтогПоОрганизации.НДС10;
ИтогиРаздел9.СтПродОсвВсКПр = СтрокаИтогПоОрганизации.СуммаСовсемБезНДС;
ИтогиРаздел9.СтПродБезНДС7 = СтрокаИтогПоОрганизации.СуммаБезНДС7;
ИтогиРаздел9.СтПродБезНДС5 = СтрокаИтогПоОрганизации.СуммаБезНДС5;
ИтогиРаздел9.СумНДСВсКПр7 = СтрокаИтогПоОрганизации.НДС7;
ИтогиРаздел9.СумНДСВсКПр5 = СтрокаИтогПоОрганизации.НДС5;
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
ОбщиеСведения = Новый Структура(
"СтТовРубКоп20, СтТовРубКоп18,СтТовРубКоп10,СтТовРубКоп0,
|СумНДСРубКоп20, СумНДСРубКоп18,СумНДСРубКоп10,СтПродОсвНДСРубКоп");
ОбщиеСведения.СтТовРубКоп20 = СтрокаИтогПоОрганизации.СуммаБезНДС20;
ОбщиеСведения.СтТовРубКоп18 = СтрокаИтогПоОрганизации.СуммаБезНДС18;
ОбщиеСведения.СтТовРубКоп10 = СтрокаИтогПоОрганизации.СуммаБезНДС10;
ОбщиеСведения.СтТовРубКоп0 = СтрокаИтогПоОрганизации.НДС0;
ОбщиеСведения.СумНДСРубКоп20 = СтрокаИтогПоОрганизации.НДС20;
ОбщиеСведения.СумНДСРубКоп18 = СтрокаИтогПоОрганизации.НДС18;
ОбщиеСведения.СумНДСРубКоп10 = СтрокаИтогПоОрганизации.НДС10;
ОбщиеСведения.СтПродОсвНДСРубКоп = СтрокаИтогПоОрганизации.СуммаСовсемБезНДС;
Если ПрименяетсяПостановление1448 Тогда
ОбщиеСведения.Вставить("СтТовРубКоп7", СтрокаИтогПоОрганизации.СуммаБезНДС7);
ОбщиеСведения.Вставить("СтТовРубКоп5", СтрокаИтогПоОрганизации.СуммаБезНДС5);
ОбщиеСведения.Вставить("СумНДСРубКоп7", СтрокаИтогПоОрганизации.НДС7);
ОбщиеСведения.Вставить("СумНДСРубКоп5", СтрокаИтогПоОрганизации.НДС5);
КонецЕсли;
СтруктураПараметров.ОбщиеСведения = ОбщиеСведения;
КонецЕсли;
Если СтруктураПараметров.ЗаполнениеДокумента Тогда
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, НазваниеРаздела, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);
ИначеЕсли НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
Если СтруктураПараметров.СчетчикСтрокТекущегоСегмента <> 0 Тогда
Если СтруктураПараметров.СчетчикСегментов < 2 Тогда
ЗаголовокЛиста = НазваниеРаздела;
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СтруктураПараметров.СчетчикСегментов);
КонецЕсли;
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);
ИначеЕсли СтруктураПараметров.Счетчик <> 0 Тогда
РазделыОтчета = ПроверкаКонтрагентов.РазделыОтчета(СтруктураПараметров);
Если РазделыОтчета.Количество() > 0 Тогда
РазделОтчета = РазделыОтчета[РазделыОтчета.Количество()-1];
ТабличныйДокумент = РазделОтчета.ХранилищеОтчета.Получить();
ТабличныйДокумент.Вывести(СекцияВсего);
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
КонецЕсли;
РазделОтчета.ХранилищеОтчета = Новый ХранилищеЗначения(ТабличныйДокумент, Новый СжатиеДанных(9));
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура СформироватьДополнительныеЛисты(СтруктураПараметров, Результат)
Перем ТабличныйДокумент;
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
НомерОтображаемогоПериода = 0;
ИтогПоПериодам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
СтруктураПараметров.Вставить("СчетчикСтрокДопЛиста", 0);
СтруктураПараметров.Вставить("СчетчикСтрокТекущегоСегмента", 0);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ИтогиРаздел91 = Новый Структура(
"ИтСтПродКПр20,ИтСтПродКПр18,ИтСтПродКПр10,ИтСтПродКПр7,ИтСтПродКПр5,ИтСтПродКПр0,
|СумНДСИтКПр20,СумНДСИтКПр18,СумНДСИтКПр10,СумНДСИтКПр7,СумНДСИтКПр5,ИтСтПродОсвКПр,
|СтПродВсП1Р9_20,СтПродВсП1Р9_18,СтПродВсП1Р9_10,СтПродВсП1Р9_7,СтПродВсП1Р9_5,СтПродВсП1Р9_0,
|СумНДСВсП1Р9_20,СумНДСВсП1Р9_18,СумНДСВсП1Р9_10,СумНДСВсП1Р9_7,СумНДСВсП1Р9_5,СтПродОсвП1Р9Вс");
ПараметрыПолученияИтогов = Новый Структура;
ПараметрыПолученияИтогов.Вставить("НалоговыйПериод", НачалоКвартала(СтруктураПараметров.НачалоПериода));
ПараметрыПолученияИтогов.Вставить("КонецНалоговогоПериода", КонецКвартала(СтруктураПараметров.КонецНалоговогоПериода));
ПараметрыПолученияИтогов.Вставить("ДатаФормированияДопЛиста", НачалоКвартала(СтруктураПараметров.НачалоПериода));
ПараметрыПолученияИтогов.Вставить("СписокОрганизаций", СтруктураПараметров.СписокОрганизаций);
ПараметрыПолученияИтогов.Вставить("Организация", СтруктураПараметров.Организация);
ПараметрыПолученияИтогов.Вставить("ЗаписьДополнительногоЛиста", Ложь);
ИтогПоКнигеПродаж = ПолучитьИтогиЗаПериодКнигаПродаж(ПараметрыПолученияИтогов);
ИтогиРаздел91.ИтСтПродКПр20 = ИтогПоКнигеПродаж.СуммаБезНДС20;
ИтогиРаздел91.ИтСтПродКПр18 = ИтогПоКнигеПродаж.СуммаБезНДС18;
ИтогиРаздел91.ИтСтПродКПр10 = ИтогПоКнигеПродаж.СуммаБезНДС10;
ИтогиРаздел91.ИтСтПродКПр7 = ИтогПоКнигеПродаж.СуммаБезНДС7;
ИтогиРаздел91.ИтСтПродКПр5 = ИтогПоКнигеПродаж.СуммаБезНДС5;
ИтогиРаздел91.ИтСтПродКПр0 = ИтогПоКнигеПродаж.НДС0;
ИтогиРаздел91.СумНДСИтКПр20 = ИтогПоКнигеПродаж.НДС20;
ИтогиРаздел91.СумНДСИтКПр18 = ИтогПоКнигеПродаж.НДС18;
ИтогиРаздел91.СумНДСИтКПр10 = ИтогПоКнигеПродаж.НДС10;
ИтогиРаздел91.СумНДСИтКПр7 = ИтогПоКнигеПродаж.НДС7;
ИтогиРаздел91.СумНДСИтКПр5 = ИтогПоКнигеПродаж.НДС5;
ИтогиРаздел91.ИтСтПродОсвКПр = ИтогПоКнигеПродаж.СуммаСовсемБезНДС;
КонецЕсли;
ДанныеОтчета = Новый Массив;
Пока ИтогПоПериодам.Следующий() Цикл
НомерЛиста = 0;
НомерОтображаемогоПериода = НомерОтображаемогоПериода + 1;
НалоговыйПериод = ПредставлениеПериода(
ИтогПоПериодам.НалоговыйПериод, КонецДня(ИтогПоПериодам.КонецНалоговогоПериода), "ФП = Истина");
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабличныйДокумент.АвтоМасштаб = Истина;
СтруктураПараметров.Вставить("СчетчикСегментовНалоговогоПериода", 1);
ИтогПоПериодамКорректировки = ИтогПоПериодам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоПериодамКорректировки.Следующий() Цикл;
СтруктураСекций = Новый Структура();
ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(
ИтогПоПериодамКорректировки.КонецНалоговогоПериода);
СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137", ВерсияПостановленияНДС1137);
ПрименяетсяПостановление1448 =
УчетНДСПереопределяемый.ПрименяетсяПостановление1448(ИтогПоПериодамКорректировки.КонецНалоговогоПериода);
Если ПрименяетсяПостановление1448 Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж1448");
СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж534");
СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
ИначеЕсли УчетНДСПереопределяемый.ПрименяетсяПостановление15(ИтогПоПериодамКорректировки.КонецНалоговогоПериода) Тогда
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж15");
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 1 Тогда
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж1137");
СтруктураПараметров.ЗаполнениеДекларации = Ложь;
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 2 Тогда
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж952");
СтруктураПараметров.ЗаполнениеДекларации = Ложь;
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 3 Тогда
Если СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ПравилаЗаполнения = "2017Кв1" Тогда
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж1137_2017");
Иначе
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж735");
КонецЕсли;
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 4 Тогда
Макет = ПолучитьОбщийМакет("ДополнительныйЛистКнигиПродаж981");
КонецЕсли;
ОбластьСтрокиПовтора = Макет.ПолучитьОбласть("СтрокиДляПовтора");
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураСекций.Вставить("ШапкаРаздел91", Макет.ПолучитьОбласть("ШапкаРаздел91"));
СтруктураСекций.Вставить("ДекларацияИтоги", Макет.ПолучитьОбласть("ДекларацияИтоги91"));
ОбластьСтрокиПовтора.Область("НомераГрафКнига").Видимость = Ложь;
ОбластьСтрокиПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
Иначе
ОбластьСтрокиПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
ОбластьСтрокиПовтора.Область("НомераГрафДекларация91").Видимость = Ложь;
КонецЕсли;
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 >= 3 Тогда
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураСекций.Вставить("ШапкаРаздел91", Макет.ПолучитьОбласть("ШапкаРаздел91"));
СтруктураСекций.Вставить("ДекларацияИтоги", Макет.ПолучитьОбласть("ДекларацияИтоги"));
ОбластьСтрокиПовтора.Область("НомераГрафКнига").Видимость = Ложь;
Иначе
ОбластьСтрокиПовтора.Область("НомераГрафДекларация").Видимость = Ложь;
КонецЕсли;
КонецЕсли;
СтруктураСекций.Вставить("СекцияСтрока", Макет.ПолучитьОбласть("Строка"));
СтруктураСекций.Вставить("СтрокиДляПовтора", ОбластьСтрокиПовтора);
Секция = Макет.ПолучитьОбласть("Строка");
СтрокаИтого = Макет.ПолучитьОбласть("Итого");
СтрокаВсего = Макет.ПолучитьОбласть("Всего");
Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
СекцияКонтрагент = Макет.ПолучитьОбласть("Контрагент");
СекцияВсегоКонтрагент = Макет.ПолучитьОбласть("ВсегоКонтрагент");
КонецЕсли;
ОкончаниеПредыдущегоРаздела = ТабличныйДокумент.ВысотаТаблицы;
НомерЛиста = НомерЛиста + 1;
СтруктураПараметров.Вставить("НалоговыйПериод",
?(СтруктураПараметров.ЗаполнениеДекларации,
СтруктураПараметров.НачалоНалоговогоПериода, ИтогПоПериодамКорректировки.НалоговыйПериод));
СтруктураПараметров.Вставить("КонецНалоговогоПериода",
КонецКвартала(ИтогПоПериодамКорректировки.КонецНалоговогоПериода));
СтруктураПараметров.Вставить("ДатаОформления", ИтогПоПериодамКорректировки.ДатаОформления);
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
УчетНДС.ВывестиШапкуДопЛиста(ТабличныйДокумент, Макет, СтруктураПараметров, НомерЛиста);
КонецЕсли;
СтруктураПараметров.ДатаФормированияДопЛиста = ИтогПоПериодамКорректировки.ДатаОформления;
ИтогЗаПериод = ПолучитьИтогиЗаПериодКнигаПродаж(СтруктураПараметров);
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
СтрокаИтого.Параметры.Заполнить(ИтогЗаПериод);
ТабличныйДокумент.Вывести(СтрокаИтого);
Иначе
ВывестиШапкуРаздела91Декларации(ТабличныйДокумент, Макет, СтруктураПараметров, НомерЛиста, ИтогЗаПериод);
КонецЕсли;
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
ОбщиеСведения = Новый Структура("НомерДопЛКнПрод,Период,ОтчетГод,ДатаДопЛКнПрод,Итого,Всего");
ОбщиеСведения.НомерДопЛКнПрод = НомерЛиста;
ОбщиеСведения.Период = СтруктураПараметров.ПериодПоСКНП;
ОбщиеСведения.ОтчетГод = Строка(Формат(Год(ИтогПоПериодамКорректировки.НалоговыйПериод),"ЧГ=0"));
ОбщиеСведения.ДатаДопЛКнПрод = Строка(Формат(ИтогПоПериодамКорректировки.ДатаОформления, "ДЛФ=Д"));
Итого = Новый Структура(
"СтТовРубКоп20, СтТовРубКоп18,СтТовРубКоп10,СтТовРубКоп0,СумНДСРубКоп20,СумНДСРубКоп18,СумНДСРубКоп10,СтПродОсвНДСРубКоп");
Итого.СтТовРубКоп20 = ИтогЗаПериод.СуммаБезНДС20;
Итого.СтТовРубКоп18 = ИтогЗаПериод.СуммаБезНДС18;
Итого.СтТовРубКоп10 = ИтогЗаПериод.СуммаБезНДС10;
Итого.СтТовРубКоп0 = ИтогЗаПериод.НДС0;
Итого.СумНДСРубКоп20 = ИтогЗаПериод.НДС20;
Итого.СумНДСРубКоп18 = ИтогЗаПериод.НДС18;
Итого.СумНДСРубКоп10 = ИтогЗаПериод.НДС10;
Итого.СтПродОсвНДСРубКоп = ИтогЗаПериод.СуммаСовсемБезНДС;
Если ПрименяетсяПостановление1448 Тогда
Итого.Вставить("СтТовРубКоп7", ИтогЗаПериод.СуммаБезНДС7);
Итого.Вставить("СтТовРубКоп5", ИтогЗаПериод.СуммаБезНДС5);
Итого.Вставить("СумНДСРубКоп7", ИтогЗаПериод.НДС7);
Итого.Вставить("СумНДСРубКоп5", ИтогЗаПериод.НДС5);
КонецЕсли;
ОбщиеСведения.Итого = Итого;
КонецЕсли;
Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
СтруктураСекций.Вставить("СекцияКонтрагент", Макет.ПолучитьОбласть("Контрагент"));
СтруктураСекций.Вставить("СекцияВсегоКонтрагент", Макет.ПолучитьОбласть("ВсегоКонтрагент"));
КонецЕсли;
ПреобразоватьЗаписиДополнительногоЛистаКнигиПродаж(
СтруктураПараметров,
ИтогПоПериодамКорректировки,
?(СтруктураПараметров.Свойство("РеквизитыДокумента"),СтруктураПараметров.РеквизитыДокумента, ИтогЗаПериод),
ТабличныйДокумент,
СтруктураСекций,
?(СтруктураПараметров.Свойство("ТабличнаяЧасть"),СтруктураПараметров.ТабличнаяЧасть, Неопределено));
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
СтрокаВсего.Параметры.Заполнить(ИтогЗаПериод);
ТабличныйДокумент.Вывести(СтрокаВсего);
КонецЕсли;
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
Всего = Новый Структура(
"СтТовРубКоп20, СтТовРубКоп18,СтТовРубКоп10,СтТовРубКоп0,СумНДСРубКоп20,СумНДСРубКоп18,СумНДСРубКоп10,СтПродОсвНДСРубКоп");
Всего.СтТовРубКоп20 = ИтогЗаПериод.СуммаБезНДС20;
Всего.СтТовРубКоп18 = ИтогЗаПериод.СуммаБезНДС18;
Всего.СтТовРубКоп10 = ИтогЗаПериод.СуммаБезНДС10;
Всего.СтТовРубКоп0 = ИтогЗаПериод.НДС0;
Всего.СумНДСРубКоп20 = ИтогЗаПериод.НДС20;
Всего.СумНДСРубКоп18 = ИтогЗаПериод.НДС18;
Всего.СумНДСРубКоп10 = ИтогЗаПериод.НДС10;
Всего.СтПродОсвНДСРубКоп = ИтогЗаПериод.СуммаСовсемБезНДС;
Если ПрименяетсяПостановление1448 Тогда
Всего.Вставить("СтТовРубКоп7", ИтогЗаПериод.СуммаБезНДС7);
Всего.Вставить("СтТовРубКоп5", ИтогЗаПериод.СуммаБезНДС5);
Всего.Вставить("СумНДСРубКоп7", ИтогЗаПериод.НДС7);
Всего.Вставить("СумНДСРубКоп5", ИтогЗаПериод.НДС5);
КонецЕсли;
ОбщиеСведения.Всего = Всего;
СтруктураДанных = Новый Структура("ОбщиеСведения,Записи",
ОбщиеСведения, СтруктураПараметров.Записи.Скопировать());
СтруктураПараметров.Записи.Очистить();
ДанныеОтчета.Добавить(СтруктураДанных);
КонецЕсли;
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме
И НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
КонецЕсли;
КонецЦикла;
НазваниеРаздела = СтрШаблон(НСтр("ru = 'Доп.листы за %1'"), НалоговыйПериод);
Если СтруктураПараметров.СчетчикСегментовНалоговогоПериода > 1 Тогда
НазваниеРаздела = УчетНДС.СформироватьЗаголовокЛиста(
НазваниеРаздела, СтруктураПараметров.СчетчикСегментовНалоговогоПериода);
КонецЕсли;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(
СтруктураПараметров,
НазваниеРаздела,
СтруктураПараметров.СчетчикСегментов,
ТабличныйДокумент,
ДополнительныеПараметры);
СтруктураПараметров.СчетчикСегментов = СтруктураПараметров.СчетчикСегментов + 1;
КонецЦикла;
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ИмяРаздела = "Раздел9_Прил1";
Если СтруктураПараметров.СчетчикСтрокТекущегоСегмента <> 0 Тогда
ПерваяСтрокаСегмента = СтруктураПараметров.СчетчикСтрокДопЛиста
- СтруктураПараметров.СчетчикСтрокТекущегоСегмента + 1;
Если ПерваяСтрокаСегмента = 1 Тогда
Если ТабличныйДокумент.Области.Найти("СуммаБезНДС20Приложение") <> Неопределено Тогда
ТабличныйДокумент.Область("СуммаБезНДС20Приложение").Значение = ИтогЗаПериод.СуммаБезНДС20;
ТабличныйДокумент.Область("НДС20Приложение").Значение = ИтогЗаПериод.НДС20;
КонецЕсли;
Если СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
ТабличныйДокумент.Область("СуммаБезНДС7Приложение").Значение = ИтогЗаПериод.СуммаБезНДС7;
ТабличныйДокумент.Область("НДС7Приложение").Значение = ИтогЗаПериод.НДС7;
ТабличныйДокумент.Область("СуммаБезНДС5Приложение").Значение = ИтогЗаПериод.СуммаБезНДС5;
ТабличныйДокумент.Область("НДС5Приложение").Значение = ИтогЗаПериод.НДС5;
КонецЕсли;
ТабличныйДокумент.Область("СуммаБезНДС18Приложение").Значение = ИтогЗаПериод.СуммаБезНДС18;
ТабличныйДокумент.Область("СуммаБезНДС10Приложение").Значение = ИтогЗаПериод.СуммаБезНДС10;
ТабличныйДокумент.Область("НДС0Приложение").Значение = ИтогЗаПериод.НДС0;
ТабличныйДокумент.Область("НДС18Приложение").Значение = ИтогЗаПериод.НДС18;
ТабличныйДокумент.Область("НДС10Приложение").Значение = ИтогЗаПериод.НДС10;
ТабличныйДокумент.Область("СуммаСовсемБезНДСПриложение").Значение = ИтогЗаПериод.СуммаСовсемБезНДС;
Иначе
ЗаписатьИтогиВПервыйСегментРаздела91(СтруктураПараметров, ИтогЗаПериод);
КонецЕсли;
ИначеЕсли СтруктураПараметров.СчетчикСтрокТекущегоСегмента = 0
И СтруктураПараметров.СчетчикСтрокДопЛиста <> 0 Тогда
ЗаписатьИтогиВПервыйСегментРаздела91(СтруктураПараметров, ИтогЗаПериод);
КонецЕсли;
ИтогиРаздел91.СтПродВсП1Р9_20 = ИтогЗаПериод.СуммаБезНДС20;
ИтогиРаздел91.СтПродВсП1Р9_18 = ИтогЗаПериод.СуммаБезНДС18;
ИтогиРаздел91.СтПродВсП1Р9_10 = ИтогЗаПериод.СуммаБезНДС10;
ИтогиРаздел91.СтПродВсП1Р9_7 = ИтогЗаПериод.СуммаБезНДС7;
ИтогиРаздел91.СтПродВсП1Р9_5 = ИтогЗаПериод.СуммаБезНДС5;
ИтогиРаздел91.СтПродВсП1Р9_0 = ИтогЗаПериод.НДС0;
ИтогиРаздел91.СумНДСВсП1Р9_20 = ИтогЗаПериод.НДС20;
ИтогиРаздел91.СумНДСВсП1Р9_18 = ИтогЗаПериод.НДС18;
ИтогиРаздел91.СумНДСВсП1Р9_10 = ИтогЗаПериод.НДС10;
ИтогиРаздел91.СумНДСВсП1Р9_7 = ИтогЗаПериод.НДС7;
ИтогиРаздел91.СумНДСВсП1Р9_5 = ИтогЗаПериод.НДС5;
ИтогиРаздел91.СтПродОсвП1Р9Вс = ИтогЗаПериод.СуммаСовсемБезНДС;
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
СтруктураПараметров.ДанныеОтчета = ДанныеОтчета;
КонецЕсли;
КонецПроцедуры
Процедура ЗаписатьИтогиВПервыйСегментРаздела91(СтруктураПараметров, ИтогЗаПериод)
ВидДополнительногоФайла = "ТабличныйДокументРаздел9_Прил1.1";
ИмяРаздела = "Раздел9_Прил1";
КонецПроцедуры
Процедура ВывестиШапкуРаздела91Декларации(ТабличныйДокумент, Макет, СтруктураПараметров, НомерДополнительногоЛиста, ИтогоЗаПериод)
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Если НомерДополнительногоЛиста = 1 Тогда
Секция = Макет.ПолучитьОбласть("ШапкаРаздел91");
ТабличныйДокумент.Вывести(Секция);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
ДекларацияИтоги = Макет.ПолучитьОбласть("ДекларацияИтоги91");
Иначе
ДекларацияИтоги = Макет.ПолучитьОбласть("ДекларацияИтоги");
КонецЕсли;
ДекларацияИтоги.Параметры.Заполнить(ИтогоЗаПериод);
ТабличныйДокумент.Вывести(ДекларацияИтоги);
КонецЕсли;
Секция = Макет.ПолучитьОбласть("ШапкаРаздел91НомерЛиста");
Секция.Параметры.НомерЛиста = НомерДополнительногоЛиста;
Секция.Параметры.ДатаСоставления = Формат(СтруктураПараметров.ДатаОформления, "ДФ=dd.MM.yyyy");
ТабличныйДокумент.Вывести(Секция);
Секция = Макет.ПолучитьОбласть("СтрокиДляПовтора");
Секция.Область("НомераГрафКнига").Видимость = Ложь;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
Секция.Область("НомераГрафДекларация").Видимость = Ложь;
КонецЕсли;
ТабличныйДокумент.Вывести(Секция);
КонецПроцедуры
Процедура ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет)
ОтветственныеЛица = ОтветственныеЛицаБП.ОтветственныеЛица(СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода);
Если ОбщегоНазначенияБПВызовСервераПовтИсп.ЭтоЮрЛицо(СтруктураПараметров.Организация) Тогда
ИмяРук = ОтветственныеЛица.РуководительПредставление;
ИмяОрг = "";
Свидетельство = "";
Иначе
ИмяРук = "";
ИмяОрг = ОтветственныеЛица.РуководительПредставление;
СведенияОЮрФизЛице = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(
СтруктураПараметров.Организация, СтруктураПараметров.КонецПериода);
Свидетельство = БухгалтерскийУчетПереопределяемый.СвидетельствоОРегистрации(СведенияОЮрФизЛице);
КонецЕсли;
Секция = Макет.ПолучитьОбласть("Подвал");
Секция.Параметры.ИмяРук = ИмяРук;
Секция.Параметры.ИмяОрг = ИмяОрг;
Секция.Параметры.Свидетельство = Свидетельство;
ТабличныйДокумент.Вывести(Секция);
КонецПроцедуры
Процедура ИнициализироватьТаблицыДанныхНДС(СтруктураПараметров)
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПрименяетсяПостановление1448 = УчетНДСПереопределяемый.ПрименяетсяПостановление1448(СтруктураПараметров.КонецПериода);
Записи = Новый ТаблицаЗначений;
Записи.Колонки.Добавить("НомПП", ОбщегоНазначения.ОписаниеТипаЧисло(12, 0));
Записи.Колонки.Добавить("НомерСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(1000));
Записи.Колонки.Добавить("ДатаСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Записи.Колонки.Добавить("НомИспрСчФ", ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
Записи.Колонки.Добавить("ДатаИспрСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Записи.Колонки.Добавить("НомерКСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(1000));
Записи.Колонки.Добавить("ДатаКСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Записи.Колонки.Добавить("НомИспрКСчФ", ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
Записи.Колонки.Добавить("ДатаИспрКСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Записи.Колонки.Добавить("НаимПок", ОбщегоНазначения.ОписаниеТипаСтрока(1000));
Записи.Колонки.Добавить("ИННЮЛ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Записи.Колонки.Добавить("КПП", ОбщегоНазначения.ОписаниеТипаСтрока(9));
Записи.Колонки.Добавить("ИННФЛ", ОбщегоНазначения.ОписаниеТипаСтрока(12));
Записи.Колонки.Добавить("КодОКВ", ОбщегоНазначения.ОписаниеТипаСтрока(3));
Записи.Колонки.Добавить("СтТовУчНалВсего", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СтТовУчНалРубКоп", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СтТовРубКоп20", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СтТовРубКоп18", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СтТовРубКоп10", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СтТовРубКоп7", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СтТовРубКоп5", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СтТовРубКоп0", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СумНДСРубКоп20", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СумНДСРубКоп18", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СумНДСРубКоп10", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СумНДСРубКоп7", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СумНДСРубКоп5", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СтПродОсвНДСРубКоп", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("КодВидОпер", Новый ОписаниеТипов("Массив"));
Записи.Колонки.Добавить("СвПосредн");
Записи.Колонки.Добавить("СвДокПдтвОпл", Новый ОписаниеТипов("Массив"));
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
Записи.Колонки.Добавить("СвРегНом", Новый ОписаниеТипов("Массив"));
Иначе
Записи.Колонки.Добавить("НомерТД", Новый ОписаниеТипов("Массив"));
КонецЕсли;
Записи.Колонки.Добавить("ВидТов", Новый ОписаниеТипов("Массив"));
Если СтруктураПараметров.ФормироватьДополнительныеЛисты Тогда
ОбщиеСведения = Новый Структура("НомерДопЛКнПрод,Период,ОтчетГод,ДатаДопЛКнПрод,Итого,Всего");
СтруктураПараметров.Вставить("ДанныеОтчета");
Иначе
ОбщиеСведения = Новый Структура(
"СтТовРубКоп20,СтТовРубКоп18,СтТовРубКоп10,СтТовРубКоп0,СумНДСРубКоп20,СумНДСРубКоп18,СумНДСРубКоп10,СтПродОсвНДСРубКоп");
Если ПрименяетсяПостановление1448 Тогда
ОбщиеСведения.Вставить("СтТовРубКоп7");
ОбщиеСведения.Вставить("СтТовРубКоп5");
ОбщиеСведения.Вставить("СумНДСРубКоп7");
ОбщиеСведения.Вставить("СумНДСРубКоп5");
КонецЕсли;
КонецЕсли;
СтруктураПараметров.Вставить("Записи", Записи);
СтруктураПараметров.Вставить("ОбщиеСведения", ОбщиеСведения);
Иначе
Раздел9 = Новый ТаблицаЗначений;
Раздел9.Колонки.Добавить("НомерПор", ОбщегоНазначения.ОписаниеТипаЧисло(12, 0));
Раздел9.Колонки.Добавить("НомСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(0));
Раздел9.Колонки.Добавить("ДатаСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Раздел9.Колонки.Добавить("НомИспрСчФ", ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
Раздел9.Колонки.Добавить("ДатаИспрСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Раздел9.Колонки.Добавить("НомКСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(0));
Раздел9.Колонки.Добавить("ДатаКСчФПрод", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Раздел9.Колонки.Добавить("НомИспрКСчФ", ОбщегоНазначения.ОписаниеТипаЧисло(3, 0));
Раздел9.Колонки.Добавить("ДатаИспрКСчФ", ОбщегоНазначения.ОписаниеТипаСтрока(10));
Раздел9.Колонки.Добавить("ОКВ", ОбщегоНазначения.ОписаниеТипаСтрока(3));
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
Если СтруктураПараметров.ПравилаЗаполнения = "2017Кв1" Тогда
Раздел9.Колонки.Добавить("РегНомТД", Новый ОписаниеТипов("Массив"));
ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4" Тогда
Раздел9.Колонки.Добавить("РегНомТД", Новый ОписаниеТипов("Массив"));
Раздел9.Колонки.Добавить("КодВидТовар", Новый ОписаниеТипов("Массив"));
ИначеЕсли СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
Раздел9.Колонки.Добавить("СвРегНом", Новый ОписаниеТипов("Массив"));
Раздел9.Колонки.Добавить("КодВидТовар", Новый ОписаниеТипов("Массив"));
КонецЕсли;
КонецЕсли;
Раздел9.Колонки.Добавить("СтоимПродСФВ", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СтоимПродСФ", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СтоимПродСФ20", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СтоимПродСФ18", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СтоимПродСФ10", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СтоимПродСФ0", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СтоимПродСФ7", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СтоимПродСФ5", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СумНДССФ20", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СумНДССФ18", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СумНДССФ10", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СтоимПродОсв", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СумНДССФ7", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СумНДССФ5", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("КодВидОпер", Новый ОписаниеТипов("Массив"));
Раздел9.Колонки.Добавить("ДокПдтвОпл", Новый ОписаниеТипов("Массив"));
Раздел9.Колонки.Добавить("СвПокуп", Новый ОписаниеТипов("Массив"));
Раздел9.Колонки.Добавить("СвПос");
Раздел9.Колонки.Добавить("ДополнительныеСведения");
Раздел91 = Раздел9.СкопироватьКолонки();
СтруктураПараметров.Вставить("ТаблицаРаздел9", Раздел9);
СтруктураПараметров.Вставить("ТаблицаРаздел91", Раздел91);
СтруктураПараметров.Вставить("ТабличныйДокументРаздел91");
ИтогиРаздел9 = Новый Структура(
"СтПродБезНДС20,СтПродБезНДС18,СтПродБезНДС10,СтПродБезНДС0,
|СумНДСВсКПр20,СумНДСВсКПр18,СумНДСВсКПр10,СтПродОсвВсКПр");
ИтогиРаздел91 = Новый Структура(
"ИтСтПродКПр20,ИтСтПродКПр18,ИтСтПродКПр10,ИтСтПродКПр0,
|СумНДСИтКПр20,СумНДСИтКПр18,СумНДСИтКПр10,ИтСтПродОсвКПр,
|СтПродВсП1Р9_20,СтПродВсП1Р9_18,СтПродВсП1Р9_10,СтПродВсП1Р9_0,
|СумНДСВсП1Р9_20,СумНДСВсП1Р9_18,СумНДСВсП1Р9_10,СтПродОсвП1Р9Вс");
Если СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
ИтогиРаздел9.Вставить("СтПродБезНДС7");
ИтогиРаздел9.Вставить("СтПродБезНДС5");
ИтогиРаздел9.Вставить("СумНДСВсКПр7");
ИтогиРаздел9.Вставить("СумНДСВсКПр5");
ИтогиРаздел91.Вставить("ИтСтПродКПр7");
ИтогиРаздел91.Вставить("ИтСтПродКПр5");
ИтогиРаздел91.Вставить("СумНДСИтКПр7");
ИтогиРаздел91.Вставить("СумНДСИтКПр5");
ИтогиРаздел91.Вставить("СтПродВсП1Р9_7");
ИтогиРаздел91.Вставить("СтПродВсП1Р9_5");
ИтогиРаздел91.Вставить("СумНДСВсП1Р9_7");
ИтогиРаздел91.Вставить("СумНДСВсП1Р9_5");
КонецЕсли;
СтруктураПараметров.Вставить("ИтогиРаздел9", ИтогиРаздел9);
СтруктураПараметров.Вставить("ИтогиРаздел91", ИтогиРаздел91);
КонецЕсли;
КонецПроцедуры
Процедура ПреобразоватьЗаписиКнигиПродаж(
СтруктураПараметров,
НаборЗаписей,
ТабличныйДокумент,
СтрокаИтогПоОрганизации,
СтруктураСекций,
ТаблицаДокумента)
ДополнительнаяИнформация = ПолучитьДополнительнуюИнформациюПоСчетуФактуре(СтруктураПараметров);
Если НЕ СтруктураПараметров.Свойство("ЗаполнениеДекларации") Тогда
СтруктураПараметров.Вставить("ЗаполнениеДекларации", Ложь);
ИначеЕсли СтруктураПараметров.ЗаполнениеДекларации И СтруктураПараметров.КонецПериода < '20150101' Тогда
СтруктураПараметров.ЗаполнениеДекларации = Ложь;
КонецЕсли;
ПараметрыСтроки = СтруктураСекций.СекцияСтрока.Параметры;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
ПараметрыСтрокиРНПТ = СтруктураСекций.СекцияСтрокаРНПТ.Параметры;
КонецЕсли;
ИтогПоОрганизации = НаборЗаписей.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ИтогПоОрганизации.Следующий();
Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
СекцияКонтрагент = СтруктураСекций.СекцияКонтрагент;
СекцияВсегоКонтрагент = СтруктураСекций.СекцияВсегоКонтрагент;
КонецЕсли;
Счетчик = 0;
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = 1;
НазваниеРаздела = Нстр("ru='Основной раздел'");
ЗаполнитьЗначенияСвойств(СтрокаИтогПоОрганизации, ИтогПоОрганизации);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел9);
СтруктураСекций.ДекларацияИтоги.Параметры.Заполнить(СтрокаИтогПоОрганизации);
ТабличныйДокумент.Вывести(СтруктураСекций.ДекларацияИтоги);
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ГруппироватьПоКонтрагентам
И Не СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
СтрокаИтогПоКонтрагенту = НоваяСтрокаИтоговКнигиПродаж();
ИтогПоКонтрагенту = ИтогПоОрганизации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоКонтрагенту.Следующий() Цикл
ЗаполнитьЗначенияСвойств(СтрокаИтогПоКонтрагенту, ИтогПоКонтрагенту);
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ИтогПоКонтрагенту, Истина) Тогда
СекцияКонтрагент.Параметры.Контрагент = ИтогПоКонтрагенту.Покупатель;
ТабличныйДокумент.Вывести(СекцияКонтрагент);
ТабличныйДокумент.НачатьГруппуСтрок();
КонецЕсли;
НалоговыеПериоды = ИтогПоКонтрагенту.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока НалоговыеПериоды.Следующий() Цикл
ИтогПоСчетФактураДокумент = НалоговыеПериоды.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоСчетФактураДокумент.Следующий() Цикл
ИтогПоДоговорАванса = ИтогПоСчетФактураДокумент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоДоговорАванса.Следующий() Цикл
ЗаписьКниги = ИтогПоДоговорАванса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ЗаписьКниги.Следующий() Цикл
Если ЗаписьКниги.НачислениеПоОказаниюУслуг
ИЛИ (ЗаписьКниги.СводныйКорректировочный
И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4) Тогда
ЗаписьКнигиДетальная = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока ЗаписьКнигиДетальная.Следующий() Цикл
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ЗаписьКнигиДетальная) Тогда
ЗаполнитьСтрокуКнигиПродаж(СтруктураПараметров, ПараметрыСтроки,
ЗаписьКнигиДетальная, Счетчик, ДополнительнаяИнформация);
УчетНДС.ВывестиГраницуСтроки(СтруктураПараметров, СтруктураСекций);
ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
УчетНДС.ДобавитьКонтрагентаНаПроверку(
СтруктураПараметров, ЗаписьКнигиДетальная, ОбластьТабличногоДокумента, , СчетчикСегментов);
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ЗаписьКнигиДетальная,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
Иначе
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоКонтрагенту, ЗаписьКнигиДетальная, СтруктураПараметров);
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоОрганизации, ЗаписьКнигиДетальная, СтруктураПараметров);
КонецЕсли;
КонецЦикла;
ИначеЕсли ЗаписьКниги.СводныйКомиссионный
И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4 Тогда
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ЗаполнитьСтрокуКнигиПродажСводныйКомиссионный(ЗаписьКниги, СтруктураПараметров, ПараметрыСтроки, Счетчик);
ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
Иначе
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ЗаписьКнигиДетальная = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
ЗаписьКнигиДетальная.Следующий();
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ЗаписьКниги, , ЗаписьКнигиДетальная) Тогда
ЗаполнитьСтрокуКнигиПродаж(СтруктураПараметров, ПараметрыСтроки,
ЗаписьКниги, Счетчик, ДополнительнаяИнформация, ЗаписьКнигиДетальная);
УчетНДС.ВывестиГраницуСтроки(СтруктураПараметров, СтруктураСекций);
ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
УчетНДС.ДобавитьКонтрагентаНаПроверку(
СтруктураПараметров, ЗаписьКниги, ОбластьТабличногоДокумента, ЗаписьКнигиДетальная, СчетчикСегментов);
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ЗаписьКнигиДетальная,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
Иначе
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоКонтрагенту, ЗаписьКниги, СтруктураПараметров);
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоОрганизации, ЗаписьКниги, СтруктураПараметров);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ИтогПоКонтрагенту, Истина) Тогда
ТабличныйДокумент.ЗакончитьГруппуСтрок();
СекцияВсегоКонтрагент.Параметры.Заполнить(СтрокаИтогПоКонтрагенту);
ТабличныйДокумент.Вывести(СекцияВсегоКонтрагент);
КонецЕсли;
Если СчетчикСтрокТекущегоСегмента >= СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментов);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СчетчикСегментов, ТабличныйДокумент);
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
КонецЕсли;
КонецЦикла;
Иначе
ТекстРозничнаяПродажа = НСтр("ru = 'Розничная продажа'", ОбщегоНазначения.КодОсновногоЯзыка());
НалоговыеПериоды = ИтогПоОрганизации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока НалоговыеПериоды.Следующий() Цикл
ИтогПоСчетФактураДокумент = НалоговыеПериоды.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоСчетФактураДокумент.Следующий() Цикл
ИтогПоДоговорАванса = ИтогПоСчетФактураДокумент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоДоговорАванса.Следующий() Цикл
ЗаписьКниги = ИтогПоДоговорАванса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ЗаписьКниги.Следующий() Цикл
ЗаписьКнигиДетальная = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
Если НЕ ЗаписьКниги.СводнаяСправка
И ((ЗаписьКниги.Покупатель = ТекстРозничнаяПродажа
И ЗаписьКнигиДетальная.Количество() > 1)
ИЛИ ЗаписьКниги.НалоговыйАгентПокупательТоваров
ИЛИ ЗаписьКниги.НачислениеПоОказаниюУслуг
ИЛИ (ЗаписьКниги.СводныйКорректировочный
И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4)) Тогда
Пока ЗаписьКнигиДетальная.Следующий() Цикл
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ЗаписьКнигиДетальная) Тогда
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПараметрыСтроки = ТаблицаДокумента.Добавить();
КонецЕсли;
ЗаполнитьСтрокуКнигиПродаж(СтруктураПараметров, ПараметрыСтроки,
ЗаписьКнигиДетальная, Счетчик, ДополнительнаяИнформация);
УчетНДС.ВывестиГраницуСтроки(СтруктураПараметров, СтруктураСекций);
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
ИначеЕсли НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураСекций.СекцияСтрока.Область(1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
УчетНДС.ДобавитьКонтрагентаНаПроверку(СтруктураПараметров, ЗаписьКнигиДетальная, ОбластьТабличногоДокумента, , СчетчикСегментов);
КонецЕсли;
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ЗаписьКнигиДетальная,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
Иначе
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоОрганизации, ЗаписьКнигиДетальная, СтруктураПараметров);
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И СчетчикСтрокТекущегоСегмента = СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
ПерваяСтрокаСегмента = Счетчик - СчетчикСтрокТекущегоСегмента + 1;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураПараметров.ТаблицаРаздел9.Очистить();
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментов);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СчетчикСегментов, ТабличныйДокумент);
КонецЕсли;
ТабличныйДокумент.Очистить();
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел9);
КонецЕсли;
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
КонецЕсли;
КонецЦикла;
ИначеЕсли ЗаписьКниги.СводныйКомиссионный
И СтруктураПараметров.ВерсияПостановленияНДС1137 < 4 Тогда
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПараметрыСтроки = ТаблицаДокумента.Добавить();
КонецЕсли;
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ЗаполнитьСтрокуКнигиПродажСводныйКомиссионный(ЗаписьКниги, СтруктураПараметров, ПараметрыСтроки, Счетчик);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
ИЛИ (СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735) Тогда
СтруктураСекций.СекцияСтрока.Область(1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И СчетчикСтрокТекущегоСегмента = СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
ПерваяСтрокаСегмента = Счетчик - СчетчикСтрокТекущегоСегмента + 1;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураПараметров.ТаблицаРаздел9.Очистить();
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментов);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СчетчикСегментов, ТабличныйДокумент);
КонецЕсли;
ТабличныйДокумент.Очистить();
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел9);
КонецЕсли;
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
КонецЕсли;
Иначе
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ЗаписьКнигиДетальная.Следующий();
Если УчетНДС.ВыводитьСтроку(СтруктураПараметров, ЗаписьКниги, , ЗаписьКнигиДетальная) Тогда
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПараметрыСтроки = ТаблицаДокумента.Добавить();
КонецЕсли;
ЗаполнитьСтрокуКнигиПродаж(СтруктураПараметров, ПараметрыСтроки, ЗаписьКниги,
Счетчик, ДополнительнаяИнформация, ЗаписьКнигиДетальная);
УчетНДС.ВывестиГраницуСтроки(СтруктураПараметров, СтруктураСекций);
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
ИначеЕсли НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураСекций.СекцияСтрока.Область(1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ОбластьТабличногоДокумента = ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
УчетНДС.ДобавитьКонтрагентаНаПроверку(СтруктураПараметров, ЗаписьКниги, ОбластьТабличногоДокумента, ЗаписьКнигиДетальная, СчетчикСегментов);
КонецЕсли;
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ЗаписьКнигиДетальная,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
Иначе
УчетНДС.УменьшитьСуммуИтога(СтрокаИтогПоОрганизации, ЗаписьКниги, СтруктураПараметров);
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И СчетчикСтрокТекущегоСегмента = СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
ПерваяСтрокаСегмента = Счетчик - СчетчикСтрокТекущегоСегмента + 1;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураПараметров.ТаблицаРаздел9.Очистить();
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментов);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СчетчикСегментов, ТабличныйДокумент);
КонецЕсли;
ТабличныйДокумент.Очистить();
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел9);
КонецЕсли;
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЕсли;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураПараметров.Вставить("СчетчикСтрокТекущегоСегмента", СчетчикСтрокТекущегоСегмента);
СтруктураПараметров.Вставить("Счетчик", Счетчик);
СтруктураПараметров.Вставить("СчетчикСегментов", СчетчикСегментов);
КонецЕсли;
КонецПроцедуры
Процедура ПреобразоватьЗаписиДополнительногоЛистаКнигиПродаж(
СтруктураПараметров,
ИтогПоПериодамКорректировки,
ИтогЗаПериод,
ТабличныйДокумент,
СтруктураСекций,
ТаблицаДокумента)
ДополнительнаяИнформация = ПолучитьДополнительнуюИнформациюПоСчетуФактуре(СтруктураПараметров);
Если НЕ СтруктураПараметров.Свойство("ЗаполнениеДекларации") Тогда
СтруктураПараметров.Вставить("ЗаполнениеДекларации", Ложь);
ИначеЕсли СтруктураПараметров.ЗаполнениеДекларации И СтруктураПараметров.КонецПериода < '20150101' Тогда
СтруктураПараметров.ЗаполнениеДекларации = Ложь;
КонецЕсли;
ПараметрыСтроки = СтруктураСекций.СекцияСтрока.Параметры;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5 Тогда
ПараметрыСтрокиРНПТ = СтруктураСекций.СекцияСтрокаРНПТ.Параметры;
КонецЕсли;
Если НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
Счетчик = СтруктураПараметров.СчетчикСтрокДопЛиста;
СчетчикСтрокТекущегоСегмента = СтруктураПараметров.СчетчикСтрокТекущегоСегмента;
Иначе
Счетчик = 0;
СчетчикСтрокТекущегоСегмента = 0;
КонецЕсли;
Если СтруктураПараметров.Свойство("СчетчикСегментов") Тогда
СчетчикСегментов = СтруктураПараметров.СчетчикСегментов + 1;
Иначе
СчетчикСегментов = 1;
КонецЕсли;
Если СтруктураПараметров.Свойство("СчетчикСегментовНалоговогоПериода") Тогда
СчетчикСегментовНалоговогоПериода = СтруктураПараметров.СчетчикСегментовНалоговогоПериода;
Иначе
СчетчикСегментовНалоговогоПериода = 1;
КонецЕсли;
НалоговыйПериод = ПредставлениеПериода(
СтруктураПараметров.НалоговыйПериод, КонецДня(СтруктураПараметров.КонецНалоговогоПериода), "ФП = Истина");
НазваниеРаздела = СтрШаблон(НСтр("ru = 'Доп.листы за %1'"), НалоговыйПериод);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ГруппироватьПоКонтрагентам
И НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ИтогПоКонтрагенту = ИтогПоПериодамКорректировки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоКонтрагенту.Следующий() Цикл
СтруктураСекций.СекцияКонтрагент.Параметры.Контрагент = ИтогПоКонтрагенту.Покупатель;
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияКонтрагент);
ТабличныйДокумент.НачатьГруппуСтрок();
ЗаписьПоСФ = ИтогПоКонтрагенту.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ЗаписьПоСФ.Следующий() Цикл
РазделениеПоДоговоруДляАвансов = ЗаписьПоСФ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока РазделениеПоДоговоруДляАвансов.Следующий() Цикл
ЗаписьКниги = РазделениеПоДоговоруДляАвансов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ЗаписьКниги.Следующий() Цикл
ДетальнаяЗапись = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
ДетальнаяЗапись.Следующий();
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ЗаполнитьСтрокуКнигиПродаж(СтруктураПараметров, ПараметрыСтроки, ЗаписьКниги,
Счетчик, ДополнительнаяИнформация, ДетальнаяЗапись);
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ДетальнаяЗапись,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
ИтогЗаПериод.ВсегоПродаж = ИтогЗаПериод.ВсегоПродаж + ЗаписьКниги.ВсегоПродаж;
ИтогЗаПериод.СуммаБезНДС10 = ИтогЗаПериод.СуммаБезНДС10 + ЗаписьКниги.СуммаБезНДС10;
ИтогЗаПериод.НДС10 = ИтогЗаПериод.НДС10 + ЗаписьКниги.НДС10;
ИтогЗаПериод.СуммаБезНДС7 = ИтогЗаПериод.СуммаБезНДС7 + ЗаписьКниги.СуммаБезНДС7;
ИтогЗаПериод.НДС7 = ИтогЗаПериод.НДС7 + ЗаписьКниги.НДС7;
ИтогЗаПериод.СуммаБезНДС5 = ИтогЗаПериод.СуммаБезНДС5 + ЗаписьКниги.СуммаБезНДС5;
ИтогЗаПериод.НДС5 = ИтогЗаПериод.НДС5 + ЗаписьКниги.НДС5;
ИтогЗаПериод.СуммаБезНДС18 = ИтогЗаПериод.СуммаБезНДС18 + ЗаписьКниги.СуммаБезНДС18;
ИтогЗаПериод.НДС18 = ИтогЗаПериод.НДС18 + ЗаписьКниги.НДС18;
ИтогЗаПериод.НДС0 = ИтогЗаПериод.НДС0 + ЗаписьКниги.НДС0;
ИтогЗаПериод.СуммаБезНДС20 = ИтогЗаПериод.СуммаБезНДС20 + ЗаписьКниги.СуммаБезНДС20;
ИтогЗаПериод.НДС20 = ИтогЗаПериод.НДС20 + ЗаписьКниги.НДС20;
ИтогЗаПериод.СуммаСовсемБезНДС = ИтогЗаПериод.СуммаСовсемБезНДС + ЗаписьКниги.СуммаСовсемБезНДС;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ТабличныйДокумент.ЗакончитьГруппуСтрок();
СтруктураСекций.СекцияВсегоКонтрагент.Параметры.Заполнить(ИтогПоКонтрагенту);
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияВсегоКонтрагент);
Если СчетчикСтрокТекущегоСегмента >= СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментовНалоговогоПериода);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(
СтруктураПараметров,
ЗаголовокЛиста,
СчетчикСегментов,
ТабличныйДокумент,
ДополнительныеПараметры);
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода + 1;
КонецЕсли;
КонецЦикла;
Иначе
ЗаписьПоСФ = ИтогПоПериодамКорректировки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ЗаписьПоСФ.Следующий() Цикл
РазделениеПоДоговоруДляАвансов = ЗаписьПоСФ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока РазделениеПоДоговоруДляАвансов.Следующий() Цикл
ЗаписьКниги = РазделениеПоДоговоруДляАвансов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ЗаписьКниги.Следующий() Цикл
ДетальнаяЗапись = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
Если ЗаписьКниги.НалоговыйАгентПокупательТоваров Тогда
Пока ДетальнаяЗапись.Следующий() Цикл
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПараметрыСтроки = ТаблицаДокумента.Добавить();
КонецЕсли;
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ЗаполнитьСтрокуКнигиПродаж(
СтруктураПараметров, ПараметрыСтроки, ДетальнаяЗапись, Счетчик, ДополнительнаяИнформация);
УчетНДС.ВывестиГраницуСтроки(СтруктураПараметров, СтруктураСекций);
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735
ИЛИ НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураСекций.СекцияСтрока.Область(
1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
КонецЕсли;
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ДетальнаяЗапись,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И СчетчикСтрокТекущегоСегмента = СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
ПерваяСтрокаСегмента = Счетчик - СчетчикСтрокТекущегоСегмента + 1;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментовНалоговогоПериода);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(
СтруктураПараметров,
ЗаголовокЛиста,
СчетчикСегментов,
ТабличныйДокумент,
ДополнительныеПараметры);
КонецЕсли;
ТабличныйДокумент.Очистить();
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел91);
КонецЕсли;
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода + 1;
КонецЕсли;
ИтогЗаПериод.ВсегоПродаж = ИтогЗаПериод.ВсегоПродаж + ДетальнаяЗапись.ВсегоПродаж;
ИтогЗаПериод.СуммаБезНДС10 = ИтогЗаПериод.СуммаБезНДС10 + ДетальнаяЗапись.СуммаБезНДС10;
ИтогЗаПериод.НДС10 = ИтогЗаПериод.НДС10 + ДетальнаяЗапись.НДС10;
ИтогЗаПериод.СуммаБезНДС7 = ИтогЗаПериод.СуммаБезНДС7 + ДетальнаяЗапись.СуммаБезНДС7;
ИтогЗаПериод.НДС7 = ИтогЗаПериод.НДС7 + ДетальнаяЗапись.НДС7;
ИтогЗаПериод.СуммаБезНДС5 = ИтогЗаПериод.СуммаБезНДС5 + ДетальнаяЗапись.СуммаБезНДС5;
ИтогЗаПериод.НДС5 = ИтогЗаПериод.НДС5 + ДетальнаяЗапись.НДС5;
ИтогЗаПериод.СуммаБезНДС18 = ИтогЗаПериод.СуммаБезНДС18 + ДетальнаяЗапись.СуммаБезНДС18;
ИтогЗаПериод.НДС18 = ИтогЗаПериод.НДС18 + ДетальнаяЗапись.НДС18;
ИтогЗаПериод.НДС0 = ИтогЗаПериод.НДС0 + ДетальнаяЗапись.НДС0;
ИтогЗаПериод.СуммаБезНДС20 = ИтогЗаПериод.СуммаБезНДС20 + ДетальнаяЗапись.СуммаБезНДС20;
ИтогЗаПериод.НДС20 = ИтогЗаПериод.НДС20 + ДетальнаяЗапись.НДС20;
ИтогЗаПериод.СуммаСовсемБезНДС = ИтогЗаПериод.СуммаСовсемБезНДС + ДетальнаяЗапись.СуммаСовсемБезНДС;
КонецЦикла;
Иначе
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению735 Тогда
ПараметрыСтроки = ТаблицаДокумента.Добавить();
КонецЕсли;
ДетальнаяЗапись.Следующий();
Счетчик = Счетчик + 1;
СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента + 1;
ЗаполнитьСтрокуКнигиПродаж(
СтруктураПараметров, ПараметрыСтроки, ЗаписьКниги, Счетчик, ДополнительнаяИнформация, ДетальнаяЗапись);
УчетНДС.ВывестиГраницуСтроки(СтруктураПараметров, СтруктураСекций);
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735
ИЛИ НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураСекций.СекцияСтрока.Область(
1, , СтруктураСекций.СекцияСтрока.ВысотаТаблицы).Имя = "Строка_" + Формат(Счетчик, "ЧГ=");
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияСтрока);
КонецЕсли;
УчетНДС.ЗаполнитьПодстрочникРНПТ(
ДетальнаяЗапись,
ЗаписьКниги,
ПараметрыСтрокиРНПТ,
СтруктураПараметров,
СтруктураСекций,
СчетчикСегментов,
ТабличныйДокумент);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента
И СчетчикСтрокТекущегоСегмента = СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
ПерваяСтрокаСегмента = Счетчик - СчетчикСтрокТекущегоСегмента + 1;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментовНалоговогоПериода);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(
СтруктураПараметров,
ЗаголовокЛиста,
СчетчикСегментов,
ТабличныйДокумент,
ДополнительныеПараметры);
КонецЕсли;
ТабличныйДокумент.Очистить();
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ТабличныйДокумент.Вывести(СтруктураСекций.ШапкаРаздел91);
КонецЕсли;
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
СчетчикСтрокТекущегоСегмента = 0;
СчетчикСегментов = СчетчикСегментов + 1;
СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода + 1;
КонецЕсли;
ИтогЗаПериод.ВсегоПродаж = ИтогЗаПериод.ВсегоПродаж + ЗаписьКниги.ВсегоПродаж;
ИтогЗаПериод.СуммаБезНДС10 = ИтогЗаПериод.СуммаБезНДС10 + ЗаписьКниги.СуммаБезНДС10;
ИтогЗаПериод.НДС10 = ИтогЗаПериод.НДС10 + ЗаписьКниги.НДС10;
ИтогЗаПериод.СуммаБезНДС18 = ИтогЗаПериод.СуммаБезНДС18 + ЗаписьКниги.СуммаБезНДС18;
ИтогЗаПериод.НДС18 = ИтогЗаПериод.НДС18 + ЗаписьКниги.НДС18;
ИтогЗаПериод.НДС0 = ИтогЗаПериод.НДС0 + ЗаписьКниги.НДС0;
Если СтруктураПараметров.НалоговыйПериод >= '20250101' Тогда
ИтогЗаПериод.СуммаБезНДС20 = ИтогЗаПериод.СуммаБезНДС20 + ЗаписьКниги.СуммаБезНДС20;
ИтогЗаПериод.НДС20 = ИтогЗаПериод.НДС20 + ЗаписьКниги.НДС20;
ИтогЗаПериод.СуммаБезНДС7 = ИтогЗаПериод.СуммаБезНДС7 + ЗаписьКниги.СуммаБезНДС7;
ИтогЗаПериод.НДС7 = ИтогЗаПериод.НДС7 + ЗаписьКниги.НДС7;
ИтогЗаПериод.СуммаБезНДС5 = ИтогЗаПериод.СуммаБезНДС5 + ЗаписьКниги.СуммаБезНДС5;
ИтогЗаПериод.НДС5 = ИтогЗаПериод.НДС5 + ЗаписьКниги.НДС5;
ИначеЕсли СтруктураПараметров.НалоговыйПериод >= '20141001' Тогда
ИтогЗаПериод.СуммаБезНДС20 = ИтогЗаПериод.СуммаБезНДС20 + ЗаписьКниги.СуммаБезНДС20;
ИтогЗаПериод.НДС20 = ИтогЗаПериод.НДС20 + ЗаписьКниги.НДС20;
КонецЕсли;
ИтогЗаПериод.СуммаСовсемБезНДС = ИтогЗаПериод.СуммаСовсемБезНДС + ЗаписьКниги.СуммаСовсемБезНДС;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЕсли;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураПараметров.СчетчикСтрокДопЛиста = Счетчик;
СтруктураПараметров.СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента;
СтруктураПараметров.СчетчикСегментов = СчетчикСегментов;
СтруктураПараметров.СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьСтрокуКнигиПродаж(СтруктураПараметров, Секция, ЗаписьКниги, НомерСтроки, ДополнительнаяИнформация, ДетальнаяЗапись = Неопределено)
Если ДетальнаяЗапись <> Неопределено Тогда
ПараметрыЗаполнения = ДетальнаяЗапись;
Иначе
ПараметрыЗаполнения = ЗаписьКниги;
КонецЕсли;
ЗаполнитьЗначенияСвойств(Секция, ПараметрыЗаполнения);
СоставСтроки = Новый Структура;
Если ПараметрыЗаполнения.Событие = Перечисления.СобытияПоНДСПродажи.НалогИсчисляетПокупатель Тогда
ПараметрВсегоПродаж = "-";
ПараметрНДС20 = "-";
ПараметрНДС18 = "-";
Иначе
ПараметрВсегоПродаж = ЗаписьКниги.ВсегоПродаж;
ПараметрНДС20 = ЗаписьКниги.НДС20;
ПараметрНДС18 = ЗаписьКниги.НДС18;
КонецЕсли;
СоставСтроки.Вставить("ВсегоПродаж", ПараметрВсегоПродаж);
СоставСтроки.Вставить("СуммаБезНДС20", ЗаписьКниги.СуммаБезНДС20);
СоставСтроки.Вставить("НДС20", ПараметрНДС20);
СоставСтроки.Вставить("СуммаБезНДС18", ЗаписьКниги.СуммаБезНДС18);
СоставСтроки.Вставить("НДС18", ПараметрНДС18);
СоставСтроки.Вставить("СуммаБезНДС10", ЗаписьКниги.СуммаБезНДС10);
СоставСтроки.Вставить("НДС10", ЗаписьКниги.НДС10);
СоставСтроки.Вставить("СуммаБезНДС7", ЗаписьКниги.СуммаБезНДС7);
СоставСтроки.Вставить("НДС7", ЗаписьКниги.НДС7);
СоставСтроки.Вставить("СуммаБезНДС5", ЗаписьКниги.СуммаБезНДС5);
СоставСтроки.Вставить("НДС5", ЗаписьКниги.НДС5);
СоставСтроки.Вставить("НДС0", ЗаписьКниги.НДС0);
СоставСтроки.Вставить("СуммаСовсемБезНДС", ЗаписьКниги.СуммаСовсемБезНДС);
Если ЗначениеЗаполнено(ЗаписьКниги.СчетФактураДокумент) Тогда
СоставСтроки.Вставить("СчетФактура", ЗаписьКниги.СчетФактураДокумент);
ИначеЕсли ДетальнаяЗапись <> Неопределено Тогда
СоставСтроки.Вставить("СчетФактура", ДетальнаяЗапись.СчетФактура);
КонецЕсли;
ПредставлениеСФ = УчетНДС.ОпределитьДатуИНомерСФ(ПараметрыЗаполнения);
СоставСтроки.Вставить("ДатаНомер", ПредставлениеСФ.ДатаНомер);
СоставСтроки.Вставить("НомерДата", ПредставлениеСФ.НомерДата);
СоставСтроки.Вставить("НомерОтДата", ПредставлениеСФ.НомерОтДата);
СоставСтроки.Вставить("НомерДатаИсправления", ПредставлениеСФ.НомерДатаИсправленный);
СоставСтроки.Вставить("НомерОтДатаИсправленный", ПредставлениеСФ.НомерОтДатаИсправленный);
СоставСтроки.Вставить("НомерДатаКорректировки", ПредставлениеСФ.НомерДатаКорректировочный);
СоставСтроки.Вставить("НомерОтДатаКорректировочный", ПредставлениеСФ.НомерОтДатаКорректировочный);
СоставСтроки.Вставить("НомерДатаИсправленияКорректировки",
ПредставлениеСФ.НомерДатаИсправленныйКорректировочный);
СоставСтроки.Вставить("НомерОтДатаИсправленныйКорректировочный",
ПредставлениеСФ.НомерОтДатаИсправленныйКорректировочный);
СоставСтроки.Вставить("Ном", НомерСтроки);
СоставСтроки.Вставить("КодОперации", ПараметрыЗаполнения.КодВидаОперации);
Если ЗначениеЗаполнено(ПараметрыЗаполнения.Покупатель) Тогда
Если ПараметрыЗаполнения.СводныйКомиссионный Тогда
Секция.Покупатель = "";
Секция.Графа8 = "";
Иначе
СоставСтроки.Вставить("Покупатель", ПараметрыЗаполнения.Покупатель);
СоставСтроки.Вставить("ПокупательИНН", ПараметрыЗаполнения.ПокупательИНН);
СоставСтроки.Вставить("ПокупательКПП", ПараметрыЗаполнения.ПокупательКПП);
СоставСтроки.Вставить("Графа8", Строка(ПараметрыЗаполнения.ПокупательИНН)
+ ?(ЗначениеЗаполнено(ПараметрыЗаполнения.ПокупательКПП), "/" + Строка(ПараметрыЗаполнения.ПокупательКПП), ""));
КонецЕсли;
СоставСтроки.Вставить("Посредник", ПараметрыЗаполнения.Посредник);
СоставСтроки.Вставить("ПосредникИНН_КПП", "" + Строка(ПараметрыЗаполнения.ПосредникИНН)
+ ?(ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникКПП), "/" + Строка(ПараметрыЗаполнения.ПосредникКПП), ""));
ИначеЕсли ПараметрыЗаполнения.КодВидаОперации = "10" Тогда
Секция.Покупатель = "--";
Секция.Графа8 = "";
КонецЕсли;
СоставСтроки.Вставить("Валюта",
?(ЗначениеЗаполнено(ПараметрыЗаполнения.Валюта),
"" + ПараметрыЗаполнения.Валюта + ", " + ПараметрыЗаполнения.ВалютаКод, ""));
СоставСтроки.Вставить("ВсегоПродажВВалюте",
?(ЗначениеЗаполнено(ПараметрыЗаполнения.Валюта), ПараметрыЗаполнения.ВсегоПродажВВалюте, ""));
МассивДокПдтвОпл = Новый Массив();
ТекстОплаты = "";
СписокДатОплат = Новый СписокЗначений();
ТекстОплатыСНомером = "";
ТекстНомерОтДатаОплаты = "";
СписокНомеровИДатОплат = Новый СписокЗначений();
СчетаФактуры = Новый Массив();
Если ДетальнаяЗапись = Неопределено Тогда
Если ЗначениеЗаполнено(ЗаписьКниги.ДатаОплаты) Тогда
Если СписокДатОплат.НайтиПоЗначению(Формат(ЗаписьКниги.ДатаОплаты, "ДФ=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"));
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаЗаписи.НомерДокументаОплаты) Тогда
НомерДатаОплаты = СтрШаблон(НСтр("ru='%1;%2'"),
СтрокаЗаписи.НомерДокументаОплаты, Формат(СтрокаЗаписи.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
НомерОтДатаОплаты = СтрШаблон(НСтр("ru='%1 от %2'"),
СтрокаЗаписи.НомерДокументаОплаты, Формат(СтрокаЗаписи.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено Тогда
ТекстОплатыСНомером = ТекстОплатыСНомером
+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", "," + Символы.ПС) + НомерДатаОплаты;
ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты
+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";" + Символы.ПС) + НомерОтДатаОплаты;
СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураДокПдтвОпл = Новый Структура("НомДокПдтвОпл,ДатаДокПдтвОпл");
СтруктураДокПдтвОпл.НомДокПдтвОпл = СтрокаЗаписи.НомерДокументаОплаты;
Иначе
СтруктураДокПдтвОпл = Новый Структура("НомерДокПдтвОпл,ДатаДокПдтвОпл");
СтруктураДокПдтвОпл.НомерДокПдтвОпл = СтрокаЗаписи.НомерДокументаОплаты;
КонецЕсли;
СтруктураДокПдтвОпл.ДатаДокПдтвОпл = Формат(СтрокаЗаписи.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
МассивДокПдтвОпл.Добавить(СтруктураДокПдтвОпл);
КонецЕсли;
КонецЕсли;
СчетаФактуры.Добавить(СтрокаЗаписи.СчетФактура);
КонецЦикла;
КонецЕсли;
СоставСтроки.Вставить("НомерДатаОплаты", ТекстОплатыСНомером);
СоставСтроки.Вставить("НомерОтДатаОплаты", ТекстНомерОтДатаОплаты);
СоставСтроки.Вставить("ДатаОплаты", ТекстОплаты);
СчетаФактуры = ОбщегоНазначенияБПВызовСервера.УдалитьПовторяющиесяЭлементыМассива(СчетаФактуры);
СтрокаКодВидаТовара = "";
МассивСвРегНом = Новый Массив();
Для Каждого СчетФактура Из СчетаФактуры Цикл
Если ЗначениеЗаполнено(СчетФактура) Тогда
СтрокаДополнительнойИнформации = ДополнительнаяИнформация.Найти(СчетФактура, "Ссылка");
Иначе
СтрокаДополнительнойИнформации = Неопределено;
КонецЕсли;
Если СтрокаДополнительнойИнформации <> Неопределено Тогда
Если ЗначениеЗаполнено(СтрокаДополнительнойИнформации.ТНВЭД) Тогда
СтрокаКодВидаТовара = СтрокаДополнительнойИнформации.ТНВЭД;
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаДополнительнойИнформации.СвРегНом) Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивСвРегНом, СтрокаДополнительнойИнформации.СвРегНом);
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаДополнительнойИнформации.СвРегНомТД) Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивСвРегНом, СтрокаДополнительнойИнформации.СвРегНомТД);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ПараметрыЗаполнения.ВсегоПродаж < 0 Тогда
УчетНДСПереопределяемый.ПреобразоватьПоказателиРНПТКСторнирующейЗаписи(МассивСвРегНом);
КонецЕсли;
Если ЗначениеЗаполнено(МассивСвРегНом) Тогда
ПервыйРНПТ = МассивСвРегНом[0];
СоставСтроки.Вставить("РегНомер", ПервыйРНПТ.РегНомПросл);
СоставСтроки.Вставить("КолПрослеж", ПервыйРНПТ.КолТовПросл);
СоставСтроки.Вставить("СтоимПрослеж", ПервыйРНПТ.СтоимТовПросл);
СоставСтроки.Вставить("ЕдПрослеж", ПервыйРНПТ.ОКЕИ);
СтруктураПараметров.Вставить("МассивСвРегНом", МассивСвРегНом);
Иначе
СоставСтроки.Вставить("РегНомер", "");
СоставСтроки.Вставить("КолПрослеж", "");
СоставСтроки.Вставить("СтоимПрослеж", "");
СоставСтроки.Вставить("ЕдПрослеж", "");
СтруктураПараметров.Вставить("МассивСвРегНом", Неопределено);
КонецЕсли;
СоставСтроки.Вставить("КодВидаТовара", СтрокаКодВидаТовара);
МассивКодВидаТовара = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаКодВидаТовара, ";");
ЗаполнитьЗначенияСвойств(Секция, СоставСтроки);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ДополнительныеСведения = Новый Структура("Контрагент,ПредставлениеКонтрагента,Документ,ПредставлениеДокумента");
СоставСтроки.Вставить("НомерПор", НомерСтроки);
СоставСтроки.Вставить("НомСчФПрод", ПредставлениеСФ.Номер);
СоставСтроки.Вставить("ДатаСчФПрод", ПредставлениеСФ.Дата);
СоставСтроки.Вставить("НомИспрСчФ", ПредставлениеСФ.НомерИсправленный);
СоставСтроки.Вставить("ДатаИспрСчФ", ПредставлениеСФ.ДатаИсправленный);
СоставСтроки.Вставить("НомКСчФПрод", ПредставлениеСФ.НомерКорректировочный);
СоставСтроки.Вставить("ДатаКСчФПрод", ПредставлениеСФ.ДатаКорректировочный);
СоставСтроки.Вставить("НомИспрКСчФ", ПредставлениеСФ.НомерИсправленныйКорректировочный);
СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
СоставСтроки.Вставить("ОКВ", Строка(ПараметрыЗаполнения.ВалютаКод));
МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрыЗаполнения.КодВидаОперации, ";");
СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
СоставСтроки.Вставить("ДокПдтвОпл", МассивДокПдтвОпл);
МассивСвПок = Новый Массив();
Если СоставСтроки.Свойство("ПокупательИНН")
И (ЗначениеЗаполнено(СоставСтроки.ПокупательИНН)
ИЛИ ЗначениеЗаполнено(СоставСтроки.ПокупательКПП)) Тогда
СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПараметрыЗаполнения.ПокупательИНН, ПараметрыЗаполнения.ПокупательКПП);
СтруктураРеквизитовКонтрагента.Вставить("Контрагент", ПараметрыЗаполнения.Контрагент);
СтруктураРеквизитовКонтрагента.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Покупатель);
МассивСвПок.Добавить(СтруктураРеквизитовКонтрагента);
КонецЕсли;
ДополнительныеСведения.Контрагент = ПараметрыЗаполнения.Контрагент;
ДополнительныеСведения.ПредставлениеКонтрагента = ПараметрыЗаполнения.Покупатель;
СоставСтроки.Вставить("СвПокуп", МассивСвПок);
Если СоставСтроки.Свойство("Посредник")
И (ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникИНН)
ИЛИ ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникКПП)) Тогда
СтруктураРеквизитовПосредника = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПараметрыЗаполнения.ПосредникИНН, ПараметрыЗаполнения.ПосредникКПП);
СтруктураРеквизитовПосредника.Вставить("Контрагент", ПараметрыЗаполнения.ПосредникСсылка);
СтруктураРеквизитовПосредника.Вставить("КонтрагентНаименование", СоставСтроки.Посредник);
СоставСтроки.Вставить("СвПос", СтруктураРеквизитовПосредника);
КонецЕсли;
СоставСтроки.Вставить("СтоимПродСФВ", ПараметрыЗаполнения.ВсегоПродажВВалюте);
СоставСтроки.Вставить("СтоимПродСФ", ЗаписьКниги.ВсегоПродаж);
СоставСтроки.Вставить("СтоимПродСФ20", ЗаписьКниги.СуммаБезНДС20);
СоставСтроки.Вставить("СтоимПродСФ18", ЗаписьКниги.СуммаБезНДС18);
СоставСтроки.Вставить("СтоимПродСФ10", ЗаписьКниги.СуммаБезНДС10);
СоставСтроки.Вставить("СтоимПродСФ0", ЗаписьКниги.НДС0);
СоставСтроки.Вставить("СтоимПродСФ7", ЗаписьКниги.СуммаБезНДС7);
СоставСтроки.Вставить("СтоимПродСФ5", ЗаписьКниги.СуммаБезНДС5);
СоставСтроки.Вставить("СумНДССФ20", ЗаписьКниги.НДС20);
СоставСтроки.Вставить("СумНДССФ18", ЗаписьКниги.НДС18);
СоставСтроки.Вставить("СумНДССФ10", ЗаписьКниги.НДС10);
СоставСтроки.Вставить("СумНДССФ7", ЗаписьКниги.НДС7);
СоставСтроки.Вставить("СумНДССФ5", ЗаписьКниги.НДС5);
СоставСтроки.Вставить("СтоимПродОсв", ЗаписьКниги.СуммаСовсемБезНДС);
Если ЗначениеЗаполнено(ПредставлениеСФ.НомерКорректировочный) Тогда
ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
НСтр("ru='Корректировочный счет-фактура № %1 от %2 на сумму %3 %4'"),
ПредставлениеСФ.НомерКорректировочный,
ПредставлениеСФ.ДатаКорректировочный,
Формат(ЗаписьКниги.ВсегоПродаж, "ЧДЦ=2; ЧН="),
ПараметрыЗаполнения.ВалютаНаименование);
Иначе
ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
НСтр("ru='%1 на сумму %2 %3'"),
ПредставлениеСФ.Представление,
Формат(ЗаписьКниги.ВсегоПродаж, "ЧДЦ=2; ЧН="),
ПараметрыЗаполнения.ВалютаНаименование);
КонецЕсли;
ДополнительныеСведения.Документ = СоставСтроки.СчетФактура;
СоставСтроки.Вставить("ДополнительныеСведения", ДополнительныеСведения);
Если СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
СоставСтроки.Вставить("КодВидТовар", МассивКодВидаТовара);
КонецЕсли;
Если СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1" Тогда
СоставСтроки.Вставить("СвРегНом", МассивСвРегНом);
КонецЕсли;
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел91.Добавить();
Иначе
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел9.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
СоставСтроки.Вставить("НомПП", НомерСтроки);
СоставСтроки.Вставить("НомерСчФ", ПредставлениеСФ.Номер);
СоставСтроки.Вставить("ДатаСчФ", ПредставлениеСФ.Дата);
СоставСтроки.Вставить("НомИспрСчФ", ПредставлениеСФ.НомерИсправленный);
СоставСтроки.Вставить("ДатаИспрСчФ", ПредставлениеСФ.ДатаИсправленный);
СоставСтроки.Вставить("НомерКСчФ", ПредставлениеСФ.НомерКорректировочный);
СоставСтроки.Вставить("ДатаКСчФ", ПредставлениеСФ.ДатаКорректировочный);
СоставСтроки.Вставить("НомИспрКСчФ", ПредставлениеСФ.НомерИсправленныйКорректировочный);
СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5
И Не ЗначениеЗаполнено(ПараметрыЗаполнения.ВалютаКод) Тогда
ВалютаКод = "643";
Иначе
ВалютаКод = Строка(ПараметрыЗаполнения.ВалютаКод);
КонецЕсли;
СоставСтроки.Вставить("КодОКВ", ВалютаКод);
СоставСтроки.Вставить("ВидТов", МассивКодВидаТовара);
СтруктураРеквизитовКонтрагента = Новый Структура;
Если СоставСтроки.Свойство("ПокупательИНН")
И НЕ ПустаяСтрока(СоставСтроки.ПокупательИНН) Тогда
СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
ПараметрыЗаполнения.ПокупательИНН, ПараметрыЗаполнения.ПокупательКПП);
Если СтруктураРеквизитовКонтрагента.Свойство("ИННФЛ") Тогда
СоставСтроки.Вставить("ИННФЛ", СтруктураРеквизитовКонтрагента.ИННФЛ);
Иначе
СоставСтроки.Вставить("ИННЮЛ", СтруктураРеквизитовКонтрагента.ИННЮЛ);
СоставСтроки.Вставить("КПП", СтруктураРеквизитовКонтрагента.КПП);
КонецЕсли;
КонецЕсли;
СоставСтроки.Вставить("НаимПок", ПараметрыЗаполнения.Покупатель);
МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрыЗаполнения.КодВидаОперации, ";");
СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
Если СоставСтроки.Свойство("Посредник")
И НЕ ПустаяСтрока(ПараметрыЗаполнения.ПосредникИНН) Тогда
СоставСтроки.Вставить("СвПосредн",
УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
ПараметрыЗаполнения.ПосредникИНН, ПараметрыЗаполнения.ПосредникКПП, СоставСтроки.Посредник));
КонецЕсли;
СоставСтроки.Вставить("СтТовУчНалВсего", ПараметрыЗаполнения.ВсегоПродажВВалюте);
СоставСтроки.Вставить("СтТовУчНалРубКоп", ЗаписьКниги.ВсегоПродаж);
СоставСтроки.Вставить("СтТовРубКоп20", ЗаписьКниги.СуммаБезНДС20);
СоставСтроки.Вставить("СтТовРубКоп18", ЗаписьКниги.СуммаБезНДС18);
СоставСтроки.Вставить("СтТовРубКоп10", ЗаписьКниги.СуммаБезНДС10);
СоставСтроки.Вставить("СтТовРубКоп7", ЗаписьКниги.СуммаБезНДС7);
СоставСтроки.Вставить("СтТовРубКоп5", ЗаписьКниги.СуммаБезНДС5);
СоставСтроки.Вставить("СтТовРубКоп0", ЗаписьКниги.НДС0);
СоставСтроки.Вставить("СумНДСРубКоп20", ЗаписьКниги.НДС20);
СоставСтроки.Вставить("СумНДСРубКоп18", ЗаписьКниги.НДС18);
СоставСтроки.Вставить("СумНДСРубКоп10", ЗаписьКниги.НДС10);
СоставСтроки.Вставить("СумНДСРубКоп7", ЗаписьКниги.НДС7);
СоставСтроки.Вставить("СумНДСРубКоп5", ЗаписьКниги.НДС5);
СоставСтроки.Вставить("СтПродОсвНДСРубКоп", ЗаписьКниги.СуммаСовсемБезНДС);
СоставСтроки.Вставить("СвДокПдтвОпл", МассивДокПдтвОпл);
Если ЗначениеЗаполнено(МассивСвРегНом) Тогда
СоставСтроки.Вставить("СвРегНом", МассивСвРегНом);
КонецЕсли;
СтрокаРаздела = СтруктураПараметров.Записи.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьСтрокуКнигиПродажСводныйКомиссионный(ЗаписиКниги, СтруктураПараметров, Секция, НомерСтроки)
ЗаписьКнигиДетальная = ЗаписиКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
КоличествоЗаписей = ЗаписьКнигиДетальная.Количество();
ТекущаяЗапись = 0;
ВсегоПродаж = 0;
ВсегоПродажВВалюте = 0;
СуммаБезНДС18 = 0;
НДС18 = 0;
СуммаБезНДС10 = 0;
НДС10 = 0;
НДС0 = 0;
СуммаСовсемБезНДС = 0;
Покупатель = "";
Графа8 = "";
ВалютаКод = "";
КодВидаОперации = "";
ТекстОплатыСНомером = "";
ТекстНомерОтДатаОплаты = "";
МассивДокПдтвОпл = Новый Массив();
МассивСвПок = Новый Массив();
ДополнительныеСведения = Новый Структура("Контрагент,ПредставлениеКонтрагента,Документ,ПредставлениеДокумента");
Пока ЗаписьКнигиДетальная.Следующий() Цикл
ЗаполнитьЗначенияСвойств(Секция, ЗаписьКнигиДетальная);
ТекущаяЗапись = ТекущаяЗапись + 1;
Если ЗначениеЗаполнено(ЗаписьКнигиДетальная.НомерДокументаОплаты) Тогда
НомерДатаОплаты = СтрШаблон(НСтр("ru='%1;%2'"),
ЗаписьКнигиДетальная.НомерДокументаОплаты, Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
НомерОтДатаОплаты = СтрШаблон(НСтр("ru='%1 от %2'"),
ЗаписьКнигиДетальная.НомерДокументаОплаты, Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
ТекстОплатыСНомером = ТекстОплатыСНомером
+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", "," + Символы.ПС) + НомерДатаОплаты;
ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты
+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";" + Символы.ПС) + НомерОтДатаОплаты;
СтруктураДокПдтвОпл = Новый Структура("НомДокПдтвОпл,ДатаДокПдтвОпл");
СтруктураДокПдтвОпл.НомДокПдтвОпл = ЗаписьКнигиДетальная.НомерДокументаОплаты;
СтруктураДокПдтвОпл.ДатаДокПдтвОпл = Формат(ЗаписьКнигиДетальная.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
МассивДокПдтвОпл.Добавить(СтруктураДокПдтвОпл);
Иначе
ВсегоПродаж = ВсегоПродаж + ЗаписьКнигиДетальная.ВсегоПродаж;
ВсегоПродажВВалюте = ВсегоПродажВВалюте
+ ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.Валюта), ЗаписьКнигиДетальная.ВсегоПродажВВалюте, 0);
СуммаБезНДС18 = СуммаБезНДС18 + ЗаписьКнигиДетальная.СуммаБезНДС18;
НДС18 = НДС18 + ЗаписьКнигиДетальная.НДС18;
СуммаБезНДС10 = СуммаБезНДС10 + ЗаписьКнигиДетальная.СуммаБезНДС10;
НДС10 = НДС10 + ЗаписьКнигиДетальная.НДС10;
НДС0 = НДС0 + ЗаписьКнигиДетальная.НДС0;
СуммаСовсемБезНДС = СуммаСовсемБезНДС + ЗаписьКнигиДетальная.СуммаСовсемБезНДС;
Покупатель = Покупатель + ?(Покупатель = "", "", ";" + Символы.ПС) + ЗаписьКнигиДетальная.Покупатель;
Графа8 = Графа8 + ?(Графа8 = "", "", ";" + Символы.ПС)
+ ЗаписьКнигиДетальная.ПокупательИНН
+ ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПокупательКПП), "/" + ЗаписьКнигиДетальная.ПокупательКПП, "");
Если ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПокупательИНН)
ИЛИ ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПокупательКПП) Тогда
СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ЗаписьКнигиДетальная.ПокупательИНН, ЗаписьКнигиДетальная.ПокупательКПП);
СтруктураРеквизитовКонтрагента.Вставить("Контрагент", ЗаписьКнигиДетальная.Контрагент);
СтруктураРеквизитовКонтрагента.Вставить("КонтрагентНаименование", ЗаписьКнигиДетальная.Покупатель);
МассивСвПок.Добавить(СтруктураРеквизитовКонтрагента);
КонецЕсли;
КонецЕсли;
Если ТекущаяЗапись = КоличествоЗаписей Тогда
СоставСтроки = Новый Структура;
ПредставлениеСФ = УчетНДС.ОпределитьДатуИНомерСФ(ЗаписьКнигиДетальная);
СоставСтроки.Вставить("ДатаНомер", ПредставлениеСФ.ДатаНомер);
СоставСтроки.Вставить("НомерДата", ПредставлениеСФ.НомерДата);
СоставСтроки.Вставить("НомерОтДата", ПредставлениеСФ.НомерОтДата);
СоставСтроки.Вставить("НомерДатаИсправления", ПредставлениеСФ.НомерДатаИсправленный);
СоставСтроки.Вставить("НомерОтДатаИсправленный", ПредставлениеСФ.НомерОтДатаИсправленный);
СоставСтроки.Вставить("НомерДатаКорректировки", ПредставлениеСФ.НомерДатаКорректировочный);
СоставСтроки.Вставить("НомерОтДатаКорректировочный", ПредставлениеСФ.НомерОтДатаКорректировочный);
СоставСтроки.Вставить("НомерДатаИсправленияКорректировки",
ПредставлениеСФ.НомерДатаИсправленныйКорректировочный);
СоставСтроки.Вставить("НомерОтДатаИсправленныйКорректировочный",
ПредставлениеСФ.НомерОтДатаИсправленныйКорректировочный);
СоставСтроки.Вставить("Ном", НомерСтроки);
СоставСтроки.Вставить("КодОперации", ЗаписьКнигиДетальная.КодВидаОперации);
СоставСтроки.Вставить("Покупатель", Покупатель);
СоставСтроки.Вставить("ПокупательИНН", ЗаписьКнигиДетальная.ПокупательИНН);
СоставСтроки.Вставить("ПокупательКПП", ЗаписьКнигиДетальная.ПокупательКПП);
СоставСтроки.Вставить("Графа8", Графа8);
ДополнительныеСведения.Документ = ЗаписьКнигиДетальная.СчетФактура;
СоставСтроки.Вставить("Посредник", ЗаписьКнигиДетальная.Посредник);
СоставСтроки.Вставить("ПосредникИНН_КПП","" + ЗаписьКнигиДетальная.ПосредникИНН
+ ?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПосредникКПП), "/" + ЗаписьКнигиДетальная.ПосредникКПП, ""));
Если ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПосредникИНН)
ИЛИ ЗначениеЗаполнено(ЗаписьКнигиДетальная.ПосредникКПП) Тогда
СтруктуруРеквизитовПосредника = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ЗаписьКнигиДетальная.ПосредникИНН, ЗаписьКнигиДетальная.ПосредникКПП);
СтруктуруРеквизитовПосредника.Вставить("Контрагент", ЗаписьКнигиДетальная.ПосредникСсылка);
СтруктуруРеквизитовПосредника.Вставить("КонтрагентНаименование", ЗаписьКнигиДетальная.Посредник);
СоставСтроки.Вставить("СвПос", СтруктуруРеквизитовПосредника);
КонецЕсли;
СоставСтроки.Вставить("Валюта",
?(ЗначениеЗаполнено(ЗаписьКнигиДетальная.Валюта),
"" + ЗаписьКнигиДетальная.Валюта + ", " + ЗаписьКнигиДетальная.ВалютаКод, ""));
СоставСтроки.Вставить("ВсегоПродажВВалюте", ВсегоПродажВВалюте);
КонецЕсли;
ВалютаКод = ЗаписьКнигиДетальная.ВалютаКод;
КодВидаОперации = ЗаписьКнигиДетальная.КодВидаОперации;
ВалютаНаименование = ЗаписьКнигиДетальная.ВалютаНаименование;
КонецЦикла;
СоставСтроки.Вставить("ВсегоПродаж", ВсегоПродаж);
СоставСтроки.Вставить("ВсегоПродажВВалюте", ВсегоПродажВВалюте);
СоставСтроки.Вставить("СуммаБезНДС18", СуммаБезНДС18);
СоставСтроки.Вставить("НДС18", НДС18);
СоставСтроки.Вставить("СуммаБезНДС10", СуммаБезНДС10);
СоставСтроки.Вставить("НДС10", НДС10);
СоставСтроки.Вставить("НДС0", НДС0);
СоставСтроки.Вставить("СуммаСовсемБезНДС", СуммаСовсемБезНДС);
СоставСтроки.Вставить("Контрагент", Покупатель);
СоставСтроки.Вставить("НомерДатаОплаты", ТекстОплатыСНомером);
СоставСтроки.Вставить("НомерОтДатаОплаты", ТекстНомерОтДатаОплаты);
ЗаполнитьЗначенияСвойств(Секция, СоставСтроки);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ДополнительныеСведения.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
ДополнительныеСведения.ПредставлениеКонтрагента = НСтр("ru='Сводные счета-фактуры'");
ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
НСтр("ru='%1 на сумму %2 %3'"),
ПредставлениеСФ.Представление,
Формат(ВсегоПродаж, "ЧДЦ=2; ЧН="),
ВалютаНаименование);
СоставСтроки.Вставить("ДополнительныеСведения", ДополнительныеСведения);
СоставСтроки.Вставить("НомерПор", НомерСтроки);
СоставСтроки.Вставить("НомСчФПрод", ПредставлениеСФ.Номер);
СоставСтроки.Вставить("ДатаСчФПрод", ПредставлениеСФ.Дата);
СоставСтроки.Вставить("НомИспрСчФ", ПредставлениеСФ.НомерИсправленный);
СоставСтроки.Вставить("ДатаИспрСчФ", ПредставлениеСФ.ДатаИсправленный);
СоставСтроки.Вставить("НомКСчФПрод", ПредставлениеСФ.НомерКорректировочный);
СоставСтроки.Вставить("ДатаКСчФПрод", ПредставлениеСФ.ДатаКорректировочный);
СоставСтроки.Вставить("НомИспрКСчФ", ПредставлениеСФ.НомерИсправленныйКорректировочный);
СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
СоставСтроки.Вставить("ОКВ", Строка(ВалютаКод));
МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(КодВидаОперации, ";");
СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
СоставСтроки.Вставить("ДокПдтвОпл", МассивДокПдтвОпл);
СоставСтроки.Вставить("СвПокуп", МассивСвПок);
СоставСтроки.Вставить("СтоимПродСФВ", ВсегоПродажВВалюте);
СоставСтроки.Вставить("СтоимПродСФ", ВсегоПродаж);
СоставСтроки.Вставить("СтоимПродСФ20", 0);
СоставСтроки.Вставить("СтоимПродСФ18", СуммаБезНДС18);
СоставСтроки.Вставить("СтоимПродСФ10", СуммаБезНДС10);
СоставСтроки.Вставить("СтоимПродСФ0", НДС0);
СоставСтроки.Вставить("СумНДССФ20", 0);
СоставСтроки.Вставить("СумНДССФ18", НДС18);
СоставСтроки.Вставить("СумНДССФ10", НДС10);
СоставСтроки.Вставить("СтоимПродОсв", СуммаСовсемБезНДС);
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел91.Добавить();
Иначе
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел9.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
КонецЕсли;
КонецПроцедуры
Процедура УстановитьПараметрыЗапросаКнигиПродаж(Запрос, СтруктураПараметров)
Запрос.УстановитьПараметр("НачалоПериода", СтруктураПараметров.НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецДня(СтруктураПараметров.КонецПериода));
Запрос.УстановитьПараметр("Организация", СтруктураПараметров.СписокОрганизаций);
Запрос.УстановитьПараметр("ОтбиратьПоКонтрагенту",
НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме И СтруктураПараметров.ОтбиратьПоКонтрагенту);
Запрос.УстановитьПараметр("КонтрагентДляОтбора", СтруктураПараметров.КонтрагентДляОтбора);
Запрос.УстановитьПараметр("ВыводитьПродавцовПоАвансам", СтруктураПараметров.ВыводитьПродавцовПоАвансам);
Запрос.УстановитьПараметр("ВалютаРегУчета", ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета());
Запрос.УстановитьПараметр("НаименованиеВалютыРубль", НСтр("ru='руб.'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("НачалоПримененияПостановления1137",
УчетНДСПереопределяемый.ПолучитьДатуНачалаДействияПостановления1137());
ЗаполнениеДокументовОтчетности = СтруктураПараметров.ЗаполнениеДокумента ИЛИ СтруктураПараметров.ЗаполнениеДекларации;
Если ЗаполнениеДокументовОтчетности И СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Запрос.УстановитьПараметр("НачалоНалоговогоПериода", СтруктураПараметров.НачалоНалоговогоПериода);
Запрос.УстановитьПараметр("КонецНалоговогоПериода", КонецДня(СтруктураПараметров.КонецНалоговогоПериода));
КонецЕсли;
Запрос.УстановитьПараметр("ПравилаПостановления981",
СтруктураПараметров.ВерсияПостановленияНДС1137 >= 4);
Запрос.УстановитьПараметр("МассивСтавокНДС",
Перечисления.СтавкиНДС.СтавкиПоОперациямОтражаемымВКнигеПродаж(СтруктураПараметров.ВерсияПостановленияНДС1137));
СтавкиНДС20 = Новый Массив();
СтавкиНДС20.Добавить(Перечисления.СтавкиНДС.НДС20);
СтавкиНДС20.Добавить(Перечисления.СтавкиНДС.НДС20_120);
СтавкиНДС18 = Новый Массив();
СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18);
СтавкиНДС18.Добавить(Перечисления.СтавкиНДС.НДС18_118);
СтавкиНДС10 = Новый Массив();
СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10);
СтавкиНДС10.Добавить(Перечисления.СтавкиНДС.НДС10_110);
СтавкиНДС7 = Новый Массив();
СтавкиНДС7.Добавить(Перечисления.СтавкиНДС.НДС7);
СтавкиНДС7.Добавить(Перечисления.СтавкиНДС.НДС7_107);
СтавкиНДС5 = Новый Массив();
СтавкиНДС5.Добавить(Перечисления.СтавкиНДС.НДС5);
СтавкиНДС5.Добавить(Перечисления.СтавкиНДС.НДС5_105);
СтавкаНДС0 = Перечисления.СтавкиНДС.НДС0;
СтавкаБезНДС = Перечисления.СтавкиНДС.БезНДС;
Запрос.УстановитьПараметр("СтавкиНДС20", СтавкиНДС20);
Запрос.УстановитьПараметр("СтавкиНДС18", СтавкиНДС18);
Запрос.УстановитьПараметр("СтавкиНДС10", СтавкиНДС10);
Запрос.УстановитьПараметр("СтавкиНДС7", СтавкиНДС7);
Запрос.УстановитьПараметр("СтавкиНДС5", СтавкиНДС5);
Запрос.УстановитьПараметр("СтавкаНДС0", СтавкаНДС0);
Запрос.УстановитьПараметр("СтавкаБезНДС", СтавкаБезНДС);
ВидыЦенностей_СобственныеСФ = Новый Массив;
ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.ВнутреннееПотребление);
ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.СМРСобственнымиСилами);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ВидыЦенностей_СобственныеСФ,
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент(Ложь));
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ВидыЦенностей_СобственныеСФ,
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгентРеализацияТоваров());
Запрос.УстановитьПараметр("ВидыЦенностей_СобственныеСФ", ВидыЦенностей_СобственныеСФ);
ВидыЦенностей_Аванс = Новый Массив;
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученныеНалоговыйАгент);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученныхНалоговыйАгент);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученных);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыВыданные);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыВыданныеНалоговыйАгент);
Запрос.УстановитьПараметр("ВидыЦенностей_Аванс", ВидыЦенностей_Аванс);
ВидыЦенностей_СуммоваяРазница = Новый Массив;
ВидыЦенностей_СуммоваяРазница.Добавить(Перечисления.ВидыЦенностей.СуммыСвязанныеСРасчетамиПоОплате);
Запрос.УстановитьПараметр("ВидыЦенностей_СуммоваяРазница", ВидыЦенностей_СуммоваяРазница);
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгент",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент());
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгентПокупатель",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгентРеализацияТоваров());
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгентВсеВиды",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент(, Истина));
МассивДокументовИсправлений = Новый Массив;
МассивДокументовИсправлений.Добавить(Неопределено);
ТипыДокументовИсправлений = Метаданные.РегистрыНакопления.НДСЗаписиКнигиПродаж.Измерения.ИсправленныйСчетФактура.Тип;
Для Каждого МетаданныеДокумента Из Метаданные.Документы Цикл
Если ТипыДокументовИсправлений.СодержитТип(Тип("ДокументСсылка." + МетаданныеДокумента.Имя)) Тогда
МассивДокументовИсправлений.Добавить(Документы[МетаданныеДокумента.Имя].ПустаяСсылка());
КонецЕсли;
КонецЦикла;
Запрос.УстановитьПараметр("ПустыеДокументыИсправления", МассивДокументовИсправлений);
Запрос.УстановитьПараметр("ТекстРозничнаяПродажа",
НСтр("ru = 'Розничная продажа'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("ТипыДокументовРучныхОперацийНДС", УчетНДСПереопределяемый.ТипыДокументовРучныхОперацийНДС());
КонецПроцедуры
Функция ДополнительноеУсловиеЗапроса(СтруктураПараметров, ЗаписьДополнительногоЛиста = Ложь, ИмяТаблицы = "")
Если СтруктураПараметров.ПрименяетсяОсвобождениеОтУплатыНДС Тогда
СтрокаУсловия =
"([ИмяТаблицы]СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС) И НЕ [ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды)
|ИЛИ [ИмяТаблицы]СтавкаНДС <> ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС) И [ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды))";
ИначеЕсли (НЕ СтруктураПараметров.ПлательщикНДС И НЕ СтруктураПараметров.ПлательщикНДСПрименяющийУСН) Тогда
СтрокаУсловия = "[ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды) И [ИмяТаблицы]СтавкаНДС <> ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС)";
Иначе
СтрокаУсловия = "[ИмяТаблицы]СтавкаНДС В (&МассивСтавокНДС)";
КонецЕсли;
Если ЗначениеЗаполнено(ИмяТаблицы) Тогда
СтрокаУсловия = СтрЗаменить(СтрокаУсловия, "[ИмяТаблицы]", ИмяТаблицы + ".");
Иначе
СтрокаУсловия = СтрЗаменить(СтрокаУсловия, "[ИмяТаблицы]", "");
КонецЕсли;
Если ЗаписьДополнительногоЛиста Тогда
ШаблонУсловия = "(%1 ИЛИ НДСЗаписиКнигиПродаж.КорректируемыйПериод <= ДАТАВРЕМЯ(2014, 10, 1))";
СтрокаУсловия = СтрШаблон(ШаблонУсловия, СтрокаУсловия);
КонецЕсли;
Возврат СтрокаУсловия;
КонецФункции
#Область ПолучениеЗаписей
Функция ЗаписиКнигиПродаж(СтруктураПараметров)
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Если СтруктураПараметров.ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж Тогда
Запрос.Текст = Отчеты.КнигаПокупок.ТекстЗапросаВычетыНеплательшикаНДС(Запрос, СтруктураПараметров);
Запрос.Текст = Запрос.Текст + "УНИЧТОЖИТЬ СписокСчетовФактур";
Запрос.Выполнить();
КонецЕсли;
УстановитьПараметрыЗапросаКнигиПродаж(Запрос, СтруктураПараметров);
ТекстЗапроса = ТекстЗапросаЗаписиРегистраНДСПродажи(СтруктураПараметров);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 4 Тогда
ТекстЗапроса = ТекстЗапроса
+ УчетНДСОтчетыПереопределяемый.ТекстЗапросаРеквизитыСчетовФактурПостановление981КнигаПродаж();
Иначе
ТекстЗапроса = ТекстЗапроса
+ УчетНДСОтчетыПереопределяемый.ТекстЗапросаРеквизитыСчетовФактурПостановление735КнигаПродаж();
КонецЕсли;
Запрос.Текст = ТекстЗапроса + ТекстЗапросаПодготовленныеЗаписиКнигиПродаж(СтруктураПараметров);
Запрос.Выполнить();
УчетНДСПереопределяемый.РегистрационныеСведенияНаДаты(Запрос.МенеджерВременныхТаблиц);
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Запрос.Текст = ТекстЗапросаДополнительныйЛистКнигиПродаж(СтруктураПараметров);
Иначе
Запрос.Текст = ТекстЗапросаКнигаПродаж(СтруктураПараметров);
КонецЕсли;
Выборка = Запрос.Выполнить();
СтруктураПараметров.Вставить("МенеджерВременныхТаблиц", МенеджерВременныхТаблиц);
Возврат Выборка;
КонецФункции
Функция ТекстЗапросаЗаписиРегистраНДСПродажи(СтруктураПараметров)
ТекстыЗапросов = Новый Массив;
ТекстОрганизацияЯвляетсяПокупателем = УчетНДСПереопределяемый.ТекстЗапросаСчетаФактурыВыданныеГдеОрганизацияЯвляетсяПокупателем();
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаОрганизацияЯвляетсяПокупателем.СчетФактура,
| ТаблицаОрганизацияЯвляетсяПокупателем.Организация,
| ТаблицаОрганизацияЯвляетсяПокупателем.ГоловнаяОрганизация,
| ТаблицаОрганизацияЯвляетсяПокупателем.ЭтоКорректировкаПоступления
|
|ПОМЕСТИТЬ ВТ_ТаблицаОрганизацияЯвляетсяПокупателем
|ИЗ
| (" + ТекстОрганизацияЯвляетсяПокупателем + ") КАК ТаблицаОрганизацияЯвляетсяПокупателем
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура,
| ГоловнаяОрганизация
|";
ТекстыЗапросов.Добавить(ТекстЗапроса);
ТекстСчетаФактурыИсправленияКнигиПродаж = УчетНДСПереопределяемый.ТекстЗапросаСчетаФактурыИсправленияКнигиПродаж();
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаСчетаФактурыИсправления.СчетФактура,
| ТаблицаСчетаФактурыИсправления.Организация,
| ТаблицаСчетаФактурыИсправления.ГоловнаяОрганизация,
| ТаблицаСчетаФактурыИсправления.ЭтоКорректировкаПоступления,
| ТаблицаСчетаФактурыИсправления.ЭтоКорректировкаРеализации
|
|ПОМЕСТИТЬ ВТ_ТаблицаСчетаФактурыИсправления
|ИЗ
| (" + ТекстСчетаФактурыИсправленияКнигиПродаж + ") КАК ТаблицаСчетаФактурыИсправления
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура,
| ГоловнаяОрганизация
|";
ТекстыЗапросов.Добавить(ТекстЗапроса);
ТекстЗапроса =
"ВЫБРАТЬ
| НДСЗаписиКнигиПродаж.Период КАК Период,
| НАЧАЛОПЕРИОДА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| ТОГДА НДСЗаписиКнигиПродаж.КорректируемыйПериод
| ИНАЧЕ НДСЗаписиКнигиПродаж.Период
| КОНЕЦ, КВАРТАЛ) КАК НалоговыйПериод,
| КОНЕЦПЕРИОДА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| ТОГДА НДСЗаписиКнигиПродаж.КорректируемыйПериод
| ИНАЧЕ НДСЗаписиКнигиПродаж.Период
| КОНЕЦ, КВАРТАЛ) КАК КонецНалоговогоПериода,
| НДСЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста КАК СторнирующаяЗаписьДопЛиста,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_СобственныеСФ)
| ИЛИ НДСЗаписиКнигиПродаж.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.АвансыВыданные)
| И НЕ &ВыводитьПродавцовПоАвансам
| ИЛИ НДСЗаписиКнигиПродаж.ВидЦенности <> ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.АвансыВыданные)
| И НДСЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.ВосстановлениеНДС)
| ИЛИ ЕСТЬNULL(ВТ_ТаблицаОрганизацияЯвляетсяПокупателем.ЭтоКорректировкаПоступления, ЛОЖЬ)
| ТОГДА НДСЗаписиКнигиПродаж.Организация
| ИНАЧЕ НДСЗаписиКнигиПродаж.Покупатель
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_НалоговыйАгентПокупатель)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НалоговыйАгентПокупательТоваров,
| НДСЗаписиКнигиПродаж.Покупатель КАК КонтрагентПоСчетуФактуре,
| ВЫБОР
| КОГДА НЕ НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура
| ИНАЧЕ НДСЗаписиКнигиПродаж.СчетФактура
| КОНЕЦ КАК СчетФактура,
| НДСЗаписиКнигиПродаж.ДатаОплаты КАК ДатаОплаты,
| НДСЗаписиКнигиПродаж.ДокументОплаты КАК ДокументОплаты,
| НДСЗаписиКнигиПродаж.Событие КАК Событие,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПродаж.ДатаСобытия
| КОНЕЦ КАК ДатаСобытия,
| СУММА(НДСЗаписиКнигиПродаж.СуммаБезНДС + НДСЗаписиКнигиПродаж.НДС) КАК ВсегоПродаж,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС20)
| ТОГДА НДСЗаписиКнигиПродаж.СуммаБезНДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаБезНДС20,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС20)
| ТОГДА НДСЗаписиКнигиПродаж.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК НДС20,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС18)
| ТОГДА НДСЗаписиКнигиПродаж.СуммаБезНДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаБезНДС18,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС18)
| ТОГДА НДСЗаписиКнигиПродаж.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК НДС18,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС10)
| ТОГДА НДСЗаписиКнигиПродаж.СуммаБезНДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаБезНДС10,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС10)
| ТОГДА НДСЗаписиКнигиПродаж.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК НДС10,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС7)
| ТОГДА НДСЗаписиКнигиПродаж.СуммаБезНДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаБезНДС7,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС7)
| ТОГДА НДСЗаписиКнигиПродаж.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК НДС7,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС5)
| ТОГДА НДСЗаписиКнигиПродаж.СуммаБезНДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаБезНДС5,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС5)
| ТОГДА НДСЗаписиКнигиПродаж.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК НДС5,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС = &СтавкаНДС0
| ТОГДА НДСЗаписиКнигиПродаж.СуммаБезНДС + НДСЗаписиКнигиПродаж.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК НДС0,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС = &СтавкаБезНДС
| ТОГДА НДСЗаписиКнигиПродаж.СуммаБезНДС + НДСЗаписиКнигиПродаж.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаСовсемБезНДС,
| НДСЗаписиКнигиПродаж.Организация КАК Организация,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НаАванс,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_СуммоваяРазница)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НаСуммовуюРазницу,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_Аванс)
| И НЕ ТИПЗНАЧЕНИЯ(НДСЗаписиКнигиПродаж.СчетФактура) В (&ТипыДокументовРучныхОперацийНДС)
| ТОГДА НДСЗаписиКнигиПродаж.СтавкаНДС
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК СтавкаНДС_Аванс,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ НДСЗаписиКнигиПродаж.ДоговорКонтрагента
| КОНЕЦ КАК ДоговорАванса,
| ЕСТЬNULL(ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора, ДАТАВРЕМЯ(1, 1, 1)) КАК СчетФактураДата,
| НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СуммаБезНДС + НДСЗаписиКнигиПродаж.НДС < 0
| И (ЕСТЬNULL(ВТ_ТаблицаСчетаФактурыИсправления.ЭтоКорректировкаРеализации, ЛОЖЬ)
| ИЛИ ЕСТЬNULL(ВТ_ТаблицаСчетаФактурыИсправления.ЭтоКорректировкаПоступления, ЛОЖЬ)
| ИЛИ НЕ (ВТ_ТаблицаСчетаФактурыИсправления.СчетФактура ЕСТЬ NULL))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК Исправление,
| НДСЗаписиКнигиПродаж.НомерДокументаОплаты КАК НомерДокументаОплаты,
| НДСЗаписиКнигиПродаж.ДатаДокументаОплаты КАК ДатаДокументаОплаты,
| НДСЗаписиКнигиПродаж.КодВидаОперации КАК КодВидаОперации
|ПОМЕСТИТЬ ЗаписиКнигиПродаж
|ИЗ
| РегистрНакопления.НДСЗаписиКнигиПродаж КАК НДСЗаписиКнигиПродаж
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументовСчетФактура
| ПО НДСЗаписиКнигиПродаж.СчетФактура = ДанныеПервичныхДокументовСчетФактура.Документ
| И НДСЗаписиКнигиПродаж.Организация = ДанныеПервичныхДокументовСчетФактура.Организация
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТаблицаОрганизацияЯвляетсяПокупателем
| ПО НДСЗаписиКнигиПродаж.СчетФактура = ВТ_ТаблицаОрганизацияЯвляетсяПокупателем.СчетФактура
| И НДСЗаписиКнигиПродаж.Организация = ВТ_ТаблицаОрганизацияЯвляетсяПокупателем.Организация
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТаблицаСчетаФактурыИсправления
| ПО НДСЗаписиКнигиПродаж.Регистратор = ВТ_ТаблицаСчетаФактурыИсправления.СчетФактура
| И НДСЗаписиКнигиПродаж.Организация = ВТ_ТаблицаСчетаФактурыИсправления.Организация
|ГДЕ
| НДСЗаписиКнигиПродаж.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И НДСЗаписиКнигиПродаж.Организация В(&Организация)
| И НЕ НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| И НДСЗаписиКнигиПродаж.Активность
| И &ДополнительноеУсловие
| И &ОтборПоКонтрагенту
|
|СГРУППИРОВАТЬ ПО
| НДСЗаписиКнигиПродаж.Период,
| НАЧАЛОПЕРИОДА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| ТОГДА НДСЗаписиКнигиПродаж.КорректируемыйПериод
| ИНАЧЕ НДСЗаписиКнигиПродаж.Период
| КОНЕЦ, КВАРТАЛ),
| КОНЕЦПЕРИОДА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| ТОГДА НДСЗаписиКнигиПродаж.КорректируемыйПериод
| ИНАЧЕ НДСЗаписиКнигиПродаж.Период
| КОНЕЦ, КВАРТАЛ),
| НДСЗаписиКнигиПродаж.ДатаОплаты,
| НДСЗаписиКнигиПродаж.ДокументОплаты,
| НДСЗаписиКнигиПродаж.Событие,
| ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора,
| НДСЗаписиКнигиПродаж.Организация,
| НДСЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста,
| НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПродаж.ДатаСобытия
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_СуммоваяРазница)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_Аванс)
| И НЕ ТИПЗНАЧЕНИЯ(НДСЗаписиКнигиПродаж.СчетФактура) В (&ТипыДокументовРучныхОперацийНДС)
| ТОГДА НДСЗаписиКнигиПродаж.СтавкаНДС
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ,
| ВЫБОР
| КОГДА НЕ НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура
| ИНАЧЕ НДСЗаписиКнигиПродаж.СчетФактура
| КОНЕЦ,
| НДСЗаписиКнигиПродаж.Покупатель,
| НДСЗаписиКнигиПродаж.НомерДокументаОплаты,
| НДСЗаписиКнигиПродаж.ДатаДокументаОплаты,
| НДСЗаписиКнигиПродаж.КодВидаОперации,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_СобственныеСФ)
| ИЛИ НДСЗаписиКнигиПродаж.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.АвансыВыданные)
| И НЕ &ВыводитьПродавцовПоАвансам
| ИЛИ НДСЗаписиКнигиПродаж.ВидЦенности <> ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.АвансыВыданные)
| И НДСЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.ВосстановлениеНДС)
| ИЛИ ЕСТЬNULL(ВТ_ТаблицаОрганизацияЯвляетсяПокупателем.ЭтоКорректировкаПоступления, ЛОЖЬ)
| ТОГДА НДСЗаписиКнигиПродаж.Организация
| ИНАЧЕ НДСЗаписиКнигиПродаж.Покупатель
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_НалоговыйАгентПокупатель)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СуммаБезНДС + НДСЗаписиКнигиПродаж.НДС < 0
| И (ЕСТЬNULL(ВТ_ТаблицаСчетаФактурыИсправления.ЭтоКорректировкаРеализации, ЛОЖЬ)
| ИЛИ ЕСТЬNULL(ВТ_ТаблицаСчетаФактурыИсправления.ЭтоКорректировкаПоступления, ЛОЖЬ)
| ИЛИ НЕ (ВТ_ТаблицаСчетаФактурыИсправления.СчетФактура ЕСТЬ NULL))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ НДСЗаписиКнигиПродаж.ДоговорКонтрагента
| КОНЕЦ,
| НДСЗаписиКнигиПродаж.Организация
|
|ИМЕЮЩИЕ
| НЕ (МАКСИМУМ(НДСЗаписиКнигиПродаж.Исправление)
| И СУММА(НДСЗаписиКнигиПродаж.СуммаБезНДС + НДСЗаписиКнигиПродаж.НДС) = 0)
|
| {ТекстДляЗамены}
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗаписиКнигиПродаж.СчетФактура КАК СчетФактура,
| ЗаписиКнигиПродаж.НаАванс КАК НаАванс,
| ВЫБОР
| КОГДА ЕСТЬNULL(Контрагенты.СтранаРегистрации, ЗНАЧЕНИЕ(Справочник.СтраныМира.Россия)) <> ЗНАЧЕНИЕ(Справочник.СтраныМира.Россия)
| ТОГДА ЕСТЬNULL(Контрагенты.СтранаРегистрации.УчастникЕАЭС, ЛОЖЬ)
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК УчастникЕАЭС
|ПОМЕСТИТЬ СписокСчетовФактур
|ИЗ
| ЗаписиКнигиПродаж КАК ЗаписиКнигиПродаж
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО ЗаписиКнигиПродаж.Контрагент = Контрагенты.Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура";
ДополнительноеУсловиеЗапроса = ДополнительноеУсловиеЗапроса(
СтруктураПараметров,
СтруктураПараметров.ЗаписьДополнительногоЛиста,
"НДСЗаписиКнигиПродаж");
ТекстЗапроса = СтрЗаменить(
ТекстЗапроса,
"&ДополнительноеУсловие",
ДополнительноеУсловиеЗапроса);
Если НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме
И СтруктураПараметров.ОтбиратьПоКонтрагенту Тогда
ТекстЗапросаДляОтбора =
"(НДСЗаписиКнигиПродаж.Покупатель = &КонтрагентДляОтбора
| ИЛИ НДСЗаписиКнигиПродаж.Покупатель.ОбособленноеПодразделение
| И НДСЗаписиКнигиПродаж.Покупатель.ГоловнойКонтрагент = &КонтрагентДляОтбора)";
Если ОбщегоНазначения.ОбъектЯвляетсяГруппой(СтруктураПараметров.КонтрагентДляОтбора) Тогда
ТекстЗапросаДляОтбора = СтрЗаменить(ТекстЗапросаДляОтбора,
" = &КонтрагентДляОтбора", " В ИЕРАРХИИ(&КонтрагентДляОтбора)");
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОтборПоКонтрагенту", ТекстЗапросаДляОтбора);
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &ОтборПоКонтрагенту", "");
КонецЕсли;
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Если СтруктураПараметров.ЗаполнениеДокумента И НЕ СтруктураПараметров.ФорматПоПостановлению735
ИЛИ СтруктураПараметров.ЗаполнениеДекларации Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"И НЕ НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста",
"И НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| И НДСЗаписиКнигиПродаж.КорректируемыйПериод >= &НачалоНалоговогоПериода
| И НДСЗаписиКнигиПродаж.КорректируемыйПериод <= &КонецНалоговогоПериода");
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента И СтруктураПараметров.ФорматПоПостановлению735
ИЛИ СтруктураПараметров.ДополнительныеЛистыЗаТекущийПериод Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"Период МЕЖДУ &НачалоПериода И &КонецПериода",
"Период >= &НачалоПериода");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"И НЕ НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста",
"И НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| И НДСЗаписиКнигиПродаж.КорректируемыйПериод >= &НачалоПериода
| И НДСЗаписиКнигиПродаж.КорректируемыйПериод <= &КонецПериода");
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"И НЕ НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста",
"И НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| И НДСЗаписиКнигиПродаж.КорректируемыйПериод >= &НачалоПримененияПостановления1137");
КонецЕсли;
КонецЕсли;
Если СтруктураПараметров.ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"{ТекстДляЗамены}",
ТекстЗапросаОбъединениеСВычетамиНеплательщикаНДС());
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"{ТекстДляЗамены}",
"");
КонецЕсли;
ТекстыЗапросов.Добавить(ТекстЗапроса);
ТекстыЗапросов.Добавить("");
Возврат СтрСоединить(ТекстыЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
КонецФункции
Функция ТекстЗапросаПодготовленныеЗаписиКнигиПродаж(СтруктураПараметров)
ТекстЗапроса =
"ВЫБРАТЬ
| ЗаписиКнигиПродаж.Организация КАК Организация,
| ЗаписиКнигиПродаж.НалоговыйПериод КАК НалоговыйПериод,
| ЗаписиКнигиПродаж.КонецНалоговогоПериода КАК КонецНалоговогоПериода,
| ЗаписиКнигиПродаж.НаАванс КАК НаАванс,
| ЗаписиКнигиПродаж.НаСуммовуюРазницу КАК НаСуммовуюРазницу,
| ЗаписиКнигиПродаж.СчетФактура КАК СчетФактура,
| НАЧАЛОПЕРИОДА(ЕСТЬNULL(СчетаФактурыСОсобымПорядкомОтображения.ДатаИсправленногоСчетаФактуры, ЗаписиКнигиПродаж.СчетФактураДата), ДЕНЬ) КАК СчетФактураДата,
| ВЫБОР
| КОГДА ТаблицаСчетаФактурыДокументы.СчетФактураДокумент ЕСТЬ НЕ NULL
| ТОГДА ТаблицаСчетаФактурыДокументы.СчетФактураДокумент
| ИНАЧЕ ЗаписиКнигиПродаж.СчетФактура
| КОНЕЦ КАК СчетФактураДокумент,
| ВЫБОР
| КОГДА СчетаФактурыСОсобымПорядкомОтображения.ИсправленныйСчетФактура ЕСТЬ НЕ NULL
| ТОГДА СчетаФактурыСОсобымПорядкомОтображения.НомерИсправленногоСчетаФактуры
| КОГДА ТаблицаСчетаФактурыДокументы.НомерСчетаФактуры ЕСТЬ НЕ NULL
| ТОГДА ТаблицаСчетаФактурыДокументы.НомерСчетаФактуры
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК НомерСчетаФактуры,
| ВЫБОР
| КОГДА СчетаФактурыСОсобымПорядкомОтображения.ИсправленныйСчетФактура ЕСТЬ НЕ NULL
| ТОГДА СчетаФактурыСОсобымПорядкомОтображения.НомерИсправленногоСчетаФактуры
| КОГДА ТаблицаСчетаФактурыДокументы.НомерСчетаФактурыСортировка ЕСТЬ НЕ NULL
| ТОГДА ТаблицаСчетаФактурыДокументы.НомерСчетаФактурыСортировка
| КОГДА ТаблицаСчетаФактурыДокументы.НомерСчетаФактуры ЕСТЬ НЕ NULL
| ТОГДА ТаблицаСчетаФактурыДокументы.НомерСчетаФактуры
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК НомерСчетаФактурыСортировка,
| ЕСТЬNULL(НАЧАЛОПЕРИОДА(ВЫБОР
| КОГДА ЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров
| ТОГДА ЗаписиКнигиПродаж.Период
| КОГДА СчетаФактурыСОсобымПорядкомОтображения.ИсправленныйСчетФактура ЕСТЬ НЕ NULL
| ТОГДА СчетаФактурыСОсобымПорядкомОтображения.ДатаИсправленногоСчетаФактуры
| КОГДА НЕ ТаблицаСчетаФактурыДокументы.ДатаСчетаФактурыСортировка ЕСТЬ NULL
| ТОГДА ТаблицаСчетаФактурыДокументы.ДатаСчетаФактурыСортировка
| ИНАЧЕ ТаблицаСчетаФактурыДокументы.ДатаСчетаФактуры
| КОНЕЦ, ДЕНЬ), НЕОПРЕДЕЛЕНО) КАК ДатаСчетаФактурыСортировка,
| ЕСТЬNULL(ВЫБОР
| КОГДА СчетаФактурыСОсобымПорядкомОтображения.ИсправленныйСчетФактура ЕСТЬ НЕ NULL
| ТОГДА СчетаФактурыСОсобымПорядкомОтображения.ДатаИсправленногоСчетаФактуры
| КОГДА НЕ ТаблицаСчетаФактурыДокументы.ДатаСчетаФактуры ЕСТЬ NULL
| ТОГДА ТаблицаСчетаФактурыДокументы.ДатаСчетаФактуры
| ИНАЧЕ ТаблицаСчетаФактурыДокументы.ДатаСчетаФактуры
| КОНЕЦ, НЕОПРЕДЕЛЕНО) КАК ДатаСчетаФактуры,
| ЗаписиКнигиПродаж.СтавкаНДС_Аванс КАК СтавкаНДС_Аванс,
| ЗаписиКнигиПродаж.ДоговорАванса КАК ДоговорАванса,
| ВЫБОР
| КОГДА ТаблицаСчетаФактурыДокументы.СводныйКорректировочный = ИСТИНА
| И НЕ ЗаписиКнигиПродаж.НаАванс
| И &ПравилаПостановления981
| ТОГДА ЗаписиКнигиПродаж.КонтрагентПоСчетуФактуре
| ИНАЧЕ ЗаписиКнигиПродаж.Контрагент
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ЭтоРозничнаяПродажа, ЛОЖЬ)
| И ЗаписиКнигиПродаж.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК РозничнаяПродажа,
| ВЫБОР
| КОГДА ТаблицаСчетаФактурыДокументы.СводныйКорректировочный = ИСТИНА
| И &ПравилаПостановления981
| И НЕ ЗаписиКнигиПродаж.НаАванс
| ТОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.КППКонтрагента, """")
| КОГДА ЗаписиКнигиПродаж.Контрагент ССЫЛКА Справочник.Организации
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.КППКонтрагента, """")
| КОНЕЦ КАК КППКонтрагента,
| ЗаписиКнигиПродаж.ДатаОплаты КАК ДатаОплаты,
| ЗаписиКнигиПродаж.ДокументОплаты КАК ДокументОплаты,
| ЗаписиКнигиПродаж.Событие КАК Событие,
| ВЫБОР
| КОГДА ЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА 0
| КОГДА ЗаписиКнигиПродаж.НалоговыйПериод < ДАТАВРЕМЯ(2014, 10, 1)
| ТОГДА ЗаписиКнигиПродаж.ВсегоПродаж
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.Валюта, &ВалютаРегУчета) = &ВалютаРегУчета
| ТОГДА ВЫБОР
| КОГДА ЗаписиКнигиПродаж.ВсегоПродаж < 0
| ТОГДА -ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПродажВВалюте, -ЗаписиКнигиПродаж.ВсегоПродаж)
| КОГДА ЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста
| ТОГДА -ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПродажВВалюте, ЗаписиКнигиПродаж.ВсегоПродаж)
| ИНАЧЕ ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПродажВВалюте, ЗаписиКнигиПродаж.ВсегоПродаж)
| КОНЕЦ
| ИНАЧЕ ЗаписиКнигиПродаж.ВсегоПродаж
| КОНЕЦ КАК ВсегоПродаж,
| ВЫБОР
| КОГДА ЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА ЗаписиКнигиПродаж.СуммаБезНДС20
| КОГДА ЗаписиКнигиПродаж.НаАванс
| И НЕ ЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров
| ТОГДА 0
| ИНАЧЕ ЗаписиКнигиПродаж.СуммаБезНДС20
| КОНЕЦ КАК СуммаБезНДС20,
| ЗаписиКнигиПродаж.НДС20 КАК НДС20,
| ВЫБОР
| КОГДА ЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА ЗаписиКнигиПродаж.СуммаБезНДС18
| КОГДА (ЗаписиКнигиПродаж.НаАванс
| ИЛИ ЗаписиКнигиПродаж.НаСуммовуюРазницу)
| И НЕ ЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров
| ТОГДА 0
| ИНАЧЕ ЗаписиКнигиПродаж.СуммаБезНДС18
| КОНЕЦ КАК СуммаБезНДС18,
| ЗаписиКнигиПродаж.НДС18 КАК НДС18,
| ВЫБОР
| КОГДА (ЗаписиКнигиПродаж.НаАванс
| ИЛИ ЗаписиКнигиПродаж.НаСуммовуюРазницу)
| И НЕ ЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров
| ТОГДА 0
| ИНАЧЕ ЗаписиКнигиПродаж.СуммаБезНДС10
| КОНЕЦ КАК СуммаБезНДС10,
| ЗаписиКнигиПродаж.НДС10 КАК НДС10,
| ЗаписиКнигиПродаж.НДС0 КАК НДС0,
| ВЫБОР
| КОГДА ЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА ЗаписиКнигиПродаж.СуммаБезНДС7
| КОГДА ЗаписиКнигиПродаж.НаАванс
| И НЕ ЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров
| ТОГДА 0
| ИНАЧЕ ЗаписиКнигиПродаж.СуммаБезНДС7
| КОНЕЦ КАК СуммаБезНДС7,
| ЗаписиКнигиПродаж.НДС7 КАК НДС7,
| ВЫБОР
| КОГДА ЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА ЗаписиКнигиПродаж.СуммаБезНДС5
| КОГДА ЗаписиКнигиПродаж.НаАванс
| И НЕ ЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров
| ТОГДА 0
| ИНАЧЕ ЗаписиКнигиПродаж.СуммаБезНДС5
| КОНЕЦ КАК СуммаБезНДС5,
| ЗаписиКнигиПродаж.НДС5 КАК НДС5,
| ЗаписиКнигиПродаж.СуммаСовсемБезНДС КАК СуммаСовсемБезНДС,
| НАЧАЛОПЕРИОДА(ЗаписиКнигиПродаж.Период, ДЕНЬ) КАК ДатаОформления,
| ЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста КАК СторнирующаяЗаписьДопЛиста,
| ЕСТЬNULL(СчетаФактурыСОсобымПорядкомОтображения.СчетФактура, ЗаписиКнигиПродаж.ИсправленныйСчетФактура) КАК ИсправленныйСчетФактура,
| ЗаписиКнигиПродаж.Исправление КАК Исправление,
| ТаблицаСчетаФактурыДокументы.ДатаИсправления КАК ДатаИсправления,
| ТаблицаСчетаФактурыДокументы.НомерИсправления КАК НомерИсправления,
| ТаблицаСчетаФактурыДокументы.ДатаКорректировки КАК ДатаКорректировки,
| ТаблицаСчетаФактурыДокументы.НомерКорректировки КАК НомерКорректировки,
| ТаблицаСчетаФактурыДокументы.ДатаИсправленияКорректировки КАК ДатаИсправленияКорректировки,
| ТаблицаСчетаФактурыДокументы.НомерИсправленияКорректировки КАК НомерИсправленияКорректировки,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ОбрабатыватьНомерДокумента, ЛОЖЬ) КАК ОбрабатыватьНомерДокумента,
| ЗаписиКнигиПродаж.ДатаСобытия КАК ДатаСобытия,
| ВЫБОР
| КОГДА ЗаписиКнигиПродаж.КодВидаОперации <> """"
| ТОГДА ЗаписиКнигиПродаж.КодВидаОперации
| ИНАЧЕ ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.КодВидаОперации, ""01"")
| КОНЕЦ КАК КодВидаОперации,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.Валюта, &ВалютаРегУчета) <> &ВалютаРегУчета
| ТОГДА ТаблицаСчетаФактурыДокументы.ВалютаНаименование
| ИНАЧЕ """"
| КОНЕЦ КАК Валюта,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.Валюта, &ВалютаРегУчета) <> &ВалютаРегУчета
| ТОГДА ТаблицаСчетаФактурыДокументы.ВалютаКод
| ИНАЧЕ """"
| КОНЕЦ КАК ВалютаКод,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.Валюта, &ВалютаРегУчета) <> &ВалютаРегУчета
| ТОГДА ТаблицаСчетаФактурыДокументы.ВалютаНаименованиеКраткое
| ИНАЧЕ &НаименованиеВалютыРубль
| КОНЕЦ КАК ВалютаНаименование,
| ВЫБОР
| КОГДА ЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА 0
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.Валюта, &ВалютаРегУчета) = &ВалютаРегУчета
| ТОГДА 0
| ИНАЧЕ ВЫБОР
| КОГДА ЗаписиКнигиПродаж.ВсегоПродаж < 0
| ТОГДА -ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПродажВВалюте, -ЗаписиКнигиПродаж.ВсегоПродаж)
| КОГДА ЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста
| ТОГДА -ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПродажВВалюте, ЗаписиКнигиПродаж.ВсегоПродаж)
| ИНАЧЕ ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПродажВВалюте, ЗаписиКнигиПродаж.ВсегоПродаж)
| КОНЕЦ
| КОНЕЦ КАК ВсегоПродажВВалюте,
| ЗаписиКнигиПродаж.НомерДокументаОплаты КАК НомерДокументаОплаты,
| ЗаписиКнигиПродаж.ДатаДокументаОплаты КАК ДатаДокументаОплаты,
| ТаблицаСчетаФактурыДокументы.ПосредникСсылка КАК ПосредникСсылка,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.СводныйКомиссионный, ЛОЖЬ) КАК СводныйКомиссионный,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.СводныйКорректировочный, ЛОЖЬ) КАК СводныйКорректировочный,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.НачислениеПоОказаниюУслуг, ЛОЖЬ) КАК НачислениеПоОказаниюУслуг,
| ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.СводнаяСправка, ЛОЖЬ) КАК СводнаяСправка,
| ЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров КАК НалоговыйАгентПокупательТоваров
|ПОМЕСТИТЬ ПодготовленныеЗаписиКнигиПродаж
|ИЗ
| ЗаписиКнигиПродаж КАК ЗаписиКнигиПродаж
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаСчетаФактурыДокументы КАК ТаблицаСчетаФактурыДокументы
| ПО ЗаписиКнигиПродаж.СчетФактура = ТаблицаСчетаФактурыДокументы.СчетФактура
| И ЗаписиКнигиПродаж.ДоговорАванса = ТаблицаСчетаФактурыДокументы.ДоговорАванса
| И ЗаписиКнигиПродаж.СтавкаНДС_Аванс = ТаблицаСчетаФактурыДокументы.СтавкаНДСАванса
| И ЗаписиКнигиПродаж.КонтрагентПоСчетуФактуре = ТаблицаСчетаФактурыДокументы.КонтрагентПоСчетуФактуре
| ЛЕВОЕ СОЕДИНЕНИЕ СчетаФактурыСОсобымПорядкомОтображения КАК СчетаФактурыСОсобымПорядкомОтображения
| ПО ЗаписиКнигиПродаж.СчетФактура = СчетаФактурыСОсобымПорядкомОтображения.СчетФактура
|;
|
|
|УНИЧТОЖИТЬ ТаблицаСчетаФактурыДокументы
|;
|
|
|УНИЧТОЖИТЬ ЗаписиКнигиПродаж
|;
|
|
|ВЫБРАТЬ
| ПодготовленныеЗаписиКнигиПродаж.Контрагент КАК Ссылка,
| ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка КАК ДатаСведений
|ПОМЕСТИТЬ СсылкиНаДаты
|ИЗ
| ПодготовленныеЗаписиКнигиПродаж КАК ПодготовленныеЗаписиКнигиПродаж
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ПодготовленныеЗаписиКнигиПродаж.ПосредникСсылка,
| ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка
|ИЗ
| ПодготовленныеЗаписиКнигиПродаж КАК ПодготовленныеЗаписиКнигиПродаж
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка";
Возврат ТекстЗапроса + ОбщегоНазначения.РазделительПакетаЗапросов();
КонецФункции
Функция ТекстЗапросаКнигаПродаж(СтруктураПараметров)
ТекстЗапроса =
"ВЫБРАТЬ
| ПодготовленныеЗаписиКнигиПродаж.Организация КАК Организация,
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйПериод КАК НалоговыйПериод,
| ПодготовленныеЗаписиКнигиПродаж.НаАванс КАК НаАванс,
| ПодготовленныеЗаписиКнигиПродаж.НаСуммовуюРазницу КАК НаСуммовуюРазницу,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактура КАК СчетФактура,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактураДата КАК СчетФактураДата,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактураДокумент КАК СчетФактураДокумент,
| ПодготовленныеЗаписиКнигиПродаж.НомерСчетаФактуры КАК НомерСчетаФактуры,
| ПодготовленныеЗаписиКнигиПродаж.НомерСчетаФактурыСортировка КАК НомерСчетаФактурыСортировка,
| ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка КАК ДатаСчетаФактурыСортировка,
| ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактуры КАК ДатаСчетаФактуры,
| ПодготовленныеЗаписиКнигиПродаж.СтавкаНДС_Аванс КАК СтавкаНДС_Аванс,
| ПодготовленныеЗаписиКнигиПродаж.ДоговорАванса КАК ДоговорАванса,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| ИНАЧЕ ПодготовленныеЗаписиКнигиПродаж.Контрагент
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(СведенияОПокупателях.ИНН, """")
| КОНЕЦ КАК ПокупательИНН,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА """"
| КОГДА ПодготовленныеЗаписиКнигиПродаж.КППКонтрагента = """"
| ТОГДА ЕСТЬNULL(СведенияОПокупателях.КПП, """")
| ИНАЧЕ ПодготовленныеЗаписиКнигиПродаж.КППКонтрагента
| КОНЕЦ КАК ПокупательКПП,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА &ТекстРозничнаяПродажа
| ИНАЧЕ ЕСТЬNULL(СведенияОПокупателях.Наименование, """")
| КОНЕЦ КАК Покупатель,
| ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа КАК РозничнаяПродажа,
| ПодготовленныеЗаписиКнигиПродаж.ДатаОплаты КАК ДатаОплаты,
| ПодготовленныеЗаписиКнигиПродаж.ДокументОплаты КАК ДокументОплаты,
| ПодготовленныеЗаписиКнигиПродаж.Событие КАК Событие,
| ПодготовленныеЗаписиКнигиПродаж.ВсегоПродаж КАК ВсегоПродаж,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС20 КАК СуммаБезНДС20,
| ПодготовленныеЗаписиКнигиПродаж.НДС20 КАК НДС20,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС18 КАК СуммаБезНДС18,
| ПодготовленныеЗаписиКнигиПродаж.НДС18 КАК НДС18,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС10 КАК СуммаБезНДС10,
| ПодготовленныеЗаписиКнигиПродаж.НДС10 КАК НДС10,
| ПодготовленныеЗаписиКнигиПродаж.НДС0 КАК НДС0,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС7 КАК СуммаБезНДС7,
| ПодготовленныеЗаписиКнигиПродаж.НДС7 КАК НДС7,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС5 КАК СуммаБезНДС5,
| ПодготовленныеЗаписиКнигиПродаж.НДС5 КАК НДС5,
| ПодготовленныеЗаписиКнигиПродаж.СуммаСовсемБезНДС КАК СуммаСовсемБезНДС,
| ПодготовленныеЗаписиКнигиПродаж.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| ПодготовленныеЗаписиКнигиПродаж.Исправление КАК Исправление,
| ПодготовленныеЗаписиКнигиПродаж.ДатаИсправления КАК ДатаИсправления,
| ПодготовленныеЗаписиКнигиПродаж.НомерИсправления КАК НомерИсправления,
| ПодготовленныеЗаписиКнигиПродаж.ДатаКорректировки КАК ДатаКорректировки,
| ПодготовленныеЗаписиКнигиПродаж.НомерКорректировки КАК НомерКорректировки,
| ПодготовленныеЗаписиКнигиПродаж.ДатаИсправленияКорректировки КАК ДатаИсправленияКорректировки,
| ПодготовленныеЗаписиКнигиПродаж.НомерИсправленияКорректировки КАК НомерИсправленияКорректировки,
| ПодготовленныеЗаписиКнигиПродаж.ОбрабатыватьНомерДокумента КАК ОбрабатыватьНомерДокумента,
| ПодготовленныеЗаписиКнигиПродаж.ДатаСобытия КАК ДатаСобытия,
| ПодготовленныеЗаписиКнигиПродаж.КодВидаОперации КАК КодВидаОперации,
| ПодготовленныеЗаписиКнигиПродаж.Валюта КАК Валюта,
| ПодготовленныеЗаписиКнигиПродаж.ВалютаНаименование КАК ВалютаНаименование,
| ПодготовленныеЗаписиКнигиПродаж.ВалютаКод КАК ВалютаКод,
| ПодготовленныеЗаписиКнигиПродаж.ВсегоПродажВВалюте КАК ВсегоПродажВВалюте,
| ПодготовленныеЗаписиКнигиПродаж.НомерДокументаОплаты КАК НомерДокументаОплаты,
| ПодготовленныеЗаписиКнигиПродаж.ДатаДокументаОплаты КАК ДатаДокументаОплаты,
| ПодготовленныеЗаписиКнигиПродаж.ПосредникСсылка КАК ПосредникСсылка,
| ЕСТЬNULL(СведенияОПосредниках.Наименование, """") КАК Посредник,
| ЕСТЬNULL(СведенияОПосредниках.ИНН, """") КАК ПосредникИНН,
| ЕСТЬNULL(СведенияОПосредниках.КПП, """") КАК ПосредникКПП,
| ПодготовленныеЗаписиКнигиПродаж.СводныйКомиссионный КАК СводныйКомиссионный,
| ПодготовленныеЗаписиКнигиПродаж.СводныйКорректировочный КАК СводныйКорректировочный,
| ПодготовленныеЗаписиКнигиПродаж.НачислениеПоОказаниюУслуг КАК НачислениеПоОказаниюУслуг,
| ПодготовленныеЗаписиКнигиПродаж.СводнаяСправка КАК СводнаяСправка,
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров КАК НалоговыйАгентПокупательТоваров
|ИЗ
| ПодготовленныеЗаписиКнигиПродаж КАК ПодготовленныеЗаписиКнигиПродаж
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОПокупателях
| ПО ПодготовленныеЗаписиКнигиПродаж.Контрагент = СведенияОПокупателях.Ссылка
| И ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка = СведенияОПокупателях.ДатаСведений
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОПосредниках
| ПО ПодготовленныеЗаписиКнигиПродаж.ПосредникСсылка = СведенияОПосредниках.Ссылка
| И ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка = СведенияОПосредниках.ДатаСведений
|
|УПОРЯДОЧИТЬ ПО
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйПериод,
| ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка,
| ПодготовленныеЗаписиКнигиПродаж.НомерСчетаФактурыСортировка,
| ПодготовленныеЗаписиКнигиПродаж.Исправление
|ИТОГИ
| МИНИМУМ(НомерСчетаФактурыСортировка),
| МИНИМУМ(ДатаСчетаФактурыСортировка),
| МАКСИМУМ(Контрагент),
| МАКСИМУМ(Покупатель),
| МАКСИМУМ(ДатаОплаты),
| МАКСИМУМ(ВсегоПродаж),
| СУММА(СуммаБезНДС20),
| СУММА(НДС20),
| СУММА(СуммаБезНДС18),
| СУММА(НДС18),
| СУММА(СуммаБезНДС10),
| СУММА(НДС10),
| СУММА(СуммаБезНДС7),
| СУММА(НДС7),
| СУММА(СуммаБезНДС5),
| СУММА(НДС5),
| СУММА(НДС0),
| СУММА(СуммаСовсемБезНДС),
| МАКСИМУМ(НомерДокументаОплаты),
| МАКСИМУМ(ДатаДокументаОплаты),
| МАКСИМУМ(СводныйКомиссионный),
| МАКСИМУМ(СводныйКорректировочный),
| МАКСИМУМ(НачислениеПоОказаниюУслуг),
| МАКСИМУМ(СводнаяСправка),
| МАКСИМУМ(НалоговыйАгентПокупательТоваров)
|ПО
| ОБЩИЕ,
| НалоговыйПериод,
| СчетФактураДокумент,
| ДоговорАванса,
| Исправление";
Если СтруктураПараметров.ГруппироватьПоКонтрагентам И НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"ПО
| ОБЩИЕ,",
"ПО
| ОБЩИЕ, Контрагент, ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"УПОРЯДОЧИТЬ ПО",
"УПОРЯДОЧИТЬ ПО Покупатель, ");
КонецЕсли;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 < 3 Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"МАКСИМУМ(ВсегоПродаж)",
"СУММА(ВсегоПродаж)");
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДополнительныйЛистКнигиПродаж(СтруктураПараметров)
ТекстЗапроса =
"ВЫБРАТЬ
| ПодготовленныеЗаписиКнигиПродаж.Организация КАК Организация,
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйПериод КАК НалоговыйПериод,
| ПодготовленныеЗаписиКнигиПродаж.КонецНалоговогоПериода КАК КонецНалоговогоПериода,
| ПодготовленныеЗаписиКнигиПродаж.НаАванс КАК НаАванс,
| ПодготовленныеЗаписиКнигиПродаж.НаСуммовуюРазницу КАК НаСуммовуюРазницу,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактура КАК СчетФактура,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактураДата КАК СчетФактураДата,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактураДокумент КАК СчетФактураДокумент,
| ПодготовленныеЗаписиКнигиПродаж.НомерСчетаФактуры КАК НомерСчетаФактуры,
| ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактуры КАК ДатаСчетаФактуры,
| ПодготовленныеЗаписиКнигиПродаж.СтавкаНДС_Аванс КАК СтавкаНДС_Аванс,
| ПодготовленныеЗаписиКнигиПродаж.ДоговорАванса КАК ДоговорАванса,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| ИНАЧЕ ПодготовленныеЗаписиКнигиПродаж.Контрагент
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(СведенияОПокупателях.ИНН, """")
| КОНЕЦ КАК ПокупательИНН,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА """"
| КОГДА ПодготовленныеЗаписиКнигиПродаж.КППКонтрагента = """"
| ТОГДА ЕСТЬNULL(СведенияОПокупателях.КПП, """")
| ИНАЧЕ ПодготовленныеЗаписиКнигиПродаж.КППКонтрагента
| КОНЕЦ КАК ПокупательКПП,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА &ТекстРозничнаяПродажа
| ИНАЧЕ ЕСТЬNULL(СведенияОПокупателях.Наименование, """")
| КОНЕЦ КАК Покупатель,
| ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа КАК РозничнаяПродажа,
| ПодготовленныеЗаписиКнигиПродаж.ДатаОплаты КАК ДатаОплаты,
| ПодготовленныеЗаписиКнигиПродаж.ДокументОплаты КАК ДокументОплаты,
| ПодготовленныеЗаписиКнигиПродаж.Событие КАК Событие,
| ПодготовленныеЗаписиКнигиПродаж.ВсегоПродаж КАК ВсегоПродаж,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС20 КАК СуммаБезНДС20,
| ПодготовленныеЗаписиКнигиПродаж.НДС20 КАК НДС20,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС18 КАК СуммаБезНДС18,
| ПодготовленныеЗаписиКнигиПродаж.НДС18 КАК НДС18,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС10 КАК СуммаБезНДС10,
| ПодготовленныеЗаписиКнигиПродаж.НДС10 КАК НДС10,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС7 КАК СуммаБезНДС7,
| ПодготовленныеЗаписиКнигиПродаж.НДС7 КАК НДС7,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС5 КАК СуммаБезНДС5,
| ПодготовленныеЗаписиКнигиПродаж.НДС5 КАК НДС5,
| ПодготовленныеЗаписиКнигиПродаж.НДС0 КАК НДС0,
| ПодготовленныеЗаписиКнигиПродаж.СуммаСовсемБезНДС КАК СуммаСовсемБезНДС,
| ПодготовленныеЗаписиКнигиПродаж.ДатаОформления КАК ДатаОформления,
| ПодготовленныеЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста КАК СторнирующаяЗаписьДопЛиста,
| ПодготовленныеЗаписиКнигиПродаж.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| ПодготовленныеЗаписиКнигиПродаж.ДатаИсправления КАК ДатаИсправления,
| ПодготовленныеЗаписиКнигиПродаж.НомерИсправления КАК НомерИсправления,
| ПодготовленныеЗаписиКнигиПродаж.ДатаКорректировки КАК ДатаКорректировки,
| ПодготовленныеЗаписиКнигиПродаж.НомерКорректировки КАК НомерКорректировки,
| ПодготовленныеЗаписиКнигиПродаж.ДатаИсправленияКорректировки КАК ДатаИсправленияКорректировки,
| ПодготовленныеЗаписиКнигиПродаж.НомерИсправленияКорректировки КАК НомерИсправленияКорректировки,
| ПодготовленныеЗаписиКнигиПродаж.ОбрабатыватьНомерДокумента КАК ОбрабатыватьНомерДокумента,
| ПодготовленныеЗаписиКнигиПродаж.ДатаСобытия КАК ДатаСобытия,
| ПодготовленныеЗаписиКнигиПродаж.КодВидаОперации КАК КодВидаОперации,
| ПодготовленныеЗаписиКнигиПродаж.Валюта КАК Валюта,
| ПодготовленныеЗаписиКнигиПродаж.ВалютаНаименование КАК ВалютаНаименование,
| ПодготовленныеЗаписиКнигиПродаж.ВалютаКод КАК ВалютаКод,
| ПодготовленныеЗаписиКнигиПродаж.ВсегоПродажВВалюте КАК ВсегоПродажВВалюте,
| ПодготовленныеЗаписиКнигиПродаж.НомерДокументаОплаты КАК НомерДокументаОплаты,
| ПодготовленныеЗаписиКнигиПродаж.ДатаДокументаОплаты КАК ДатаДокументаОплаты,
| ПодготовленныеЗаписиКнигиПродаж.ПосредникСсылка КАК ПосредникСсылка,
| ЕСТЬNULL(СведенияОПосредниках.Наименование, """") КАК Посредник,
| ЕСТЬNULL(СведенияОПосредниках.ИНН, """") КАК ПосредникИНН,
| ЕСТЬNULL(СведенияОПосредниках.КПП, """") КАК ПосредникКПП,
| ПодготовленныеЗаписиКнигиПродаж.СводныйКомиссионный КАК СводныйКомиссионный,
| ПодготовленныеЗаписиКнигиПродаж.СводныйКорректировочный КАК СводныйКорректировочный,
| ПодготовленныеЗаписиКнигиПродаж.НачислениеПоОказаниюУслуг КАК НачислениеПоОказаниюУслуг,
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров КАК НалоговыйАгентПокупательТоваров
|ИЗ
| ПодготовленныеЗаписиКнигиПродаж КАК ПодготовленныеЗаписиКнигиПродаж
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОПокупателях
| ПО ПодготовленныеЗаписиКнигиПродаж.Контрагент = СведенияОПокупателях.Ссылка
| И ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка = СведенияОПокупателях.ДатаСведений
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОПосредниках
| ПО ПодготовленныеЗаписиКнигиПродаж.ПосредникСсылка = СведенияОПосредниках.Ссылка
| И ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка = СведенияОПосредниках.ДатаСведений
|
|УПОРЯДОЧИТЬ ПО
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйПериод,
| ПодготовленныеЗаписиКнигиПродаж.ДатаОформления,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактураДата,
| ПодготовленныеЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста УБЫВ,
| ПодготовленныеЗаписиКнигиПродаж.ДатаОплаты
|ИТОГИ
| МАКСИМУМ(КонецНалоговогоПериода),
| МИНИМУМ(СчетФактураДата),
| МАКСИМУМ(Покупатель),
| МАКСИМУМ(ДатаОплаты),
| МАКСИМУМ(ВсегоПродаж),
| СУММА(СуммаБезНДС20),
| СУММА(НДС20),
| СУММА(СуммаБезНДС18),
| СУММА(НДС18),
| СУММА(СуммаБезНДС10),
| СУММА(НДС10),
| СУММА(СуммаБезНДС7),
| СУММА(НДС7),
| СУММА(СуммаБезНДС5),
| СУММА(НДС5),
| СУММА(НДС0),
| СУММА(СуммаСовсемБезНДС),
| МАКСИМУМ(НомерДокументаОплаты),
| МАКСИМУМ(ДатаДокументаОплаты),
| МАКСИМУМ(СводныйКомиссионный),
| МАКСИМУМ(СводныйКорректировочный),
| МАКСИМУМ(НачислениеПоОказаниюУслуг),
| МАКСИМУМ(НалоговыйАгентПокупательТоваров)
|ПО
| НалоговыйПериод,
| ДатаОформления,
| СчетФактураДокумент,
| ДоговорАванса,
| СторнирующаяЗаписьДопЛиста";
Если СтруктураПараметров.ГруппироватьПоКонтрагентам И НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"ПО
| НалоговыйПериод,
| ДатаОформления,",
"ПО
| НалоговыйПериод,
| ДатаОформления, Контрагент, ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"УПОРЯДОЧИТЬ ПО",
"УПОРЯДОЧИТЬ ПО Покупатель, ");
КонецЕсли;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 < 3 Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"МАКСИМУМ(ВсегоПродаж)",
"СУММА(ВсегоПродаж)");
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОбъединениеСВычетамиНеплательщикаНДС()
Возврат
"ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаписиКнигиПокупок.Период,
| ЗаписиКнигиПокупок.НалоговыйПериод,
| ЗаписиКнигиПокупок.КонецНалоговогоПериода,
| ИСТИНА,
| ЗаписиКнигиПокупок.Организация,
| ИСТИНА,
| ЗаписиКнигиПокупок.КонтрагентПоСчетуФактуре,
| ЗаписиКнигиПокупок.СчетФактура,
| ЗаписиКнигиПокупок.ДатаОплаты,
| ЗаписиКнигиПокупок.ДокументОплаты,
| ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НДСНачисленКУплате),
| ЗаписиКнигиПокупок.ДатаСобытия,
| - ЗаписиКнигиПокупок.ВсегоПокупок,
| 0,
| 0,
| - ЗаписиКнигиПокупок.СуммаГрафа170,
| - ЗаписиКнигиПокупок.НДС18,
| - ЗаписиКнигиПокупок.СуммаГрафа180,
| - ЗаписиКнигиПокупок.НДС10,
| - ЗаписиКнигиПокупок.НДС0,
| - ЗаписиКнигиПокупок.СуммаСовсемБезНДС,
| ЗаписиКнигиПокупок.Организация,
| ЗаписиКнигиПокупок.НаАванс,
| ЛОЖЬ,
| ЗаписиКнигиПокупок.СтавкаНДСАванса,
| ЗаписиКнигиПокупок.ДоговорКонтрагента,
| ЗаписиКнигиПокупок.СчетФактураДата,
| ЗаписиКнигиПокупок.ИсправленныйСчетФактура,
| ЗаписиКнигиПокупок.Исправление,
| ЗаписиКнигиПокупок.НомерДокументаОплаты,
| ЗаписиКнигиПокупок.ДатаДокументаОплаты,
| ЗаписиКнигиПокупок.КодВидаОперации
|ИЗ
| ЗаписиКнигиПокупок КАК ЗаписиКнигиПокупок";
КонецФункции
Функция ПолучитьДополнительнуюИнформациюПоСчетуФактуре(СтруктураПараметров)
ДополнительнаяИнформация = НовыйДополнительнаяИнформацияПоСчетуФактуре();
Если СтруктураПараметров.ДанныеДляПроверкиКонтрагентов.Свойство("ВыводитьТолькоНекорректныхКонтрагентов")
И СтруктураПараметров.ДанныеДляПроверкиКонтрагентов.ВыводитьТолькоНекорректныхКонтрагентов Тогда
Возврат ДополнительнаяИнформация;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = СтруктураПараметров.МенеджерВременныхТаблиц;
УчетНДСПереопределяемый.ДополнитьИнформациейОТНВЭД(ДополнительнаяИнформация, Запрос);
УчетНДСПереопределяемый.ДополнитьПродажиИнформациейОНомерахДекларацийНаТовары(ДополнительнаяИнформация, СтруктураПараметров, Запрос);
Возврат ДополнительнаяИнформация;
КонецФункции
Функция НовыйДополнительнаяИнформацияПоСчетуФактуре()
ДополнительнаяИнформация = Новый ТаблицаЗначений;
ДополнительнаяИнформация.Колонки.Добавить("Ссылка", Документы.ТипВсеСсылки());
ДополнительнаяИнформация.Индексы.Добавить("Ссылка");
ДополнительнаяИнформация.Колонки.Добавить("ТНВЭД", ОбщегоНазначения.ОписаниеТипаСтрока(0));
ДополнительнаяИнформация.Колонки.Добавить("СвРегНом", Новый ОписаниеТипов("Массив"));
ДополнительнаяИнформация.Колонки.Добавить("СвРегНомТД", Новый ОписаниеТипов("Массив"));
Возврат ДополнительнаяИнформация;
КонецФункции
#КонецОбласти
Функция НоваяСтрокаИтоговКнигиПродаж()
Результат = Новый Структура();
Результат.Вставить("ВсегоПродаж", 0);
Результат.Вставить("СуммаБезНДС20", 0);
Результат.Вставить("СуммаБезНДС18", 0);
Результат.Вставить("СуммаБезНДС7", 0);
Результат.Вставить("СуммаБезНДС5", 0);
Результат.Вставить("НДС20", 0);
Результат.Вставить("НДС18", 0);
Результат.Вставить("НДС7", 0);
Результат.Вставить("НДС5", 0);
Результат.Вставить("СуммаБезНДС10", 0);
Результат.Вставить("НДС10", 0);
Результат.Вставить("НДС0", 0);
Результат.Вставить("СуммаСовсемБезНДС", 0);
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецЕсли