Files
uas_ep/src/Reports/КнигаПродаж/Ext/ManagerModule.bsl
T

4525 lines
354 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
// Задает расширенные настройки отчета
//
// Параметры:
// Настройки - см. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.Настройки.
//
Процедура НастроитьВариантыОтчета(Настройки) Экспорт
ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.КнигаПродаж);
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "");
ОписаниеВарианта.Описание = НСтр("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 И СтрокаРезультата.ЕстьДопЛисты Тогда
СтруктураПараметров.КорректируемыйПериод = Истина;
ИначеЕсли СтрокаРезультата.ЕстьДопЛисты Тогда
СтруктураПараметров.ТекущийПериод = Истина;
КонецЕсли;
Если СтруктураПараметров.КорректируемыйПериод И СтруктураПараметров.ТекущийПериод Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Возврат СтруктураПараметров;
КонецФункции
#Область ПолучениеЗаписей
// Используется в электронном доп. листе книги продаж
// Получить итоги за период книга продаж.
//
// Параметры:
// СтруктураПараметров - Структура - Структура параметров:
// * НалоговыйПериод - Дата.
// * КонецНалоговогоПериода - Дата.
// * ДатаФормированияДопЛиста - Дата.
// * Организация - СправочникСсылка.Организации.
// * ЗаписьДополнительногоЛиста - Булево.
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений, Структура - Получить итоги за период книга продаж:
// * ВсегоПродаж - ОписаниеТипов - Число(15, 2).
// * СуммаБезНДС10 - ОписаниеТипов -Число(15, 2)
// * НДС10 - ОписаниеТипов - Число(15, 2)
// * СуммаБезНДС18 - ОписаниеТипов - Число(15, 2)
// * НДС18 - ОписаниеТипов - Число(15, 2)
// * СуммаБезНДС20 - ОписаниеТипов - Число(15, 2).
// * НДС20 - ОписаниеТипов - Число(15, 2).
// * НДС0 - ОписаниеТипов - Число(15, 2).
// * СуммаСовсемБезНДС - ОписаниеТипов -Число(15, 2).
Функция ПолучитьИтогиЗаПериодКнигаПродаж(СтруктураПараметров) Экспорт
ЭтоПечатьВыписок = Ложь;
Если СтруктураПараметров.Свойство("ЭтоВыписка") Тогда
Если СтруктураПараметров.ЭтоВыписка Тогда
ЭтоПечатьВыписок = Истина;
КонецЕсли;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаписиКнигиПродаж.МесяцДляВыписок КАК Период,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.ВсегоПродаж), 0) КАК ВсегоПродаж,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.СуммаБезНДС22), 0) КАК СуммаБезНДС22,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.НДС22), 0) КАК НДС22,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.СуммаБезНДС20) + СУММА(ЗаписиКнигиПродаж.СуммаБезНДС18), 0) КАК СуммаБезНДС20Или18,
| ЕСТЬNULL(СУММА(ЗаписиКнигиПродаж.НДС20) + СУММА(ЗаписиКнигиПродаж.НДС18), 0) КАК НДС20Или18,
| ЕСТЬ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) КАК СуммаСовсемБезНДС
|ИЗ
| (ВЫБРАТЬ
| &МесяцДляВыписок КАК МесяцДляВыписок,
| НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот КАК ВсегоПродаж,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС22)
| И НДСЗаписиКнигиПродажОбороты.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС22)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДС22,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС22)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 0
| КОНЕЦ КАК НДС22,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС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
| КОНЕЦ КАК СуммаСовсемБезНДС
| ИЗ
| РегистрНакопления.НДСЗаписиКнигиПродаж.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Месяц,
| Организация В (&Организация)
| И &ДополнительноеУсловие
| И НЕ ЗаписьДополнительногоЛиста) КАК НДСЗаписиКнигиПродажОбороты
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| &МесяцДляВыписок,
| НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС22)
| И НДСЗаписиКнигиПродажОбороты.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС22)
| И НЕ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
| ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС22)
| ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
| ИНАЧЕ 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);
Запрос.УстановитьПараметр("МассивСтавокНДС", МассивСтавокНДС);
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгентВсеВиды",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент(, Истина));
СтавкиНДС22 = Новый Массив();
СтавкиНДС22.Добавить(Перечисления.СтавкиНДС.НДС22);
СтавкиНДС22.Добавить(Перечисления.СтавкиНДС.НДС22_122);
СтавкиНДС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;
СтавкаБезНДС = Перечисления.СтавкиНДС.БезНДС;
Запрос.УстановитьПараметр("СтавкиНДС22", СтавкиНДС22);
Запрос.УстановитьПараметр("СтавкиНДС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);
ИтогЗаПериод.Вставить("СуммаБезНДС22", 0);
ИтогЗаПериод.Вставить("НДС22", 0);
ИтогЗаПериод.Вставить("СуммаБезНДС20", 0);
ИтогЗаПериод.Вставить("НДС20", 0);
ИтогЗаПериод.Вставить("СуммаБезНДС20Или18", 0);
ИтогЗаПериод.Вставить("НДС20Или18", 0);
ИтогЗаПериод.Вставить("НДС0", 0);
ИтогЗаПериод.Вставить("СуммаСовсемБезНДС", 0);
Если ЭтоПечатьВыписок Тогда
ИтогЗаПериод.Вставить("Период", '00010101');
КонецЕсли;
Возврат ИтогЗаПериод;
КонецЕсли;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ОпределитьПараметрыФормированияОтчета(СтруктураПараметров)
ДатаПроверкиПараметровУчета = СтруктураПараметров.КонецПериода;
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Если СтруктураПараметров.ЗаполнениеДокумента ИЛИ СтруктураПараметров.ЗаполнениеДекларации Тогда
ДатаПроверкиПараметровУчета = СтруктураПараметров.КонецНалоговогоПериода;
КонецЕсли;
КонецЕсли;
ПлательщикНДС = УчетнаяПолитика.ПлательщикНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета);
ПлательщикНДСПрименяющийУСН = УчетнаяПолитика.ПлательщикНДСПрименяющийУСН(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета);
// В соответствии с письмом ФНС России от 19.04.2018 СД-4-3/7484@ неплательщики НДС
// при зачете предварительной оплаты, выданной поставщику товаров п.8 ст. 161 НК
// в 2018-м году регистрируют вычет исчисленного ранее (с этой предварительной оплаты) налога
// в книге продаж в виде сторнирующей записи.
// Установим параметр "ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж" в значение "Истина",
// затем вызовем формирование отчета "Книга покупок", отчет выберет данные по вычетам неплательщика,
// которые будут отображены в составе Книги продаж.
ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж = ДатаПроверкиПараметровУчета >= '20180101'
И ДатаПроверкиПараметровУчета < '20190101'
И НЕ ПлательщикНДС;
СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137",
УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("Постановление1137_2019",
УчетНДСПереопределяемый.ПрименяетсяПостановление15(ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("ПлательщикНДС", ПлательщикНДС);
СтруктураПараметров.Вставить("ПлательщикНДСПрименяющийУСН", ПлательщикНДСПрименяющийУСН);
СтруктураПараметров.Вставить("ПрименяетсяОсвобождениеОтУплатыНДС",
УчетнаяПолитика.ПрименяетсяОсвобождениеОтУплатыНДС(СтруктураПараметров.Организация, ДатаПроверкиПараметровУчета));
СтруктураПараметров.Вставить("ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж", ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж);
КонецПроцедуры
Процедура СформироватьОсновнойРаздел(СтруктураПараметров, Результат);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Очистить();
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КнигаПродаж";
ТабличныйДокумент.ЧерноБелаяПечать = Истина;
СтруктураСекций = Новый Структура();
ПрименяетсяПостановление1448 = УчетНДСПереопределяемый.ПрименяетсяПостановление1448(СтруктураПараметров.КонецПериода);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 9 Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж26");
СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 8 Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж2026");
СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
ИначеЕсли ПрименяетсяПостановление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 = Новый Структура(
"СтПродБезНДС22,СтПродБезНДС20Или18,СтПродБезНДС20,СтПродБезНДС18,СтПродБезНДС10,СтПродБезНДС0, СтПродБезНДС7, СтПродБезНДС5,
|СумНДСВсКПр22,СумНДСВсКПр20Или18,СумНДСВсКПр20,СумНДСВсКПр18,СумНДСВсКПр10,СтПродОсвВсКПр, СумНДСВсКПр7, СумНДСВсКПр5");
ИтогиРаздел9.СтПродБезНДС22 = СтрокаИтогПоОрганизации.СуммаБезНДС22;
ИтогиРаздел9.СтПродБезНДС20Или18 = СтрокаИтогПоОрганизации.СуммаБезНДС20Или18;
ИтогиРаздел9.СтПродБезНДС20 = СтрокаИтогПоОрганизации.СуммаБезНДС20;
ИтогиРаздел9.СтПродБезНДС18 = СтрокаИтогПоОрганизации.СуммаБезНДС18;
ИтогиРаздел9.СтПродБезНДС10 = СтрокаИтогПоОрганизации.СуммаБезНДС10;
ИтогиРаздел9.СтПродБезНДС0 = СтрокаИтогПоОрганизации.НДС0;
ИтогиРаздел9.СумНДСВсКПр22 = СтрокаИтогПоОрганизации.НДС22;
ИтогиРаздел9.СумНДСВсКПр20Или18 = СтрокаИтогПоОрганизации.НДС20Или18;
ИтогиРаздел9.СумНДСВсКПр20 = СтрокаИтогПоОрганизации.НДС20;
ИтогиРаздел9.СумНДСВсКПр18 = СтрокаИтогПоОрганизации.НДС18;
ИтогиРаздел9.СумНДСВсКПр10 = СтрокаИтогПоОрганизации.НДС10;
ИтогиРаздел9.СтПродОсвВсКПр = СтрокаИтогПоОрганизации.СуммаСовсемБезНДС;
ИтогиРаздел9.СтПродБезНДС7 = СтрокаИтогПоОрганизации.СуммаБезНДС7;
ИтогиРаздел9.СтПродБезНДС5 = СтрокаИтогПоОрганизации.СуммаБезНДС5;
ИтогиРаздел9.СумНДСВсКПр7 = СтрокаИтогПоОрганизации.НДС7;
ИтогиРаздел9.СумНДСВсКПр5 = СтрокаИтогПоОрганизации.НДС5;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 8 Тогда
ИтогиРаздел9.СтПродБезНДС20 = СтрокаИтогПоОрганизации.СуммаБезНДС20Или18;
ИтогиРаздел9.СумНДСВсКПр20 = СтрокаИтогПоОрганизации.НДС20Или18;
КонецЕсли;
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
ОбщиеСведения = Новый Структура(
"СтТовРубКоп22,СтТовРубКоп20,СтТовРубКоп18_20,СтТовРубКоп18,СтТовРубКоп10,СтТовРубКоп0,
|СумНДСРубКоп22,СумНДСРубКоп20,СумНДСРубКоп18_20,СумНДСРубКоп18,СумНДСРубКоп10,СтПродОсвНДСРубКоп");
ОбщиеСведения.СтТовРубКоп22 = СтрокаИтогПоОрганизации.СуммаБезНДС22;
ОбщиеСведения.СтТовРубКоп20 = СтрокаИтогПоОрганизации.СуммаБезНДС20;
ОбщиеСведения.СтТовРубКоп18_20 = СтрокаИтогПоОрганизации.СуммаБезНДС20Или18;
ОбщиеСведения.СтТовРубКоп18 = СтрокаИтогПоОрганизации.СуммаБезНДС18;
ОбщиеСведения.СтТовРубКоп10 = СтрокаИтогПоОрганизации.СуммаБезНДС10;
ОбщиеСведения.СтТовРубКоп0 = СтрокаИтогПоОрганизации.НДС0;
ОбщиеСведения.СумНДСРубКоп22 = СтрокаИтогПоОрганизации.НДС22;
ОбщиеСведения.СумНДСРубКоп20 = СтрокаИтогПоОрганизации.НДС20;
ОбщиеСведения.СумНДСРубКоп18_20 = СтрокаИтогПоОрганизации.НДС20Или18;
ОбщиеСведения.СумНДСРубКоп18 = СтрокаИтогПоОрганизации.НДС18;
ОбщиеСведения.СумНДСРубКоп10 = СтрокаИтогПоОрганизации.НДС10;
ОбщиеСведения.СтПродОсвНДСРубКоп = СтрокаИтогПоОрганизации.СуммаСовсемБезНДС;
Если ПрименяетсяПостановление1448 Тогда
ОбщиеСведения.Вставить("СтТовРубКоп7", СтрокаИтогПоОрганизации.СуммаБезНДС7);
ОбщиеСведения.Вставить("СтТовРубКоп5", СтрокаИтогПоОрганизации.СуммаБезНДС5);
ОбщиеСведения.Вставить("СумНДСРубКоп7", СтрокаИтогПоОрганизации.НДС7);
ОбщиеСведения.Вставить("СумНДСРубКоп5", СтрокаИтогПоОрганизации.НДС5);
КонецЕсли;
СтруктураПараметров.ОбщиеСведения = ОбщиеСведения;
КонецЕсли;
Если СтруктураПараметров.ЗаполнениеДокумента Тогда
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, НазваниеРаздела, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);
ИначеЕсли НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
Если СтруктураПараметров.СчетчикСтрокТекущегоСегмента <> 0 Тогда
// Добавляем последний раздел
Если СтруктураПараметров.СчетчикСегментов < 2 Тогда
ЗаголовокЛиста = НазваниеРаздела;
Иначе
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СтруктураПараметров.СчетчикСегментов);
КонецЕсли;
ПроверкаКонтрагентов.ДобавитьРазделОтчета(СтруктураПараметров, ЗаголовокЛиста, СтруктураПараметров.СчетчикСегментов, ТабличныйДокумент);
ИначеЕсли СтруктураПараметров.Счетчик <> 0 Тогда
// Число строк последнего раздела совпало с предельным. Сам раздел был добавлен в УчетНДС.ПреобразоватьЗаписиКнигиПродаж().
// Заменим табличный документ в этом разделе отчета на табличный документ с итогами и подвалом.
РазделыОтчета = ПроверкаКонтрагентов.РазделыОтчета(СтруктураПараметров);
Если РазделыОтчета.Количество() > 0 Тогда
РазделОтчета = РазделыОтчета[РазделыОтчета.Количество()-1];
ТабличныйДокумент = РазделОтчета.ХранилищеОтчета.Получить();
ТабличныйДокумент.Вывести(СекцияВсего);
Если СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ВывестиПодвал(СтруктураПараметров, ТабличныйДокумент, Макет);
КонецЕсли;
РазделОтчета.ХранилищеОтчета = Новый ХранилищеЗначения(ТабличныйДокумент, Новый СжатиеДанных(9));
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура СформироватьДополнительныеЛисты(СтруктураПараметров, Результат)
Перем ТабличныйДокумент;
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
НомерОтображаемогоПериода = 0;
ИтогПоПериодам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
СтруктураПараметров.Вставить("СчетчикСтрокДопЛиста", 0);
СтруктураПараметров.Вставить("СчетчикСтрокТекущегоСегмента", 0);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ИтогиРаздел91 = Новый Структура(
"ИтСтПродКПр22,ИтСтПродКПр20Или18,ИтСтПродКПр20,ИтСтПродКПр18,ИтСтПродКПр10,ИтСтПродКПр7,ИтСтПродКПр5,ИтСтПродКПр0,
|СумНДСИтКПр22,СумНДСИтКПр20Или18,СумНДСИтКПр20,СумНДСИтКПр18,СумНДСИтКПр10,СумНДСИтКПр7,СумНДСИтКПр5,ИтСтПродОсвКПр,
|СтПродВсП1Р9_22,СтПродВсП1Р9_20Или18,СтПродВсП1Р9_20,СтПродВсП1Р9_18,СтПродВсП1Р9_10,СтПродВсП1Р9_7,СтПродВсП1Р9_5,СтПродВсП1Р9_0,
|СумНДСВсП1Р9_22,СумНДСВсП1Р9_20Или18,СумНДСВсП1Р9_20,СумНДСВсП1Р9_18,СумНДСВсП1Р9_10,СумНДСВсП1Р9_7,СумНДСВсП1Р9_5,СтПродОсвП1Р9Вс");
ПараметрыПолученияИтогов = Новый Структура;
ПараметрыПолученияИтогов.Вставить("НалоговыйПериод", НачалоКвартала(СтруктураПараметров.НачалоПериода));
ПараметрыПолученияИтогов.Вставить("КонецНалоговогоПериода", КонецКвартала(СтруктураПараметров.КонецНалоговогоПериода));
ПараметрыПолученияИтогов.Вставить("ДатаФормированияДопЛиста", НачалоКвартала(СтруктураПараметров.НачалоПериода));
ПараметрыПолученияИтогов.Вставить("СписокОрганизаций", СтруктураПараметров.СписокОрганизаций);
ПараметрыПолученияИтогов.Вставить("Организация", СтруктураПараметров.Организация);
ПараметрыПолученияИтогов.Вставить("ЗаписьДополнительногоЛиста", Ложь);
ИтогПоКнигеПродаж = ПолучитьИтогиЗаПериодКнигаПродаж(ПараметрыПолученияИтогов);
ИтогиРаздел91.ИтСтПродКПр22 = ИтогПоКнигеПродаж.СуммаБезНДС22;
ИтогиРаздел91.ИтСтПродКПр20Или18 = ИтогПоКнигеПродаж.СуммаБезНДС20Или18;
ИтогиРаздел91.ИтСтПродКПр20 = ИтогПоКнигеПродаж.СуммаБезНДС20;
ИтогиРаздел91.ИтСтПродКПр18 = ИтогПоКнигеПродаж.СуммаБезНДС18;
ИтогиРаздел91.ИтСтПродКПр10 = ИтогПоКнигеПродаж.СуммаБезНДС10;
ИтогиРаздел91.ИтСтПродКПр7 = ИтогПоКнигеПродаж.СуммаБезНДС7;
ИтогиРаздел91.ИтСтПродКПр5 = ИтогПоКнигеПродаж.СуммаБезНДС5;
ИтогиРаздел91.ИтСтПродКПр0 = ИтогПоКнигеПродаж.НДС0;
ИтогиРаздел91.СумНДСИтКПр22 = ИтогПоКнигеПродаж.НДС22;
ИтогиРаздел91.СумНДСИтКПр20Или18 = ИтогПоКнигеПродаж.НДС20Или18;
ИтогиРаздел91.СумНДСИтКПр20 = ИтогПоКнигеПродаж.НДС20;
ИтогиРаздел91.СумНДСИтКПр18 = ИтогПоКнигеПродаж.НДС18;
ИтогиРаздел91.СумНДСИтКПр10 = ИтогПоКнигеПродаж.НДС10;
ИтогиРаздел91.СумНДСИтКПр7 = ИтогПоКнигеПродаж.НДС7;
ИтогиРаздел91.СумНДСИтКПр5 = ИтогПоКнигеПродаж.НДС5;
ИтогиРаздел91.ИтСтПродОсвКПр = ИтогПоКнигеПродаж.СуммаСовсемБезНДС;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 8 Тогда
ИтогиРаздел91.ИтСтПродКПр20 = ИтогПоКнигеПродаж.СуммаБезНДС20Или18;
ИтогиРаздел91.СумНДСИтКПр20 = ИтогПоКнигеПродаж.НДС20Или18;
КонецЕсли;
КонецЕсли;
ДанныеОтчета = Новый Массив;
Пока ИтогПоПериодам.Следующий() Цикл
НомерЛиста = 0;
НомерОтображаемогоПериода = НомерОтображаемогоПериода + 1;
НалоговыйПериод = ПредставлениеПериода(
ИтогПоПериодам.НалоговыйПериод, КонецДня(ИтогПоПериодам.КонецНалоговогоПериода), "ФП = Истина");
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабличныйДокумент.АвтоМасштаб = Истина;
СтруктураПараметров.Вставить("СчетчикСегментовНалоговогоПериода", 1);
ИтогПоПериодамКорректировки = ИтогПоПериодам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ИтогПоПериодамКорректировки.Следующий() Цикл;
СтруктураСекций = Новый Структура();
ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(
ИтогПоПериодамКорректировки.КонецНалоговогоПериода);
СтруктураПараметров.Вставить("ВерсияПостановленияНДС1137", ВерсияПостановленияНДС1137);
ПрименяетсяПостановление1448 = УчетНДСПереопределяемый.ПрименяетсяПостановление1448(ИтогПоПериодамКорректировки.КонецНалоговогоПериода);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 9 Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж26");
СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
ИначеЕсли СтруктураПараметров.ВерсияПостановленияНДС1137 = 8 Тогда
Макет = ПолучитьОбщийМакет("КнигаПродаж2026");
СтруктураСекций.Вставить("СекцияСтрокаРНПТ", Макет.ПолучитьОбласть("СтрокаРНПТ"));
ИначеЕсли ПрименяетсяПостановление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"));
ОбщиеСведения.ДатаДопЛКнПрод = Строка(Формат(ИтогПоПериодамКорректировки.ДатаОформления, "ДЛФ=Д"));
Итого = Новый Структура(
"СтТовРубКоп22,СтТовРубКоп20,СтТовРубКоп18_20,СтТовРубКоп18,СтТовРубКоп10,СтТовРубКоп0,
|СумНДСРубКоп22,СумНДСРубКоп20,СумНДСРубКоп18_20,СумНДСРубКоп18,СумНДСРубКоп10,СтПродОсвНДСРубКоп");
Итого.СтТовРубКоп22 = ИтогЗаПериод.СуммаБезНДС22;
Итого.СтТовРубКоп20 = ИтогЗаПериод.СуммаБезНДС20;
Итого.СтТовРубКоп18_20 = ИтогЗаПериод.СуммаБезНДС20Или18;
Итого.СтТовРубКоп18 = ИтогЗаПериод.СуммаБезНДС18;
Итого.СтТовРубКоп10 = ИтогЗаПериод.СуммаБезНДС10;
Итого.СтТовРубКоп0 = ИтогЗаПериод.НДС0;
Итого.СумНДСРубКоп22 = ИтогЗаПериод.НДС22;
Итого.СумНДСРубКоп20 = ИтогЗаПериод.НДС20;
Итого.СумНДСРубКоп18_20 = ИтогЗаПериод.НДС20Или18;
Итого.СумНДСРубКоп18 = ИтогЗаПериод.НДС18;
Итого.СумНДСРубКоп10 = ИтогЗаПериод.НДС10;
Итого.СтПродОсвНДСРубКоп = ИтогЗаПериод.СуммаСовсемБезНДС;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 8 Тогда
Итого.СтТовРубКоп20 = ИтогЗаПериод.СуммаБезНДС20Или18;
Итого.СумНДСРубКоп20 = ИтогЗаПериод.НДС20Или18;
КонецЕсли;
Если ПрименяетсяПостановление1448 Тогда
Итого.Вставить("СтТовРубКоп7", ИтогЗаПериод.СуммаБезНДС7);
Итого.Вставить("СтТовРубКоп5", ИтогЗаПериод.СуммаБезНДС5);
Итого.Вставить("СумНДСРубКоп7", ИтогЗаПериод.НДС7);
Итого.Вставить("СумНДСРубКоп5", ИтогЗаПериод.НДС5);
КонецЕсли;
ОбщиеСведения.Итого = Итого;
КонецЕсли;
Если СтруктураПараметров.ГруппироватьПоКонтрагентам Тогда
СтруктураСекций.Вставить("СекцияКонтрагент", Макет.ПолучитьОбласть("Контрагент"));
СтруктураСекций.Вставить("СекцияВсегоКонтрагент", Макет.ПолучитьОбласть("ВсегоКонтрагент"));
КонецЕсли;
ПреобразоватьЗаписиДополнительногоЛистаКнигиПродаж(
СтруктураПараметров,
ИтогПоПериодамКорректировки,
?(СтруктураПараметров.Свойство("РеквизитыДокумента"),СтруктураПараметров.РеквизитыДокумента, ИтогЗаПериод),
ТабличныйДокумент,
СтруктураСекций,
?(СтруктураПараметров.Свойство("ТабличнаяЧасть"),СтруктураПараметров.ТабличнаяЧасть, Неопределено));
Если НЕ СтруктураПараметров.ЗаполнениеДекларации Тогда
СтрокаВсего.Параметры.Заполнить(ИтогЗаПериод);
ТабличныйДокумент.Вывести(СтрокаВсего);
КонецЕсли;
Если СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
Всего = Новый Структура(
"СтТовРубКоп22,СтТовРубКоп20,СтТовРубКоп18_20,СтТовРубКоп18,СтТовРубКоп10,СтТовРубКоп0,
|СумНДСРубКоп22,СумНДСРубКоп20,СумНДСРубКоп18_20,СумНДСРубКоп18,СумНДСРубКоп10,СтПродОсвНДСРубКоп");
Всего.СтТовРубКоп22 = ИтогЗаПериод.СуммаБезНДС22;
Всего.СтТовРубКоп20 = ИтогЗаПериод.СуммаБезНДС20;
Всего.СтТовРубКоп18_20 = ИтогЗаПериод.СуммаБезНДС20Или18;
Всего.СтТовРубКоп18 = ИтогЗаПериод.СуммаБезНДС18;
Всего.СтТовРубКоп10 = ИтогЗаПериод.СуммаБезНДС10;
Всего.СтТовРубКоп0 = ИтогЗаПериод.НДС0;
Всего.СумНДСРубКоп22 = ИтогЗаПериод.НДС22;
Всего.СумНДСРубКоп20 = ИтогЗаПериод.НДС20;
Всего.СумНДСРубКоп18_20 = ИтогЗаПериод.НДС20Или18;
Всего.СумНДСРубКоп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;
КонецЕсли;
Если ТабличныйДокумент.Области.Найти("СуммаБезНДС18Приложение") <> Неопределено Тогда
ТабличныйДокумент.Область("СуммаБезНДС18Приложение").Значение = ИтогЗаПериод.СуммаБезНДС18;
ТабличныйДокумент.Область("НДС18Приложение").Значение = ИтогЗаПериод.НДС18;
КонецЕсли;
Если СтруктураПараметров.ПравилаЗаполнения = "2025Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2026Кв1" Тогда
ТабличныйДокумент.Область("СуммаБезНДС7Приложение").Значение = ИтогЗаПериод.СуммаБезНДС7;
ТабличныйДокумент.Область("НДС7Приложение").Значение = ИтогЗаПериод.НДС7;
ТабличныйДокумент.Область("СуммаБезНДС5Приложение").Значение = ИтогЗаПериод.СуммаБезНДС5;
ТабличныйДокумент.Область("НДС5Приложение").Значение = ИтогЗаПериод.НДС5;
КонецЕсли;
Если СтруктураПараметров.ПравилаЗаполнения = "2026Кв1" Тогда
ТабличныйДокумент.Область("СуммаБезНДС22Приложение").Значение = ИтогЗаПериод.СуммаБезНДС22;
ТабличныйДокумент.Область("НДС22Приложение").Значение = ИтогЗаПериод.НДС22;
ТабличныйДокумент.Область("СуммаБезНДС20Или18Приложение").Значение = ИтогЗаПериод.СуммаБезНДС20Или18;
ТабличныйДокумент.Область("НДС20Или18Приложение").Значение = ИтогЗаПериод.НДС20Или18;
КонецЕсли;
ТабличныйДокумент.Область("СуммаБезНДС10Приложение").Значение = ИтогЗаПериод.СуммаБезНДС10;
ТабличныйДокумент.Область("НДС0Приложение").Значение = ИтогЗаПериод.НДС0;
ТабличныйДокумент.Область("НДС10Приложение").Значение = ИтогЗаПериод.НДС10;
ТабличныйДокумент.Область("СуммаСовсемБезНДСПриложение").Значение = ИтогЗаПериод.СуммаСовсемБезНДС;
Иначе
ЗаписатьИтогиВПервыйСегментРаздела91(СтруктураПараметров, ИтогЗаПериод);
КонецЕсли;
ИначеЕсли СтруктураПараметров.СчетчикСтрокТекущегоСегмента = 0
И СтруктураПараметров.СчетчикСтрокДопЛиста <> 0 Тогда
// Количество строк в сегменте совпало с предельным,
// необходимо добавить строку итогов в записанный ранее сегмент табличного документа.
ЗаписатьИтогиВПервыйСегментРаздела91(СтруктураПараметров, ИтогЗаПериод);
КонецЕсли;
ИтогиРаздел91.СтПродВсП1Р9_22 = ИтогЗаПериод.СуммаБезНДС22;
ИтогиРаздел91.СтПродВсП1Р9_20Или18 = ИтогЗаПериод.СуммаБезНДС20Или18;
ИтогиРаздел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_22 = ИтогЗаПериод.НДС22;
ИтогиРаздел91.СумНДСВсП1Р9_20Или18 = ИтогЗаПериод.НДС20Или18;
ИтогиРаздел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Вс = ИтогЗаПериод.СуммаСовсемБезНДС;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 8 Тогда
ИтогиРаздел91.СтПродВсП1Р9_20 = ИтогЗаПериод.СуммаБезНДС20Или18;
ИтогиРаздел91.СумНДСВсП1Р9_20 = ИтогЗаПериод.НДС20Или18;
КонецЕсли;
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению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 Тогда
Записи.Колонки.Добавить("СвРегНом", Новый ОписаниеТипов("Массив"));
Иначе
Записи.Колонки.Добавить("НомерТД", Новый ОписаниеТипов("Массив"));
КонецЕсли;
Записи.Колонки.Добавить("ВидТов", Новый ОписаниеТипов("Массив"));
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 8 Тогда
Записи.Колонки.Добавить("СтТовРубКоп22", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СумНДСРубКоп22", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СтТовРубКоп18_20", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СумНДСРубКоп18_20", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Записи.Колонки.Добавить("СвСчФПродРанВыст", Новый ОписаниеТипов("Массив"));
КонецЕсли;
Если СтруктураПараметров.ФормироватьДополнительныеЛисты Тогда
ОбщиеСведения = Новый Структура("НомерДопЛКнПрод,Период,ОтчетГод,ДатаДопЛКнПрод,Итого,Всего");
СтруктураПараметров.Вставить("ДанныеОтчета");
Иначе
ОбщиеСведения = Новый Структура(
"СтТовРубКоп22,СтТовРубКоп20,СтТовРубКоп18,СтТовРубКоп10,СтТовРубКоп0,
|СумНДСРубКоп22,СумНДСРубКоп20,СумНДСРубКоп18,СумНДСРубКоп10,СтПродОсвНДСРубКоп");
Если ПрименяетсяПостановление1448 Тогда
ОбщиеСведения.Вставить("СтТовРубКоп7");
ОбщиеСведения.Вставить("СтТовРубКоп5");
ОбщиеСведения.Вставить("СумНДСРубКоп7");
ОбщиеСведения.Вставить("СумНДСРубКоп5");
КонецЕсли;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 8 Тогда
ОбщиеСведения.Вставить("СтТовРубКоп22", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
ОбщиеСведения.Вставить("СумНДСРубКоп22", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
ОбщиеСведения.Вставить("СтТовРубКоп18_20", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
ОбщиеСведения.Вставить("СумНДСРубКоп18_20", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
КонецЕсли
КонецЕсли;
СтруктураПараметров.Вставить("Записи", Записи);
СтруктураПараметров.Вставить("ОбщиеСведения", ОбщиеСведения);
Иначе
Раздел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"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2026Кв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.Колонки.Добавить("ДополнительныеСведения");
Если СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ПравилаЗаполнения = "2026Кв1" Тогда
Раздел9.Колонки.Добавить("СтоимПродСФ20Или18", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СтоимПродСФ22", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СумНДССФ20Или18", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел9.Колонки.Добавить("СумНДССФ22", ОбщегоНазначения.ОписаниеТипаЧисло(19, 2));
Раздел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"
Или СтруктураПараметров.ПравилаЗаполнения = "2026Кв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");
КонецЕсли;
Если СтруктураПараметров.ЗаполнениеДекларации
И СтруктураПараметров.ПравилаЗаполнения = "2026Кв1" Тогда
ИтогиРаздел9.Вставить("СтПродБезНДС20Или18");
ИтогиРаздел9.Вставить("СтПродБезНДС22");
ИтогиРаздел9.Вставить("СумНДСВсКПр20Или18");
ИтогиРаздел9.Вставить("СумНДСВсКПр22");
ИтогиРаздел91.Вставить("ИтСтПродКПр22");
ИтогиРаздел91.Вставить("ИтСтПродКПр20Или18");
ИтогиРаздел91.Вставить("СумНДСИтКПр22");
ИтогиРаздел91.Вставить("СумНДСИтКПр20Или18");
ИтогиРаздел91.Вставить("СтПродВсП1Р9_22");
ИтогиРаздел91.Вставить("СтПродВсП1Р9_20Или18");
ИтогиРаздел91.Вставить("СумНДСВсП1Р9_22");
ИтогиРаздел91.Вставить("СумНДСВсП1Р9_20Или18");
КонецЕсли;
СтруктураПараметров.Вставить("ИтогиРаздел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;
ИтогЗаПериод.СуммаБезНДС20Или18 = ИтогЗаПериод.СуммаБезНДС20Или18 + ЗаписьКниги.СуммаБезНДС20Или18;
ИтогЗаПериод.НДС20Или18 = ИтогЗаПериод.НДС20Или18 + ЗаписьКниги.НДС20Или18;
ИтогЗаПериод.СуммаБезНДС22 = ИтогЗаПериод.СуммаБезНДС22 + ЗаписьКниги.СуммаБезНДС22;
ИтогЗаПериод.НДС22 = ИтогЗаПериод.НДС22 + ЗаписьКниги.НДС22;
ИтогЗаПериод.СуммаСовсемБезНДС = ИтогЗаПериод.СуммаСовсемБезНДС + ЗаписьКниги.СуммаСовсемБезНДС;
КонецЦикла; // ЗаписьКниги.Следующий()
КонецЦикла; // РазделениеПоДоговоруДляАвансов.Следующий()
КонецЦикла; // ЗаписьПоСФ.Следующий()
ТабличныйДокумент.ЗакончитьГруппуСтрок();
СтруктураСекций.СекцияВсегоКонтрагент.Параметры.Заполнить(ИтогПоКонтрагенту);
ТабличныйДокумент.Вывести(СтруктураСекций.СекцияВсегоКонтрагент);
// Группировку по контрагенту не разрываем на разные сегменты,
// поэтому количество записей в сегменте может быть чуть больше, чем предельное количество.
Если СчетчикСтрокТекущегоСегмента >= СтруктураПараметров.ПредельноеКоличествоЗаписейВРазделеДекларацииПоНДС Тогда
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
// В заголовке в качестве номера порции выводим порцию в пределах налогового периода.
ЗаголовокЛиста = УчетНДС.СформироватьЗаголовокЛиста(НазваниеРаздела, СчетчикСегментовНалоговогоПериода);
// В общую таблицу передаем в качестве номера раздела глобальный счетчик сегментов (с учетом основных разделов книги).
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ЭтоДопЛист", Истина);
ПроверкаКонтрагентов.ДобавитьРазделОтчета(
СтруктураПараметров,
ЗаголовокЛиста,
СчетчикСегментов,
ТабличныйДокумент,
ДополнительныеПараметры);
// Очистим табличный документ и таблицу
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(СтруктураСекций.СтрокиДляПовтора);
// Обнулим счетчик текущего сегмента
СчетчикСтрокТекущегоСегмента = 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;
ИтогЗаПериод.СуммаБезНДС20Или18 = ИтогЗаПериод.СуммаБезНДС20Или18 + ДетальнаяЗапись.СуммаБезНДС20Или18;
ИтогЗаПериод.НДС20Или18 = ИтогЗаПериод.НДС20Или18 + ДетальнаяЗапись.НДС20Или18;
ИтогЗаПериод.СуммаБезНДС22 = ИтогЗаПериод.СуммаБезНДС22 + ДетальнаяЗапись.СуммаБезНДС22;
ИтогЗаПериод.НДС22 = ИтогЗаПериод.НДС22 + ДетальнаяЗапись.НДС22;
ИтогЗаПериод.СуммаСовсемБезНДС = ИтогЗаПериод.СуммаСовсемБезНДС + ДетальнаяЗапись.СуммаСовсемБезНДС;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 8 Тогда
ИтогЗаПериод.СуммаБезНДС20 = ИтогЗаПериод.СуммаБезНДС20Или18;
ИтогЗаПериод.НДС20 = ИтогЗаПериод.НДС20Или18;
КонецЕсли;
КонецЦикла;
Иначе
Если СтруктураПараметров.ЗаполнениеДокумента
И НЕ СтруктураПараметров.ФорматПоПостановлению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;
ИтогЗаПериод.СуммаБезНДС22 = ИтогЗаПериод.СуммаБезНДС22 + ЗаписьКниги.СуммаБезНДС22;
ИтогЗаПериод.НДС22 = ИтогЗаПериод.НДС22 + ЗаписьКниги.НДС22;
ИтогЗаПериод.СуммаБезНДС20Или18 = ИтогЗаПериод.СуммаБезНДС20Или18 + ЗаписьКниги.СуммаБезНДС20Или18;
ИтогЗаПериод.НДС20Или18 = ИтогЗаПериод.НДС20Или18 + ЗаписьКниги.НДС20Или18;
ИтогЗаПериод.СуммаБезНДС20 = ИтогЗаПериод.СуммаБезНДС20 + ЗаписьКниги.СуммаБезНДС20;
ИтогЗаПериод.НДС20 = ИтогЗаПериод.НДС20 + ЗаписьКниги.НДС20;
ИтогЗаПериод.СуммаБезНДС7 = ИтогЗаПериод.СуммаБезНДС7 + ЗаписьКниги.СуммаБезНДС7;
ИтогЗаПериод.НДС7 = ИтогЗаПериод.НДС7 + ЗаписьКниги.НДС7;
ИтогЗаПериод.СуммаБезНДС5 = ИтогЗаПериод.СуммаБезНДС5 + ЗаписьКниги.СуммаБезНДС5;
ИтогЗаПериод.НДС5 = ИтогЗаПериод.НДС5 + ЗаписьКниги.НДС5;
ИтогЗаПериод.СуммаСовсемБезНДС = ИтогЗаПериод.СуммаСовсемБезНДС + ЗаписьКниги.СуммаСовсемБезНДС;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 8 Тогда
ИтогЗаПериод.СуммаБезНДС20 = ИтогЗаПериод.СуммаБезНДС20Или18;
ИтогЗаПериод.НДС20 = ИтогЗаПериод.НДС20Или18;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла; // РазделениеПоДоговоруДляАвансов.Следующий()
КонецЦикла; // ЗаписьПоСФ.Следующий()
КонецЕсли;
УправлениеКолонтитулами.УстановитьКолонтитулы(ТабличныйДокумент);
Если НЕ СтруктураПараметров.ЗаполнениеДокумента Тогда
СтруктураПараметров.СчетчикСтрокДопЛиста = Счетчик;
СтруктураПараметров.СчетчикСтрокТекущегоСегмента = СчетчикСтрокТекущегоСегмента;
СтруктураПараметров.СчетчикСегментов = СчетчикСегментов;
СтруктураПараметров.СчетчикСегментовНалоговогоПериода = СчетчикСегментовНалоговогоПериода;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьСтрокуКнигиПродаж(СтруктураПараметров, Секция, ЗаписьКниги, НомерСтроки, ДополнительнаяИнформация, ДетальнаяЗапись = Неопределено)
Если ДетальнаяЗапись <> Неопределено Тогда
ПараметрыЗаполнения = ДетальнаяЗапись;
Иначе
ПараметрыЗаполнения = ЗаписьКниги;
КонецЕсли;
ЗаполнитьЗначенияСвойств(Секция, ПараметрыЗаполнения);
// Универсальная структура для заполнения книги по разным версиям постановления.
СоставСтроки = Новый Структура;
// В соответствии с письмом ФНС России от 16.01.2018 N СД-4-3/480@ операции по реализации
// товаров п.8 ст.161 НК РФ отражаются с прочерками "-" в графах 13б, 17.
Если ПараметрыЗаполнения.Событие = Перечисления.СобытияПоНДСПродажи.НалогИсчисляетПокупатель Тогда
ПараметрВсегоПродаж = "-";
ПараметрНДС22 = "-";
ПараметрНДС20Или18 = "-";
ПараметрНДС20 = "-";
ПараметрНДС18 = "-";
Иначе
ПараметрВсегоПродаж = ЗаписьКниги.ВсегоПродаж;
ПараметрНДС22 = ЗаписьКниги.НДС22;
ПараметрНДС20Или18 = ЗаписьКниги.НДС20Или18;
ПараметрНДС20 = ЗаписьКниги.НДС20;
ПараметрНДС18 = ЗаписьКниги.НДС18;
КонецЕсли;
СоставСтроки.Вставить("ВсегоПродаж", ПараметрВсегоПродаж);
СоставСтроки.Вставить("СуммаБезНДС22", ЗаписьКниги.СуммаБезНДС22);
СоставСтроки.Вставить("НДС22", ПараметрНДС22);
СоставСтроки.Вставить("СуммаБезНДС20Или18", ЗаписьКниги.СуммаБезНДС20Или18);
СоставСтроки.Вставить("НДС20Или18", ПараметрНДС20Или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 = "";
КонецЕсли;
СоставСтроки.Вставить("Валюта",
?(ЗначениеЗаполнено(ПараметрыЗаполнения.Валюта),
"" + ПараметрыЗаполнения.Валюта + ", " + ПараметрыЗаполнения.ВалютаКод, ""));
СоставСтроки.Вставить("ВсегоПродажВВалюте",
?(ЗначениеЗаполнено(ПараметрыЗаполнения.Валюта), ПараметрыЗаполнения.ВсегоПродажВВалюте, ""));
МассивДокПдтвОпл = Новый Массив(); // Массив документов оплаты НДС для декларации с 1 кв 2015 года
ТекстОплаты = "";
СписокДатОплат = Новый СписокЗначений();
ТекстОплатыСНомером = "";
ТекстНомерОтДатаОплаты = "";
СписокНомеровИДатОплат = Новый СписокЗначений();
АвансовыеСчетаФактурыМассив = Новый Массив();
СвЧастСчФ = Новый Массив();
СвСчФПродРанВыст = Новый Массив();
АвансовыеСчетаФактурыТекст = "";
СчетаФактуры = Новый Массив();
Если ДетальнаяЗапись = Неопределено Тогда
// Графа 11а
ЗаполнитьСведенияОСчетеФактуреНаАванс(
АвансовыеСчетаФактурыМассив,
АвансовыеСчетаФактурыТекст,
ЗаписьКниги,
СвСчФПродРанВыст,
СвЧастСчФ);
Если ЗначениеЗаполнено(ЗаписьКниги.ДатаОплаты) Тогда
Если СписокДатОплат.НайтиПоЗначению(Формат(ЗаписьКниги.ДатаОплаты, "ДФ=dd.MM.yyyy")) = Неопределено Тогда
ТекстОплаты = ТекстОплаты + ?(НЕ ЗначениеЗаполнено(ТекстОплаты), "", "," + Символы.ПС)
+ Формат(ЗаписьКниги.ДатаОплаты, "ДФ=dd.MM.yyyy");
СписокДатОплат.Добавить(Формат(ЗаписьКниги.ДатаОплаты, "ДФ=dd.MM.yyyy"));
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ЗаписьКниги.НомерДокументаОплаты) Тогда
НомерДатаОплаты = СтрШаблон(НСтр("ru='%1;%2'"),
ЗаписьКниги.НомерДокументаОплаты, Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
НомерОтДатаОплаты = СтрШаблон(НСтр("ru='%1 от %2'"),
ЗаписьКниги.НомерДокументаОплаты, Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy"));
Если СписокНомеровИДатОплат.НайтиПоЗначению(НомерДатаОплаты) = Неопределено Тогда
ТекстОплатыСНомером = ТекстОплатыСНомером
+ ?(НЕ ЗначениеЗаполнено(ТекстОплатыСНомером), "", "," + Символы.ПС) + НомерДатаОплаты;
ТекстНомерОтДатаОплаты = ТекстНомерОтДатаОплаты
+ ?(НЕ ЗначениеЗаполнено(ТекстНомерОтДатаОплаты), "", ";" + Символы.ПС) + НомерОтДатаОплаты;
СписокНомеровИДатОплат.Добавить(НомерДатаОплаты);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
СтруктураДокПдтвОпл = Новый Структура("НомДокПдтвОпл,ДатаДокПдтвОпл");
СтруктураДокПдтвОпл.НомДокПдтвОпл = ЗаписьКниги.НомерДокументаОплаты;
Иначе
СтруктураДокПдтвОпл = Новый Структура("НомерДокПдтвОпл,ДатаДокПдтвОпл");
СтруктураДокПдтвОпл.НомерДокПдтвОпл = ЗаписьКниги.НомерДокументаОплаты;
КонецЕсли;
СтруктураДокПдтвОпл.ДатаДокПдтвОпл = Формат(ЗаписьКниги.ДатаДокументаОплаты, "ДФ=dd.MM.yyyy");
МассивДокПдтвОпл.Добавить(СтруктураДокПдтвОпл);
КонецЕсли;
КонецЕсли;
СчетаФактуры.Добавить(ЗаписьКниги.СчетФактура);
Иначе
// Получаем новую выборку для обхода, ДетальнуюЗапись не используем, она всегда спозиционирована на первую строку.
СтрокаЗаписи = ЗаписьКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока СтрокаЗаписи.Следующий() Цикл
// Графа 11а
ЗаполнитьСведенияОСчетеФактуреНаАванс(
АвансовыеСчетаФактурыМассив,
АвансовыеСчетаФактурыТекст,
СтрокаЗаписи,
СвСчФПродРанВыст,
СвЧастСчФ);
Если ЗначениеЗаполнено(СтрокаЗаписи.ДатаОплаты) Тогда
Если СписокДатОплат.НайтиПоЗначению(Формат(СтрокаЗаписи.ДатаОплаты, "ДФ=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];
СоставСтроки.Вставить("РегНомер", ПервыйРНПТ.РегНомПросл);
СоставСтроки.Вставить("КолПрослеж", ПервыйРНПТ.КолТовПросл);
СоставСтроки.Вставить("СтоимПрослеж", ПервыйРНПТ.СтоимТовПросл);
СоставСтроки.Вставить("ЕдПрослеж", ПервыйРНПТ.ОКЕИ);
СтруктураПараметров.Вставить("МассивСвРегНом", МассивСвРегНом);
Иначе
СоставСтроки.Вставить("РегНомер", "");
СоставСтроки.Вставить("КолПрослеж", "");
СоставСтроки.Вставить("СтоимПрослеж", "");
СоставСтроки.Вставить("ЕдПрослеж", "");
СтруктураПараметров.Вставить("МассивСвРегНом", Неопределено);
КонецЕсли;
СоставСтроки.Вставить("КодВидаТовара", СтрокаКодВидаТовара);
МассивКодВидаТовара = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаКодВидаТовара, ";");
ЗаполнитьЗначенияСвойств(Секция, СоставСтроки);
Если СтруктураПараметров.ЗаполнениеДекларации Тогда
ДополнительныеСведения = Новый Структура("Контрагент,ПредставлениеКонтрагента,Документ,ПредставлениеДокумента");
СоставСтроки.Вставить("НомерПор", НомерСтроки);
СоставСтроки.Вставить("НомСчФПрод", ПредставлениеСФ.Номер);
СоставСтроки.Вставить("ДатаСчФПрод", ПредставлениеСФ.Дата);
СоставСтроки.Вставить("НомИспрСчФ", ПредставлениеСФ.НомерИсправленный);
СоставСтроки.Вставить("ДатаИспрСчФ", ПредставлениеСФ.ДатаИсправленный);
СоставСтроки.Вставить("НомКСчФПрод", ПредставлениеСФ.НомерКорректировочный);
СоставСтроки.Вставить("ДатаКСчФПрод", ПредставлениеСФ.ДатаКорректировочный);
СоставСтроки.Вставить("НомИспрКСчФ", ПредставлениеСФ.НомерИсправленныйКорректировочный);
СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
СоставСтроки.Вставить("ОКВ", Строка(ПараметрыЗаполнения.ВалютаКод));
МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрыЗаполнения.КодВидаОперации, ";");
СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
СоставСтроки.Вставить("ДокПдтвОпл", МассивДокПдтвОпл);
// Сведения о покупателе
МассивСвПок = Новый Массив();
Если СоставСтроки.Свойство("ПокупательИНН")
И (ЗначениеЗаполнено(СоставСтроки.ПокупательИНН)
ИЛИ ЗначениеЗаполнено(СоставСтроки.ПокупательКПП)) Тогда
СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПараметрыЗаполнения.ПокупательИНН, ПараметрыЗаполнения.ПокупательКПП);
СтруктураРеквизитовКонтрагента.Вставить("Контрагент", ПараметрыЗаполнения.Контрагент);
СтруктураРеквизитовКонтрагента.Вставить("КонтрагентНаименование", ПараметрыЗаполнения.Покупатель);
МассивСвПок.Добавить(СтруктураРеквизитовКонтрагента);
КонецЕсли;
ДополнительныеСведения.Контрагент = ПараметрыЗаполнения.Контрагент;
ДополнительныеСведения.ПредставлениеКонтрагента = ПараметрыЗаполнения.Покупатель;
СоставСтроки.Вставить("СвПокуп", МассивСвПок);
// Сведения о посреднике
Если СоставСтроки.Свойство("Посредник")
И (ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникИНН)
ИЛИ ЗначениеЗаполнено(ПараметрыЗаполнения.ПосредникКПП)) Тогда
СтруктураРеквизитовПосредника = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(ПараметрыЗаполнения.ПосредникИНН, ПараметрыЗаполнения.ПосредникКПП);
СтруктураРеквизитовПосредника.Вставить("Контрагент", ПараметрыЗаполнения.ПосредникСсылка);
СтруктураРеквизитовПосредника.Вставить("КонтрагентНаименование", СоставСтроки.Посредник);
СоставСтроки.Вставить("СвПос", СтруктураРеквизитовПосредника);
КонецЕсли;
СоставСтроки.Вставить("СтоимПродСФВ", ПараметрыЗаполнения.ВсегоПродажВВалюте);
СоставСтроки.Вставить("СтоимПродСФ", ЗаписьКниги.ВсегоПродаж);
СоставСтроки.Вставить("СтоимПродСФ22", ЗаписьКниги.СуммаБезНДС22);
СоставСтроки.Вставить("СтоимПродСФ20Или18", ЗаписьКниги.СуммаБезНДС20Или18);
СоставСтроки.Вставить("СтоимПродСФ20", ЗаписьКниги.СуммаБезНДС20);
СоставСтроки.Вставить("СтоимПродСФ18", ЗаписьКниги.СуммаБезНДС18);
СоставСтроки.Вставить("СтоимПродСФ10", ЗаписьКниги.СуммаБезНДС10);
СоставСтроки.Вставить("СтоимПродСФ0", ЗаписьКниги.НДС0);
СоставСтроки.Вставить("СтоимПродСФ7", ЗаписьКниги.СуммаБезНДС7);
СоставСтроки.Вставить("СтоимПродСФ5", ЗаписьКниги.СуммаБезНДС5);
СоставСтроки.Вставить("СумНДССФ22", ЗаписьКниги.НДС22);
СоставСтроки.Вставить("СумНДССФ20Или18", ЗаписьКниги.НДС20Или18);
СоставСтроки.Вставить("СумНДССФ20", ЗаписьКниги.НДС20);
СоставСтроки.Вставить("СумНДССФ18", ЗаписьКниги.НДС18);
СоставСтроки.Вставить("СумНДССФ10", ЗаписьКниги.НДС10);
СоставСтроки.Вставить("СумНДССФ7", ЗаписьКниги.НДС7);
СоставСтроки.Вставить("СумНДССФ5", ЗаписьКниги.НДС5);
Если СтруктураПараметров.ПравилаЗаполнения = "2026Кв1" Тогда
СоставСтроки.Вставить("СтоимПродСФ20", ЗаписьКниги.СуммаБезНДС20Или18);
СоставСтроки.Вставить("СумНДССФ20", ЗаписьКниги.НДС20Или18);
КонецЕсли;
СоставСтроки.Вставить("СтоимПродОсв", ЗаписьКниги.СуммаСовсемБезНДС);
Если ЗначениеЗаполнено(ПредставлениеСФ.НомерКорректировочный) Тогда
ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
НСтр("ru='Корректировочный счет-фактура № %1 от %2 на сумму %3 %4'"),
ПредставлениеСФ.НомерКорректировочный,
ПредставлениеСФ.ДатаКорректировочный,
Формат(ЗаписьКниги.ВсегоПродаж, "ЧДЦ=2; ЧН="),
ПараметрыЗаполнения.ВалютаНаименование);
Иначе
ДополнительныеСведения.ПредставлениеДокумента = СтрШаблон(
НСтр("ru='%1 на сумму %2 %3'"),
ПредставлениеСФ.Представление,
Формат(ЗаписьКниги.ВсегоПродаж, "ЧДЦ=2; ЧН="),
ПараметрыЗаполнения.ВалютаНаименование);
КонецЕсли;
ДополнительныеСведения.Документ = СоставСтроки.СчетФактура;
СоставСтроки.Вставить("ДополнительныеСведения", ДополнительныеСведения);
Если СтруктураПараметров.ПравилаЗаполнения = "2019Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2020Кв4"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2026Кв1" Тогда
СоставСтроки.Вставить("КодВидТовар", МассивКодВидаТовара);
КонецЕсли;
Если СтруктураПараметров.ПравилаЗаполнения = "2021Кв3"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2023Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2025Кв1"
ИЛИ СтруктураПараметров.ПравилаЗаполнения = "2026Кв1" Тогда
СоставСтроки.Вставить("СвРегНом", МассивСвРегНом);
КонецЕсли;
Если СтруктураПараметров.ПравилаЗаполнения = "2026Кв1" Тогда
СоставСтроки.Вставить("СвЧастСчФ", СвЧастСчФ);
КонецЕсли;
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел91.Добавить();
Иначе
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел9.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
ИначеЕсли СтруктураПараметров.ЗаполнениеДокумента
И СтруктураПараметров.ФорматПоПостановлению735 Тогда
СоставСтроки.Вставить("НомПП", НомерСтроки);
СоставСтроки.Вставить("НомерСчФ", ПредставлениеСФ.Номер);
СоставСтроки.Вставить("ДатаСчФ", ПредставлениеСФ.Дата);
СоставСтроки.Вставить("НомИспрСчФ", ПредставлениеСФ.НомерИсправленный);
СоставСтроки.Вставить("ДатаИспрСчФ", ПредставлениеСФ.ДатаИсправленный);
СоставСтроки.Вставить("НомерКСчФ", ПредставлениеСФ.НомерКорректировочный);
СоставСтроки.Вставить("ДатаКСчФ", ПредставлениеСФ.ДатаКорректировочный);
СоставСтроки.Вставить("НомИспрКСчФ", ПредставлениеСФ.НомерИсправленныйКорректировочный);
СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 5
И Не ЗначениеЗаполнено(ПараметрыЗаполнения.ВалютаКод) Тогда
ВалютаКод = "643";
Иначе
ВалютаКод = Строка(ПараметрыЗаполнения.ВалютаКод);
КонецЕсли;
СоставСтроки.Вставить("КодОКВ", ВалютаКод);
СоставСтроки.Вставить("ВидТов", МассивКодВидаТовара);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 8 Тогда
СоставСтроки.Вставить("СвСчФПродРанВыст", СвСчФПродРанВыст);
СоставСтроки.Вставить("СтТовРубКоп22", ЗаписьКниги.СуммаБезНДС22);
СоставСтроки.Вставить("СумНДСРубКоп22", ЗаписьКниги.НДС22);
СоставСтроки.Вставить("СумНДСРубКоп18_20", ЗаписьКниги.НДС20Или18);
СоставСтроки.Вставить("СтТовРубКоп18_20", ЗаписьКниги.СуммаБезНДС20Или18);
КонецЕсли;
// Сведения о покупателе
СтруктураРеквизитовКонтрагента = Новый Структура;
Если СоставСтроки.Свойство("ПокупательИНН")
И НЕ ПустаяСтрока(СоставСтроки.ПокупательИНН) Тогда
СтруктураРеквизитовКонтрагента = УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
ПараметрыЗаполнения.ПокупательИНН, ПараметрыЗаполнения.ПокупательКПП);
Если СтруктураРеквизитовКонтрагента.Свойство("ИННФЛ") Тогда
СоставСтроки.Вставить("ИННФЛ", СтруктураРеквизитовКонтрагента.ИННФЛ);
Иначе
СоставСтроки.Вставить("ИННЮЛ", СтруктураРеквизитовКонтрагента.ИННЮЛ);
СоставСтроки.Вставить("КПП", СтруктураРеквизитовКонтрагента.КПП);
КонецЕсли;
КонецЕсли;
СоставСтроки.Вставить("НаимПок", ПараметрыЗаполнения.Покупатель);
МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрыЗаполнения.КодВидаОперации, ";");
СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
// Сведения о посреднике
Если СоставСтроки.Свойство("Посредник")
И НЕ ПустаяСтрока(ПараметрыЗаполнения.ПосредникИНН) Тогда
СоставСтроки.Вставить("СвПосредн",
УчетНДС.ПолучитьСтруктуруРеквизитовКонтрагента(
ПараметрыЗаполнения.ПосредникИНН, ПараметрыЗаполнения.ПосредникКПП, СоставСтроки.Посредник));
КонецЕсли;
СоставСтроки.Вставить("СтТовУчНалВсего", ПараметрыЗаполнения.ВсегоПродажВВалюте);
СоставСтроки.Вставить("СтТовУчНалРубКоп", ЗаписьКниги.ВсегоПродаж);
СоставСтроки.Вставить("СтТовРубКоп20", ЗаписьКниги.СуммаБезНДС20);
СоставСтроки.Вставить("СтТовРубКоп18", ЗаписьКниги.СуммаБезНДС18);
СоставСтроки.Вставить("СтТовРубКоп10", ЗаписьКниги.СуммаБезНДС10);
СоставСтроки.Вставить("СтТовРубКоп7", ЗаписьКниги.СуммаБезНДС7);
СоставСтроки.Вставить("СтТовРубКоп5", ЗаписьКниги.СуммаБезНДС5);
СоставСтроки.Вставить("СтТовРубКоп0", ЗаписьКниги.НДС0);
СоставСтроки.Вставить("СумНДСРубКоп20", ЗаписьКниги.НДС20);
СоставСтроки.Вставить("СумНДСРубКоп18", ЗаписьКниги.НДС18);
СоставСтроки.Вставить("СумНДСРубКоп10", ЗаписьКниги.НДС10);
СоставСтроки.Вставить("СумНДСРубКоп7", ЗаписьКниги.НДС7);
СоставСтроки.Вставить("СумНДСРубКоп5", ЗаписьКниги.НДС5);
СоставСтроки.Вставить("СтПродОсвНДСРубКоп", ЗаписьКниги.СуммаСовсемБезНДС);
СоставСтроки.Вставить("СвДокПдтвОпл", МассивДокПдтвОпл);
Если ЗначениеЗаполнено(МассивСвРегНом) Тогда
СоставСтроки.Вставить("СвРегНом", МассивСвРегНом);
КонецЕсли;
СтрокаРаздела = СтруктураПараметров.Записи.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
КонецЕсли;
КонецПроцедуры
// Не используется начиная с вступления в силу постановление № 981 (с 1 октября 2017 года).
Процедура ЗаполнитьСтрокуКнигиПродажСводныйКомиссионный(ЗаписиКниги, СтруктураПараметров, Секция, НомерСтроки)
ЗаписьКнигиДетальная = ЗаписиКниги.Выбрать(ОбходРезультатаЗапроса.Прямой);
КоличествоЗаписей = ЗаписьКнигиДетальная.Количество();
ТекущаяЗапись = 0;
ВсегоПродаж = 0;
ВсегоПродажВВалюте = 0;
СуммаБезНДС18 = 0;
НДС18 = 0;
СуммаБезНДС10 = 0;
НДС10 = 0;
НДС0 = 0;
СуммаСовсемБезНДС = 0;
Покупатель = "";
Графа8 = "";
ВалютаКод = "";
КодВидаОперации = "";
ТекстОплатыСНомером = "";
ТекстНомерОтДатаОплаты = "";
МассивДокПдтвОпл = Новый Массив(); // Массив документов оплаты НДС для декларации с 1 кв 2015 года
МассивСвПок = Новый Массив(); // Сведения о покупателе
ДополнительныеСведения = Новый Структура("Контрагент,ПредставлениеКонтрагента,Документ,ПредставлениеДокумента");
Пока ЗаписьКнигиДетальная.Следующий() Цикл
ЗаполнитьЗначенияСвойств(Секция, ЗаписьКнигиДетальная);
ТекущаяЗапись = ТекущаяЗапись + 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; ЧН="),
ВалютаНаименование);
СоставСтроки.Вставить("ДополнительныеСведения", ДополнительныеСведения);
СоставСтроки.Вставить("НомерПор", НомерСтроки);
СоставСтроки.Вставить("НомСчФПрод", ПредставлениеСФ.Номер);
СоставСтроки.Вставить("ДатаСчФПрод", ПредставлениеСФ.Дата);
СоставСтроки.Вставить("НомИспрСчФ", ПредставлениеСФ.НомерИсправленный);
СоставСтроки.Вставить("ДатаИспрСчФ", ПредставлениеСФ.ДатаИсправленный);
СоставСтроки.Вставить("НомКСчФПрод", ПредставлениеСФ.НомерКорректировочный);
СоставСтроки.Вставить("ДатаКСчФПрод", ПредставлениеСФ.ДатаКорректировочный);
СоставСтроки.Вставить("НомИспрКСчФ", ПредставлениеСФ.НомерИсправленныйКорректировочный);
СоставСтроки.Вставить("ДатаИспрКСчФ", ПредставлениеСФ.ДатаИсправленныйКорректировочный);
СоставСтроки.Вставить("ОКВ", Строка(ВалютаКод));
МассивКодВидОпер = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(КодВидаОперации, ";");
СоставСтроки.Вставить("КодВидОпер", МассивКодВидОпер);
СоставСтроки.Вставить("ДокПдтвОпл", МассивДокПдтвОпл);
СоставСтроки.Вставить("СвПокуп", МассивСвПок);
СоставСтроки.Вставить("СтоимПродСФВ", ВсегоПродажВВалюте);
СоставСтроки.Вставить("СтоимПродСФ", ВсегоПродаж);
СоставСтроки.Вставить("СтоимПродСФ22", 0);
СоставСтроки.Вставить("СтоимПродСФ20", 0);
СоставСтроки.Вставить("СтоимПродСФ18", СуммаБезНДС18);
СоставСтроки.Вставить("СтоимПродСФ10", СуммаБезНДС10);
СоставСтроки.Вставить("СтоимПродСФ0", НДС0);
СоставСтроки.Вставить("СумНДССФ22", 0);
СоставСтроки.Вставить("СумНДССФ20", 0);
СоставСтроки.Вставить("СумНДССФ18", НДС18);
СоставСтроки.Вставить("СумНДССФ10", НДС10);
СоставСтроки.Вставить("СтоимПродОсв", СуммаСовсемБезНДС);
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел91.Добавить();
Иначе
СтрокаРаздела = СтруктураПараметров.ТаблицаРаздел9.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаРаздела, СоставСтроки);
КонецЕсли;
КонецПроцедуры
Процедура УстановитьПараметрыЗапросаКнигиПродаж(Запрос, СтруктураПараметров)
Запрос.УстановитьПараметр("НачалоПериода", СтруктураПараметров.НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецДня(СтруктураПараметров.КонецПериода));
Запрос.УстановитьПараметр("Организация", СтруктураПараметров.СписокОрганизаций);
Запрос.УстановитьПараметр("ОтбиратьПоКонтрагенту",
НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме И СтруктураПараметров.ОтбиратьПоКонтрагенту);
Запрос.УстановитьПараметр("КонтрагентДляОтбора", СтруктураПараметров.КонтрагентДляОтбора);
Запрос.УстановитьПараметр("ВыводитьПродавцовПоАвансам", СтруктураПараметров.ВыводитьПродавцовПоАвансам);
Запрос.УстановитьПараметр("ВалютаРегУчета", ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета());
Запрос.УстановитьПараметр("НаименованиеВалютыРубль", НСтр("ru='руб.'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("НачалоПримененияПостановления1137",
УчетНДСПереопределяемый.ПолучитьДатуНачалаДействияПостановления1137());
ЗаполнениеДокументовОтчетности = СтруктураПараметров.ЗаполнениеДокумента ИЛИ СтруктураПараметров.ЗаполнениеДекларации;
Если ЗаполнениеДокументовОтчетности И СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Запрос.УстановитьПараметр("НачалоНалоговогоПериода", СтруктураПараметров.НачалоНалоговогоПериода);
Запрос.УстановитьПараметр("КонецНалоговогоПериода", КонецДня(СтруктураПараметров.КонецНалоговогоПериода));
КонецЕсли;
// Начиная с отчетности за 4 квартал 2017 года (в соответствии с постановлением Правительства от 19.08.2017 №981)
// при отражении начисления НДС по единому корректировочному счету-фактуре при уменьшении количества и/или стоимости
// приобретенных ранее товаров в книге продаж в качестве покупателя указывается продавец по счету-фактуре.
Запрос.УстановитьПараметр("ПравилаПостановления981",
СтруктураПараметров.ВерсияПостановленияНДС1137 >= 4);
Запрос.УстановитьПараметр("МассивСтавокНДС",
Перечисления.СтавкиНДС.СтавкиПоОперациямОтражаемымВКнигеПродаж(СтруктураПараметров.ВерсияПостановленияНДС1137));
СтавкиНДС22 = Новый Массив();
СтавкиНДС22.Добавить(Перечисления.СтавкиНДС.НДС22);
СтавкиНДС22.Добавить(Перечисления.СтавкиНДС.НДС22_122);
СтавкиНДС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;
СтавкаБезНДС = Перечисления.СтавкиНДС.БезНДС;
Запрос.УстановитьПараметр("СтавкиНДС22", СтавкиНДС22);
Запрос.УстановитьПараметр("СтавкиНДС20", СтавкиНДС20);
Запрос.УстановитьПараметр("СтавкиНДС18", СтавкиНДС18);
Запрос.УстановитьПараметр("СтавкиНДС10", СтавкиНДС10);
Запрос.УстановитьПараметр("СтавкиНДС7", СтавкиНДС7);
Запрос.УстановитьПараметр("СтавкиНДС5", СтавкиНДС5);
Запрос.УстановитьПараметр("СтавкаНДС0", СтавкаНДС0);
Запрос.УстановитьПараметр("СтавкаБезНДС", СтавкаБезНДС);
ВидыЦенностей_СобственныеСФ = Новый Массив;
ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.ВнутреннееПотребление);
ВидыЦенностей_СобственныеСФ.Добавить(Перечисления.ВидыЦенностей.СМРСобственнымиСилами);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ВидыЦенностей_СобственныеСФ,
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент(Ложь));
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ВидыЦенностей_СобственныеСФ,
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгентРеализацияТоваров());
Запрос.УстановитьПараметр("ВидыЦенностей_СобственныеСФ", ВидыЦенностей_СобственныеСФ);
ВидыЦенностей_Аванс = Новый Массив;
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыПолученныеНалоговыйАгент);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученныхНалоговыйАгент);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.ВозвратАвансовПолученных);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыВыданные);
ВидыЦенностей_Аванс.Добавить(Перечисления.ВидыЦенностей.АвансыВыданныеНалоговыйАгент);
Запрос.УстановитьПараметр("ВидыЦенностей_Аванс", ВидыЦенностей_Аванс);
ВидыЦенностей_СуммоваяРазница = Новый Массив;
ВидыЦенностей_СуммоваяРазница.Добавить(Перечисления.ВидыЦенностей.СуммыСвязанныеСРасчетамиПоОплате);
Запрос.УстановитьПараметр("ВидыЦенностей_СуммоваяРазница", ВидыЦенностей_СуммоваяРазница);
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгент",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент());
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгентПокупатель",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгентРеализацияТоваров());
Запрос.УстановитьПараметр("ВидыЦенностей_НалоговыйАгентВсеВиды",
Перечисления.ВидыЦенностей.МассивВидовЦенностиНалоговыйАгент(, Истина));
МассивДокументовИсправлений = Новый Массив;
МассивДокументовИсправлений.Добавить(Неопределено);
ТипыДокументовИсправлений = Метаданные.РегистрыНакопления.НДСЗаписиКнигиПродаж.Измерения.ИсправленныйСчетФактура.Тип;
Для Каждого МетаданныеДокумента Из Метаданные.Документы Цикл
Если ТипыДокументовИсправлений.СодержитТип(Тип("ДокументСсылка." + МетаданныеДокумента.Имя)) Тогда
МассивДокументовИсправлений.Добавить(Документы[МетаданныеДокумента.Имя].ПустаяСсылка());
КонецЕсли;
КонецЦикла;
Запрос.УстановитьПараметр("ПустыеДокументыИсправления", МассивДокументовИсправлений);
Запрос.УстановитьПараметр("ТекстРозничнаяПродажа",
НСтр("ru = 'Розничная продажа'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("ТипыДокументовРучныхОперацийНДС", УчетНДСПереопределяемый.ТипыДокументовРучныхОперацийНДС());
КонецПроцедуры
Функция ДополнительноеУсловиеЗапроса(СтруктураПараметров, ЗаписьДополнительногоЛиста = Ложь, ИмяТаблицы = "")
Если СтруктураПараметров.ПрименяетсяОсвобождениеОтУплатыНДС Тогда
// В книге продаж только реализации "без НДС" кроме налогового агента
// или начисления в качестве налогового агента по облагаемой ставке (симметрическая разность).
// Начисления по ставке 18% и 10% в разделе 12.
СтрокаУсловия =
"([ИмяТаблицы]СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС) И НЕ [ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды)
|ИЛИ [ИмяТаблицы]СтавкаНДС <> ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС) И [ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды))";
ИначеЕсли (НЕ СтруктураПараметров.ПлательщикНДС И НЕ СтруктураПараметров.ПлательщикНДСПрименяющийУСН) Тогда
// Только начисления в качестве налогового агента.
// Начисления по ставке 18% и 10% в разделе 12.
СтрокаУсловия = "[ИмяТаблицы]ВидЦенности В (&ВидыЦенностей_НалоговыйАгентВсеВиды) И [ИмяТаблицы]СтавкаНДС <> ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС)";
Иначе
// Только начисления по ставкам 18% и 10%, включая начисления в качестве налогового агента.
// Операции без НДС отражаются только до даты действия постановления 735.
СтрокаУсловия = "[ИмяТаблицы]СтавкаНДС В (&МассивСтавокНДС)";
КонецЕсли;
Если ЗначениеЗаполнено(ИмяТаблицы) Тогда
СтрокаУсловия = СтрЗаменить(СтрокаУсловия, "[ИмяТаблицы]", ИмяТаблицы + ".");
Иначе
СтрокаУсловия = СтрЗаменить(СтрокаУсловия, "[ИмяТаблицы]", "");
КонецЕсли;
Если ЗаписьДополнительногоЛиста Тогда
ШаблонУсловия = "(%1 ИЛИ НДСЗаписиКнигиПродаж.КорректируемыйПериод <= ДАТАВРЕМЯ(2014, 10, 1))";
СтрокаУсловия = СтрШаблон(ШаблонУсловия, СтрокаУсловия);
КонецЕсли;
Возврат СтрокаУсловия;
КонецФункции
#Область ПолучениеЗаписей
Функция ЗаписиКнигиПродаж(СтруктураПараметров)
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Если СтруктураПараметров.ВычетыНалоговогоАгентаОтражаютсяВКнигеПродаж Тогда
// Дополним текст запроса данными книги покупок.
Запрос.Текст = Отчеты.КнигаПокупок.ТекстЗапросаВычетыНеплательшикаНДС(Запрос, СтруктураПараметров);
Запрос.Текст = Запрос.Текст + "УНИЧТОЖИТЬ СписокСчетовФактур";
Запрос.Выполнить();
КонецЕсли;
УстановитьПараметрыЗапросаКнигиПродаж(Запрос, СтруктураПараметров);
ТекстЗапроса = ТекстЗапросаЗаписиРегистраНДСПродажи(СтруктураПараметров);
Если СтруктураПараметров.ВерсияПостановленияНДС1137 >= 4 Тогда
ТекстЗапроса = ТекстЗапроса
+ УчетНДСОтчетыПереопределяемый.ТекстЗапросаРеквизитыСчетовФактурПостановление981КнигаПродаж();
Иначе
ТекстЗапроса = ТекстЗапроса
+ УчетНДСОтчетыПереопределяемый.ТекстЗапросаРеквизитыСчетовФактурПостановление735КнигаПродаж();
КонецЕсли;
Запрос.Текст = ТекстЗапроса + ТекстЗапросаПодготовленныеЗаписиКнигиПродаж(СтруктураПараметров);
Запрос.Выполнить();
УчетНДСПереопределяемый.РегистрационныеСведенияНаДаты(Запрос.МенеджерВременныхТаблиц);
Если СтруктураПараметров.ЗаписьДополнительногоЛиста Тогда
Запрос.Текст = ТекстЗапросаДополнительныйЛистКнигиПродаж(СтруктураПараметров);
Иначе
Запрос.Текст = ТекстЗапросаКнигаПродаж(СтруктураПараметров);
КонецЕсли;
Выборка = Запрос.Выполнить();
СтруктураПараметров.Вставить("МенеджерВременныхТаблиц", МенеджерВременныхТаблиц);
Возврат Выборка;
КонецФункции
Функция ТекстЗапросаЗаписиРегистраНДСПродажи(СтруктураПараметров)
ТекстыЗапросов = Новый Массив;
// Определим документы корректировки.
ТекстОрганизацияЯвляетсяПокупателем = УчетНДСПереопределяемый.ТекстЗапросаСчетаФактурыВыданныеГдеОрганизацияЯвляетсяПокупателем();
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаОрганизацияЯвляетсяПокупателем.СчетФактура,
| ТаблицаОрганизацияЯвляетсяПокупателем.Организация,
| ТаблицаОрганизацияЯвляетсяПокупателем.ГоловнаяОрганизация,
| ТаблицаОрганизацияЯвляетсяПокупателем.ЭтоКорректировкаПоступления
|
|ПОМЕСТИТЬ ВТ_ТаблицаОрганизацияЯвляетсяПокупателем
|ИЗ
| (" + ТекстОрганизацияЯвляетсяПокупателем + ") КАК ТаблицаОрганизацияЯвляетсяПокупателем
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура,
| ГоловнаяОрганизация
|";
ТекстыЗапросов.Добавить(ТекстЗапроса);
// Определим счетам-фактуры, которые являются исправлением в книге покупок.
ТекстСчетаФактурыИсправленияКнигиПродаж = УчетНДСПереопределяемый.ТекстЗапросаСчетаФактурыИсправленияКнигиПродаж();
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаСчетаФактурыИсправления.СчетФактура,
| ТаблицаСчетаФактурыИсправления.Организация,
| ТаблицаСчетаФактурыИсправления.ГоловнаяОрганизация,
| ТаблицаСчетаФактурыИсправления.ЭтоКорректировкаПоступления,
| ТаблицаСчетаФактурыИсправления.ЭтоКорректировкаРеализации
|
|ПОМЕСТИТЬ ВТ_ТаблицаСчетаФактурыИсправления
|ИЗ
| (" + ТекстСчетаФактурыИсправленияКнигиПродаж + ") КАК ТаблицаСчетаФактурыИсправления
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура,
| ГоловнаяОрганизация
|";
ТекстыЗапросов.Добавить(ТекстЗапроса);
ТекстЗапроса =
"ВЫБРАТЬ
| НДСЗаписиКнигиПродаж.Период КАК Период,
| НАЧАЛОПЕРИОДА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| ТОГДА НДСЗаписиКнигиПродаж.КорректируемыйПериод
| ИНАЧЕ НДСЗаписиКнигиПродаж.Период
| КОНЕЦ, КВАРТАЛ) КАК НалоговыйПериод,
| КОНЕЦПЕРИОДА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| ТОГДА НДСЗаписиКнигиПродаж.КорректируемыйПериод
| ИНАЧЕ НДСЗаписиКнигиПродаж.Период
| КОНЕЦ, КВАРТАЛ) КАК КонецНалоговогоПериода,
| НДСЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста КАК СторнирующаяЗаписьДопЛиста,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_СобственныеСФ)
| ИЛИ НДСЗаписиКнигиПродаж.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.АвансыВыданные)
| И НЕ &ВыводитьПродавцовПоАвансам
| ИЛИ НДСЗаписиКнигиПродаж.ВидЦенности <> ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.АвансыВыданные)
| И НДСЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.ВосстановлениеНДС)
| ИЛИ ЕСТЬNULL(ВТ_ТаблицаОрганизацияЯвляетсяПокупателем.ЭтоКорректировкаПоступления, ЛОЖЬ)
| ТОГДА НДСЗаписиКнигиПродаж.Организация
| ИНАЧЕ НДСЗаписиКнигиПродаж.Покупатель
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ВидЦенности В (&ВидыЦенностей_НалоговыйАгентПокупатель)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НалоговыйАгентПокупательТоваров,
| НДСЗаписиКнигиПродаж.Покупатель КАК КонтрагентПоСчетуФактуре,
| ВЫБОР
| КОГДА НЕ НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура В (&ПустыеДокументыИсправления)
| ТОГДА НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура
| ИНАЧЕ НДСЗаписиКнигиПродаж.СчетФактура
| КОНЕЦ КАК СчетФактура,
| НДСЗаписиКнигиПродаж.ДатаОплаты КАК ДатаОплаты,
| НДСЗаписиКнигиПродаж.ДокументОплаты КАК ДокументОплаты,
| НДСЗаписиКнигиПродаж.Событие КАК Событие,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеПервичныхДокументовСчетФактура.ДатаРегистратора
| ИНАЧЕ НДСЗаписиКнигиПродаж.ДатаСобытия
| КОНЕЦ КАК ДатаСобытия,
| СУММА(НДСЗаписиКнигиПродаж.СуммаБезНДС + НДСЗаписиКнигиПродаж.НДС) КАК ВсегоПродаж,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС22)
| ТОГДА НДСЗаписиКнигиПродаж.СуммаБезНДС
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаБезНДС22,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС22)
| ТОГДА НДСЗаписиКнигиПродаж.НДС
| ИНАЧЕ 0
| КОНЕЦ) КАК НДС22,
| СУММА(ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.СтавкаНДС В (&СтавкиНДС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
| ТОГДА ТаблицаСчетаФактурыДокументы.ДатаСчетаФактурыСортировка
| ИНАЧЕ ТаблицаСчетаФактурыДокументы.ДатаСчетаФактуры
| КОНЕЦ, ДЕНЬ), ДАТАВРЕМЯ(1,1,1)) КАК ДатаСчетаФактурыСортировка,
| ЕСТЬNULL(ВЫБОР
| КОГДА СчетаФактурыСОсобымПорядкомОтображения.ИсправленныйСчетФактура ЕСТЬ НЕ NULL
| ТОГДА СчетаФактурыСОсобымПорядкомОтображения.ДатаИсправленногоСчетаФактуры
| КОГДА НЕ ТаблицаСчетаФактурыДокументы.ДатаСчетаФактуры ЕСТЬ NULL
| ТОГДА ТаблицаСчетаФактурыДокументы.ДатаСчетаФактуры
| ИНАЧЕ ТаблицаСчетаФактурыДокументы.ДатаСчетаФактуры
| КОНЕЦ, НЕОПРЕДЕЛЕНО) КАК ДатаСчетаФактуры,
| ЗаписиКнигиПродаж.СтавкаНДС_Аванс КАК СтавкаНДС_Аванс,
| ЗаписиКнигиПродаж.ДоговорАванса КАК ДоговорАванса,
| ВЫБОР
| КОГДА ТаблицаСчетаФактурыДокументы.СводныйКорректировочный = ИСТИНА
| И НЕ ЗаписиКнигиПродаж.НаАванс
| И &ПравилаПостановления981
| ТОГДА ЗаписиКнигиПродаж.КонтрагентПоСчетуФактуре
| ИНАЧЕ ЗаписиКнигиПродаж.Контрагент
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ЭтоРозничнаяПродажа, ЛОЖЬ)
| И ЗаписиКнигиПродаж.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК РозничнаяПродажа,
| ВЫБОР
| КОГДА ТаблицаСчетаФактурыДокументы.СводныйКорректировочный = ИСТИНА
| И &ПравилаПостановления981
| И НЕ ЗаписиКнигиПродаж.НаАванс
| ТОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.КППКонтрагента, """")
| КОГДА ЗаписиКнигиПродаж.Контрагент ССЫЛКА Справочник.Организации
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.КППКонтрагента, """")
| КОНЕЦ КАК КППКонтрагента,
| ЗаписиКнигиПродаж.ДатаОплаты КАК ДатаОплаты,
| ЗаписиКнигиПродаж.ДокументОплаты КАК ДокументОплаты,
| ЗаписиКнигиПродаж.Событие КАК Событие,
| ВЫБОР
| КОГДА ЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА 0
| КОГДА ЗаписиКнигиПродаж.НалоговыйПериод < ДАТАВРЕМЯ(2014, 10, 1)
| ТОГДА ЗаписиКнигиПродаж.ВсегоПродаж
| КОГДА ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.Валюта, &ВалютаРегУчета) = &ВалютаРегУчета
| ТОГДА ВЫБОР
| КОГДА ЗаписиКнигиПродаж.ВсегоПродаж < 0
| ТОГДА -ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПродажВВалюте, -ЗаписиКнигиПродаж.ВсегоПродаж)
| КОГДА ЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста
| ТОГДА -ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПродажВВалюте, ЗаписиКнигиПродаж.ВсегоПродаж)
| ИНАЧЕ ЕСТЬNULL(ТаблицаСчетаФактурыДокументы.ВсегоПродажВВалюте, ЗаписиКнигиПродаж.ВсегоПродаж)
| КОНЕЦ
| ИНАЧЕ ЗаписиКнигиПродаж.ВсегоПродаж
| КОНЕЦ КАК ВсегоПродаж,
| ВЫБОР
| КОГДА ЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА ЗаписиКнигиПродаж.СуммаБезНДС22
| КОГДА ЗаписиКнигиПродаж.НаАванс
| И НЕ ЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров
| ТОГДА 0
| ИНАЧЕ ЗаписиКнигиПродаж.СуммаБезНДС22
| КОНЕЦ КАК СуммаБезНДС22,
| ЗаписиКнигиПродаж.НДС22 КАК НДС22,
| ВЫБОР
| КОГДА ЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА ЗаписиКнигиПродаж.СуммаБезНДС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(СведенияОПокупателях.Наименование, """")
| КОНЕЦ КАК Покупатель,
| ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа КАК РозничнаяПродажа,
| ПодготовленныеЗаписиКнигиПродаж.ДатаОплаты КАК ДатаОплаты,
| ПодготовленныеЗаписиКнигиПродаж.ДокументОплаты КАК ДокументОплаты,
| ПодготовленныеЗаписиКнигиПродаж.Событие КАК Событие,
| ПодготовленныеЗаписиКнигиПродаж.ВсегоПродаж КАК ВсегоПродаж,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС22 КАК СуммаБезНДС22,
| ПодготовленныеЗаписиКнигиПродаж.НДС22 КАК НДС22,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС20 + ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС18 КАК СуммаБезНДС20Или18,
| ПодготовленныеЗаписиКнигиПродаж.НДС20 + ПодготовленныеЗаписиКнигиПродаж.НДС18 КАК НДС20Или18,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС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(СведенияОПосредниках.КПП, """") КАК ПосредникКПП,
| ПодготовленныеЗаписиКнигиПродаж.СводныйКомиссионный КАК СводныйКомиссионный,
| ПодготовленныеЗаписиКнигиПродаж.СводныйКорректировочный КАК СводныйКорректировочный,
| ПодготовленныеЗаписиКнигиПродаж.НачислениеПоОказаниюУслуг КАК НачислениеПоОказаниюУслуг,
| ПодготовленныеЗаписиКнигиПродаж.СводнаяСправка КАК СводнаяСправка,
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров КАК НалоговыйАгентПокупательТоваров
|ИЗ
| ПодготовленныеЗаписиКнигиПродаж КАК ПодготовленныеЗаписиКнигиПродаж
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОПокупателях
| ПО ПодготовленныеЗаписиКнигиПродаж.Контрагент = СведенияОПокупателях.Ссылка
| И ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка = СведенияОПокупателях.ДатаСведений
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОПосредниках
| ПО ПодготовленныеЗаписиКнигиПродаж.ПосредникСсылка = СведенияОПосредниках.Ссылка
| И ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка = СведенияОПосредниках.ДатаСведений
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный
| ПО ПодготовленныеЗаписиКнигиПродаж.СчетФактураДокумент = СчетФактураПолученный.Ссылка
| И СчетФактураПолученный.Исправление
|ГДЕ
| НЕ (ЕСТЬNULL(СчетФактураПолученный.Исправление, Ложь)
| И НАЧАЛОПЕРИОДА(ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка, КВАРТАЛ) <> НАЧАЛОПЕРИОДА(ПодготовленныеЗаписиКнигиПродаж.СчетФактураДата, КВАРТАЛ))
|
|УПОРЯДОЧИТЬ ПО
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйПериод,
| ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка,
| ПодготовленныеЗаписиКнигиПродаж.НомерСчетаФактурыСортировка,
| ПодготовленныеЗаписиКнигиПродаж.Исправление
|ИТОГИ
| МИНИМУМ(НомерСчетаФактурыСортировка),
| МИНИМУМ(ДатаСчетаФактурыСортировка),
| МАКСИМУМ(Контрагент),
| МАКСИМУМ(Покупатель),
| МАКСИМУМ(ДатаОплаты),
| МАКСИМУМ(ВсегоПродаж),
| СУММА(СуммаБезНДС22),
| СУММА(НДС22),
| СУММА(СуммаБезНДС20Или18),
| СУММА(НДС20Или18),
| СУММА(СуммаБезНДС20),
| СУММА(НДС20),
| СУММА(СуммаБезНДС18),
| СУММА(НДС18),
| СУММА(СуммаБезНДС10),
| СУММА(НДС10),
| СУММА(СуммаБезНДС7),
| СУММА(НДС7),
| СУММА(СуммаБезНДС5),
| СУММА(НДС5),
| СУММА(НДС0),
| СУММА(СуммаСовсемБезНДС),
| МАКСИМУМ(НомерДокументаОплаты),
| МАКСИМУМ(ДатаДокументаОплаты),
| МАКСИМУМ(НомерСчетаФактурыНаАванс),
| МАКСИМУМ(ДатаСчетаФактурыНаАванс),
| МАКСИМУМ(НомерИсправленияСчетаФактурыНаАванс),
| МАКСИМУМ(ДатаИсправленияСчетаФактурыНаАванс),
| МАКСИМУМ(СводныйКомиссионный),
| МАКСИМУМ(СводныйКорректировочный),
| МАКСИМУМ(НачислениеПоОказаниюУслуг),
| МАКСИМУМ(СводнаяСправка),
| МАКСИМУМ(НалоговыйАгентПокупательТоваров)
|ПО
| ОБЩИЕ,
| НалоговыйПериод,
| СчетФактураДокумент,
| ДоговорАванса,
| Исправление";
Если СтруктураПараметров.ГруппироватьПоКонтрагентам И НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"ПО
| ОБЩИЕ,",
"ПО
| ОБЩИЕ, Контрагент, ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"УПОРЯДОЧИТЬ ПО",
"УПОРЯДОЧИТЬ ПО Покупатель, ");
КонецЕсли;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 < 3 Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"МАКСИМУМ(ВсегоПродаж)",
"СУММА(ВсегоПродаж)");
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДополнительныйЛистКнигиПродаж(СтруктураПараметров)
ТекстЗапроса =
"ВЫБРАТЬ
| ПодготовленныеЗаписиКнигиПродаж.Организация КАК Организация,
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйПериод КАК НалоговыйПериод,
| ПодготовленныеЗаписиКнигиПродаж.КонецНалоговогоПериода КАК КонецНалоговогоПериода,
| ПодготовленныеЗаписиКнигиПродаж.НаАванс КАК НаАванс,
| ПодготовленныеЗаписиКнигиПродаж.НаСуммовуюРазницу КАК НаСуммовуюРазницу,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактура КАК СчетФактура,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактураДата КАК СчетФактураДата,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактураДокумент КАК СчетФактураДокумент,
| ПодготовленныеЗаписиКнигиПродаж.НомерСчетаФактуры КАК НомерСчетаФактуры,
| ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактуры КАК ДатаСчетаФактуры,
| ПодготовленныеЗаписиКнигиПродаж.СтавкаНДС_Аванс КАК СтавкаНДС_Аванс,
| ПодготовленныеЗаписиКнигиПродаж.ДоговорАванса КАК ДоговорАванса,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| ИНАЧЕ ПодготовленныеЗаписиКнигиПродаж.Контрагент
| КОНЕЦ КАК Контрагент,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(СведенияОПокупателях.ИНН, """")
| КОНЕЦ КАК ПокупательИНН,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА """"
| КОГДА ПодготовленныеЗаписиКнигиПродаж.КППКонтрагента = """"
| ТОГДА ЕСТЬNULL(СведенияОПокупателях.КПП, """")
| ИНАЧЕ ПодготовленныеЗаписиКнигиПродаж.КППКонтрагента
| КОНЕЦ КАК ПокупательКПП,
| ВЫБОР
| КОГДА ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа
| ТОГДА &ТекстРозничнаяПродажа
| ИНАЧЕ ЕСТЬNULL(СведенияОПокупателях.Наименование, """")
| КОНЕЦ КАК Покупатель,
| ПодготовленныеЗаписиКнигиПродаж.РозничнаяПродажа КАК РозничнаяПродажа,
| ПодготовленныеЗаписиКнигиПродаж.ДатаОплаты КАК ДатаОплаты,
| ПодготовленныеЗаписиКнигиПродаж.ДокументОплаты КАК ДокументОплаты,
| ПодготовленныеЗаписиКнигиПродаж.Событие КАК Событие,
| ПодготовленныеЗаписиКнигиПродаж.ВсегоПродаж КАК ВсегоПродаж,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС22 КАК СуммаБезНДС22,
| ПодготовленныеЗаписиКнигиПродаж.НДС22 КАК НДС22,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС20 + ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС18 КАК СуммаБезНДС20Или18,
| ПодготовленныеЗаписиКнигиПродаж.НДС20 + ПодготовленныеЗаписиКнигиПродаж.НДС18 КАК НДС20Или18,
| ПодготовленныеЗаписиКнигиПродаж.СуммаБезНДС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(СведенияОПосредниках.КПП, """") КАК ПосредникКПП,
| ПодготовленныеЗаписиКнигиПродаж.СводныйКомиссионный КАК СводныйКомиссионный,
| ПодготовленныеЗаписиКнигиПродаж.СводныйКорректировочный КАК СводныйКорректировочный,
| ПодготовленныеЗаписиКнигиПродаж.НачислениеПоОказаниюУслуг КАК НачислениеПоОказаниюУслуг,
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйАгентПокупательТоваров КАК НалоговыйАгентПокупательТоваров
|ИЗ
| ПодготовленныеЗаписиКнигиПродаж КАК ПодготовленныеЗаписиКнигиПродаж
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОПокупателях
| ПО ПодготовленныеЗаписиКнигиПродаж.Контрагент = СведенияОПокупателях.Ссылка
| И ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка = СведенияОПокупателях.ДатаСведений
| ЛЕВОЕ СОЕДИНЕНИЕ СведенияОСсылкахНаДаты КАК СведенияОПосредниках
| ПО ПодготовленныеЗаписиКнигиПродаж.ПосредникСсылка = СведенияОПосредниках.Ссылка
| И ПодготовленныеЗаписиКнигиПродаж.ДатаСчетаФактурыСортировка = СведенияОПосредниках.ДатаСведений
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный
| ПО ПодготовленныеЗаписиКнигиПродаж.СчетФактураДокумент = СчетФактураПолученный.Ссылка
| И СчетФактураПолученный.Исправление
| И ПодготовленныеЗаписиКнигиПродаж.Исправление
| И ПодготовленныеЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста
|ГДЕ
| СчетФактураПолученный.Ссылка ЕСТЬ NULL
|
|УПОРЯДОЧИТЬ ПО
| ПодготовленныеЗаписиКнигиПродаж.НалоговыйПериод,
| ПодготовленныеЗаписиКнигиПродаж.ДатаОформления,
| ПодготовленныеЗаписиКнигиПродаж.СчетФактураДата,
| ПодготовленныеЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста УБЫВ,
| ПодготовленныеЗаписиКнигиПродаж.ДатаОплаты
|ИТОГИ
| МАКСИМУМ(КонецНалоговогоПериода),
| МИНИМУМ(СчетФактураДата),
| МАКСИМУМ(Покупатель),
| МАКСИМУМ(ДатаОплаты),
| МАКСИМУМ(ВсегоПродаж),
| СУММА(СуммаБезНДС22),
| СУММА(НДС22),
| СУММА(СуммаБезНДС20Или18),
| СУММА(НДС20Или18),
| СУММА(СуммаБезНДС20),
| СУММА(НДС20),
| СУММА(СуммаБезНДС18),
| СУММА(НДС18),
| СУММА(СуммаБезНДС10),
| СУММА(НДС10),
| СУММА(СуммаБезНДС7),
| СУММА(НДС7),
| СУММА(СуммаБезНДС5),
| СУММА(НДС5),
| СУММА(НДС0),
| СУММА(СуммаСовсемБезНДС),
| МАКСИМУМ(НомерДокументаОплаты),
| МАКСИМУМ(ДатаДокументаОплаты),
| МАКСИМУМ(НомерСчетаФактурыНаАванс),
| МАКСИМУМ(ДатаСчетаФактурыНаАванс),
| МАКСИМУМ(НомерИсправленияСчетаФактурыНаАванс),
| МАКСИМУМ(ДатаИсправленияСчетаФактурыНаАванс),
| МАКСИМУМ(СводныйКомиссионный),
| МАКСИМУМ(СводныйКорректировочный),
| МАКСИМУМ(НачислениеПоОказаниюУслуг),
| МАКСИМУМ(НалоговыйАгентПокупательТоваров)
|ПО
| НалоговыйПериод,
| ДатаОформления,
| СчетФактураДокумент,
| ДоговорАванса,
| СторнирующаяЗаписьДопЛиста";
Если СтруктураПараметров.ГруппироватьПоКонтрагентам И НЕ СтруктураПараметров.СформироватьОтчетПоСтандартнойФорме Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"ПО
| НалоговыйПериод,
| ДатаОформления,",
"ПО
| НалоговыйПериод,
| ДатаОформления, Контрагент, ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"УПОРЯДОЧИТЬ ПО",
"УПОРЯДОЧИТЬ ПО Покупатель, ");
КонецЕсли;
Если СтруктураПараметров.ВерсияПостановленияНДС1137 < 3 Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"МАКСИМУМ(ВсегоПродаж)",
"СУММА(ВсегоПродаж)");
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОбъединениеСВычетамиНеплательщикаНДС()
Возврат
"ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаписиКнигиПокупок.Период,
| ЗаписиКнигиПокупок.НалоговыйПериод,
| ЗаписиКнигиПокупок.КонецНалоговогоПериода,
| ИСТИНА,
| ЗаписиКнигиПокупок.Организация,
| ИСТИНА,
| ЗаписиКнигиПокупок.КонтрагентПоСчетуФактуре,
| ЗаписиКнигиПокупок.СчетФактура,
| ЗаписиКнигиПокупок.ДатаОплаты,
| ЗаписиКнигиПокупок.ДокументОплаты,
| ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НДСНачисленКУплате),
| ЗаписиКнигиПокупок.ДатаСобытия,
| - ЗаписиКнигиПокупок.ВсегоПокупок,
| 0,
| 0,
| - ЗаписиКнигиПокупок.СуммаГрафа170,
| - ЗаписиКнигиПокупок.НДС18,
| - ЗаписиКнигиПокупок.СуммаГрафа180,
| - ЗаписиКнигиПокупок.НДС10,
| - ЗаписиКнигиПокупок.НДС0,
| - ЗаписиКнигиПокупок.СуммаСовсемБезНДС,
| ЗаписиКнигиПокупок.Организация,
| ЗаписиКнигиПокупок.НаАванс,
| ЛОЖЬ,
| ЗаписиКнигиПокупок.СтавкаНДСАванса,
| ЗаписиКнигиПокупок.ДоговорКонтрагента,
| ЗаписиКнигиПокупок.СчетФактураДата,
| ЗаписиКнигиПокупок.ИсправленныйСчетФактура,
| ЗаписиКнигиПокупок.Исправление,
| ЗаписиКнигиПокупок.НомерДокументаОплаты,
| ЗаписиКнигиПокупок.ДатаДокументаОплаты,
| "",
| ДАТАВРЕМЯ(1, 1, 1),
| "",
| ДАТАВРЕМЯ(1, 1, 1),
| ЗаписиКнигиПокупок.КодВидаОперации
|ИЗ
| ЗаписиКнигиПокупок КАК ЗаписиКнигиПокупок";
КонецФункции
Функция ПолучитьДополнительнуюИнформациюПоСчетуФактуре(СтруктураПараметров)
ДополнительнаяИнформация = НовыйДополнительнаяИнформацияПоСчетуФактуре();
Если СтруктураПараметров.ДанныеДляПроверкиКонтрагентов.Свойство("ВыводитьТолькоНекорректныхКонтрагентов")
И СтруктураПараметров.ДанныеДляПроверкиКонтрагентов.ВыводитьТолькоНекорректныхКонтрагентов Тогда
Возврат ДополнительнаяИнформация;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = СтруктураПараметров.МенеджерВременныхТаблиц;
УчетНДСПереопределяемый.ДополнитьИнформациейОТНВЭД(ДополнительнаяИнформация, Запрос);
УчетНДСПереопределяемый.ДополнитьПродажиИнформациейОНомерахДекларацийНаТовары(ДополнительнаяИнформация, СтруктураПараметров, Запрос);
Возврат ДополнительнаяИнформация;
КонецФункции
Функция НовыйДополнительнаяИнформацияПоСчетуФактуре()
ДополнительнаяИнформация = Новый ТаблицаЗначений;
ДополнительнаяИнформация.Колонки.Добавить("Ссылка", Документы.ТипВсеСсылки());
ДополнительнаяИнформация.Индексы.Добавить("Ссылка");
ДополнительнаяИнформация.Колонки.Добавить("ТНВЭД", ОбщегоНазначения.ОписаниеТипаСтрока(0));
// С 1 июля 2021 года указывается свойство СвРегНом
ДополнительнаяИнформация.Колонки.Добавить("СвРегНом", Новый ОписаниеТипов("Массив"));
// С 1 июля 2021 года отдельно получим рег номера деклараций на товары
ДополнительнаяИнформация.Колонки.Добавить("СвРегНомТД", Новый ОписаниеТипов("Массив"));
Возврат ДополнительнаяИнформация;
КонецФункции
Процедура ЗаполнитьСведенияОСчетеФактуреНаАванс(АвансовыеСчетаФактурыМассив, АвансовыеСчетаФактурыТекст, ЗаписьКниги, СвСчФПродРанВыст, СвЧастСчФ)
Если ЗначениеЗаполнено(ЗаписьКниги.НомерСчетаФактурыНаАванс) Тогда
АвансовыеСчетаФактурыНомерДата = СтрШаблон(НСтр("ru='%1 от %2'"),
ЗаписьКниги.НомерСчетаФактурыНаАванс, Формат(ЗаписьКниги.ДатаСчетаФактурыНаАванс, "ДФ=dd.MM.yyyy"));
Если АвансовыеСчетаФактурыМассив.Найти(АвансовыеСчетаФактурыНомерДата) = Неопределено Тогда
АвансовыеСчетаФактурыТекст = АвансовыеСчетаФактурыТекст
+ ?(Не ЗначениеЗаполнено(АвансовыеСчетаФактурыТекст), "", ";" + Символы.ПС) + АвансовыеСчетаФактурыНомерДата;
АвансовыеСчетаФактурыМассив.Добавить(АвансовыеСчетаФактурыНомерДата);
// Структура для выгрузки книги продаж
СтруктураСвСчФПродРанВыст = Новый Структура("НомСчФПродРанВ,ДатаСчФПродРанВ");
СтруктураСвСчФПродРанВыст.НомСчФПродРанВ = ЗаписьКниги.НомерСчетаФактурыНаАванс;
СтруктураСвСчФПродРанВыст.ДатаСчФПродРанВ = Формат(ЗаписьКниги.ДатаСчетаФактурыНаАванс, "ДФ=dd.MM.yyyy");
СвСчФПродРанВыст.Добавить(СтруктураСвСчФПродРанВыст);
// Структура для выгрузки декларации по НДС
СтруктураСвЧастСчФ = Новый Структура("НомЧастСчФ,ДатаЧастСчФ");
СтруктураСвЧастСчФ.НомЧастСчФ = ЗаписьКниги.НомерСчетаФактурыНаАванс;
СтруктураСвЧастСчФ.ДатаЧастСчФ = Формат(ЗаписьКниги.ДатаСчетаФактурыНаАванс, "ДФ=dd.MM.yyyy");
СвЧастСчФ.Добавить(СтруктураСвЧастСчФ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
Функция НоваяСтрокаИтоговКнигиПродаж()
Результат = Новый Структура();
Результат.Вставить("ВсегоПродаж", 0);
Результат.Вставить("СуммаБезНДС22", 0);
Результат.Вставить("СуммаБезНДС20Или18", 0);
Результат.Вставить("СуммаБезНДС20", 0);
Результат.Вставить("СуммаБезНДС18", 0);
Результат.Вставить("СуммаБезНДС7", 0);
Результат.Вставить("СуммаБезНДС5", 0);
Результат.Вставить("НДС22", 0);
Результат.Вставить("НДС20Или18", 0);
Результат.Вставить("НДС20", 0);
Результат.Вставить("НДС18", 0);
Результат.Вставить("НДС7", 0);
Результат.Вставить("НДС5", 0);
Результат.Вставить("СуммаБезНДС10", 0);
Результат.Вставить("НДС10", 0);
Результат.Вставить("НДС0", 0);
Результат.Вставить("СуммаСовсемБезНДС", 0);
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецЕсли