Перечисление НДС в бюджет по отдельным операциям / Модуль менеджера

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

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

Функция ПолучитьКоличествоДокументовКОплате(ПараметрыЗапроса, ПоВсемДокументам = Ложь) Экспорт
	
	Если ПараметрыЗапроса.Свойство("МассивОрганизаций") Тогда
		МассивОрганизаций = ПараметрыЗапроса.МассивОрганизаций;
	ИначеЕсли НЕ ЗначениеЗаполнено(ПараметрыЗапроса.Организация) Тогда
		МассивОрганизаций = Справочники.Организации.ДоступныеОрганизации();
	Иначе
		МассивОрганизаций = ОбщегоНазначенияУТКлиентСервер.Массив(ПараметрыЗапроса.Организация);
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ПараметрыЗапроса.КонецПериода) Тогда
		ПараметрыЗапроса.КонецПериода = Дата('209901010000');
	КонецЕсли;
	
	Запрос = Новый Запрос;
	
	Если ПоВсемДокументам Тогда
		Запрос.Текст = "
		|ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	КОЛИЧЕСТВО(1) КАК Количество
		|ИЗ
		|	РегистрСведений.РеестрДокументов КАК РеестрДокументов
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК ОжидаетОплаты
		|		ПО РеестрДокументов.Ссылка = ОжидаетОплаты.СчетФактура
		|			И (ОжидаетОплаты.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.ОжидаетОплаты))
		|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
		|			Т.СчетФактура КАК СчетФактура,
		|			МАКСИМУМ(Т.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение)) КАК ПолученоПодтверждение,
		|			СУММА(Т.Сумма) КАК Сумма
		|		ИЗ
		|			РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК Т
		|		ГДЕ
		|			Т.Состояние В (ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.Оплачено),
		|							ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение))
		|		
		|		СГРУППИРОВАТЬ ПО
		|			Т.СчетФактура) КАК Оплачено
		|		ПО РеестрДокументов.Ссылка = Оплачено.СчетФактура
		|ГДЕ
		|	РеестрДокументов.Организация В (&МассивОрганизаций)
		|	И РеестрДокументов.ДатаДокументаИБ <= &КонецПериода
		|	И РеестрДокументов.Проведен
		|	И (ОжидаетОплаты.Сумма - ЕСТЬNULL(Оплачено.Сумма, 0) > 0
		|		И НЕ ЕСТЬNULL(Оплачено.ПолученоПодтверждение, ЛОЖЬ))";
	Иначе
		Запрос.Текст = "
		|ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	КОЛИЧЕСТВО(1) КАК Количество
		|ИЗ
		|	РегистрСведений.РеестрДокументов КАК РеестрДокументов
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК ОжидаетОплаты
		|		ПО РеестрДокументов.Ссылка = ОжидаетОплаты.СчетФактура
		|			И (ОжидаетОплаты.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.ОжидаетОплаты))
		|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
		|			Т.СчетФактура КАК СчетФактура,
		|			МАКСИМУМ(Т.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение)) КАК ПолученоПодтверждение,
		|			СУММА(Т.Сумма) КАК Сумма
		|		ИЗ
		|			РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК Т
		|		ГДЕ
		|			Т.Состояние В (ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.Оплачено),
		|							ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение))
		|		
		|		СГРУППИРОВАТЬ ПО
		|			Т.СчетФактура) КАК Оплачено
		|		ПО РеестрДокументов.Ссылка = Оплачено.СчетФактура
		|ГДЕ
		|	РеестрДокументов.Организация В (&МассивОрганизаций)
		|	И ОжидаетОплаты.ВидАгентскогоДоговора В 
		|			(ЗНАЧЕНИЕ(Перечисление.ВидыАгентскихДоговоров.Нерезидент), 
		|			 ЗНАЧЕНИЕ(Перечисление.ВидыАгентскихДоговоров.НерезидентЭлектронныеУслуги))
		|	И РеестрДокументов.ДатаДокументаИБ <= &КонецПериода
		|	И РеестрДокументов.Проведен
		|	И (ОжидаетОплаты.Сумма - ЕСТЬNULL(Оплачено.Сумма, 0) > 0
		|		И НЕ ЕСТЬNULL(Оплачено.ПолученоПодтверждение, ЛОЖЬ))";
	КонецЕсли;
	
	Запрос.УстановитьПараметр("МассивОрганизаций",	МассивОрганизаций);
	Запрос.УстановитьПараметр("НачалоПериода",		ПараметрыЗапроса.НачалоПериода);
	Запрос.УстановитьПараметр("КонецПериода",		ПараметрыЗапроса.КонецПериода);
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Количество;
	Иначе
		Возврат 0;
	КонецЕсли;
		
КонецФункции

Функция ПолучитьКоличествоЗаявленийКПодтверждениюОплаты(ПараметрыЗапроса) Экспорт
	
	Если НЕ ЗначениеЗаполнено(ПараметрыЗапроса.КонецПериода) Тогда
		ПараметрыЗапроса.КонецПериода = Дата('209901010000');
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Оплачено.СчетФактура) КАК Количество
	|ИЗ
	|	РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК Оплачено
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК РеестрДокументов
	|		ПО Оплачено.СчетФактура = РеестрДокументов.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК Подтверждено
	|		ПО Оплачено.СчетФактура = Подтверждено.СчетФактура
	|			И (Подтверждено.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение))
	|ГДЕ
	|	Оплачено.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.Оплачено)
	|	И Оплачено.СчетФактура ССЫЛКА Документ.ЗаявлениеОВвозеТоваров
	|	И Подтверждено.СчетФактура ЕСТЬ NULL
	|	И РеестрДокументов.ДатаДокументаИБ <= &КонецПериода
	|	И РеестрДокументов.Проведен
	|	И РеестрДокументов.Организация В (&МассивОрганизаций)";
	
	Запрос.УстановитьПараметр("МассивОрганизаций",	ПараметрыЗапроса.МассивОрганизаций);
	Запрос.УстановитьПараметр("КонецПериода",		ПараметрыЗапроса.КонецПериода);
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Количество;
	КонецЕсли;
	
	Возврат 0;
	
КонецФункции

Функция КлючНазначенияФормыПоУмолчанию() Экспорт
	
	Возврат "ДокументыКОплате";
	
КонецФункции


#Область ФормированиеГиперссылкиВЖурналеДокументыПродажи

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

Функция ИмяФормыРабочееМесто() Экспорт
	
	Возврат "Обработка.ПеречислениеНДСВБюджетПоОтдельнымОперациям.Форма.СписокДокументов";
	
КонецФункции

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

//++ НЕ УТ

#Область ПодборНДСКУплате

#Область НалоговыйАгент

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

Функция ТекстЗапросаЗадолженностьНалоговогоАгента()
	
	// Получаем начисленный налог, подлежащий уплате в качестве налогового агента
	// с учетом ситуации, когда платежный документ проведен.
	
	// Описание пакетов:
	// - таблица движений субконто текущего документа,
	// - данные движений по основной таблице регистра бухгалтерии текущего документа, соединенные с таблицей субконто,
	// - остаток НДС к уплате, дополненный движениями текущего документа,
	// - сгруппированная таблица остатков по 68.32 с аналитикой по виду договора налогового агента,
	// - налог, подлежащий уплате в день начисления (нерезидент, эл. услуги),
	// - налог, подлежащий уплате в течение квартала, следующего за кварталом начисления (аренда, продажа имущества)
	// по этой таблице сроки уплаты налога будут определены в РаспределитьЗадолженностьПоСрокамУплаты().
	
	Возврат
	"ВЫБРАТЬ
	|	ХозрасчетныйСубконто.НомерСтроки КАК НомерСтроки,
	|	ХозрасчетныйСубконто.Вид КАК Вид,
	|	ХозрасчетныйСубконто.Значение КАК Значение
	|ПОМЕСТИТЬ ЗначенияСубконто
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
	|ГДЕ
	|	ХозрасчетныйСубконто.Регистратор = &ТекущийДокумент
	|	И ХозрасчетныйСубконто.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет)
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ХозрасчетныйСубконто.НомерСтроки,
	|	ХозрасчетныйСубконто.Вид
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Контрагенты.Значение КАК Субконто1,
	|	Договоры.Значение КАК Субконто2,
	|	ДокументыРасчетов.Значение КАК Субконто3,
	|	Хозрасчетный.Сумма КАК СуммаОстатокКт
	|ПОМЕСТИТЬ ДвиженияТекущегоДокумента
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗначенияСубконто КАК Договоры
	|		ПО Хозрасчетный.НомерСтроки = Договоры.НомерСтроки
	|			И (Договоры.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры))
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗначенияСубконто КАК Контрагенты
	|		ПО Хозрасчетный.НомерСтроки = Контрагенты.НомерСтроки
	|			И (Контрагенты.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты))
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗначенияСубконто КАК ДокументыРасчетов
	|		ПО Хозрасчетный.НомерСтроки = ДокументыРасчетов.НомерСтроки
	|			И (ДокументыРасчетов.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами))
	|ГДЕ
	|	Хозрасчетный.Регистратор = &ТекущийДокумент
	|	И Хозрасчетный.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.НДСНалоговогоАгента)
	|	И Хозрасчетный.Активность
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	СчетФактураНалоговыйАгент.Ссылка КАК СчетФактура,
	|	СчетФактураНалоговыйАгент.Поставщик КАК Субконто1,
	|	СчетФактураНалоговыйАгент.Договор КАК Субконто2,
	|	СчетФактураНалоговыйАгент.ДокументОснование КАК Субконто3,
	|	ПодтверждениеОплатыНДСВБюджет.Сумма КАК СуммаОстатокКт
	|ПОМЕСТИТЬ Задолженность6832Предварительная
	|ИЗ
	|	РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК ПодтверждениеОплатыНДСВБюджет
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураНалоговыйАгент КАК СчетФактураНалоговыйАгент
	|		ПО ПодтверждениеОплатыНДСВБюджет.СчетФактура = СчетФактураНалоговыйАгент.Ссылка
	|ГДЕ
	|	ПодтверждениеОплатыНДСВБюджет.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.ОжидаетОплаты)
	|	И СчетФактураНалоговыйАгент.Проведен
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	NULL,
	|	ДвиженияТекущегоДокумента.Субконто1,
	|	ДвиженияТекущегоДокумента.Субконто2,
	|	ДвиженияТекущегоДокумента.Субконто3,
	|	ДвиженияТекущегоДокумента.СуммаОстатокКт
	|ИЗ
	|	ДвиженияТекущегоДокумента КАК ДвиженияТекущегоДокумента
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	СчетФактура,
	|	Субконто2,
	|	Субконто3
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Задолженность6832.Субконто1 КАК Субконто1,
	|	Задолженность6832.Субконто2 КАК Субконто2,
	|	Задолженность6832.Субконто3 КАК Субконто3,
	|	СУММА(Задолженность6832.СуммаОстатокКт) КАК СуммаОстатокКт,
	|	СчетФактураНалоговыйАгент.ВидАгентскогоДоговора КАК ВидАгентскогоДоговора,
	|	СчетФактураНалоговыйАгент.Ссылка КАК Ссылка,
	|	СчетФактураНалоговыйАгент.Организация КАК Организация
	|ПОМЕСТИТЬ Задолженность6832
	|ИЗ
	|	Задолженность6832Предварительная КАК Задолженность6832
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураНалоговыйАгент КАК СчетФактураНалоговыйАгент
	|		ПО (СчетФактураНалоговыйАгент.Ссылка = Задолженность6832.СчетФактура
	|				ИЛИ Задолженность6832.СчетФактура ЕСТЬ NULL)
	|			И Задолженность6832.Субконто2 = СчетФактураНалоговыйАгент.Договор
	|			И Задолженность6832.Субконто3 = СчетФактураНалоговыйАгент.ДокументОснование
	|
	|СГРУППИРОВАТЬ ПО
	|	Задолженность6832.Субконто1,
	|	Задолженность6832.Субконто3,
	|	Задолженность6832.Субконто2,
	|	СчетФактураНалоговыйАгент.ВидАгентскогоДоговора,
	|	СчетФактураНалоговыйАгент.Ссылка,
	|	СчетФактураНалоговыйАгент.Организация
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ВидАгентскогоДоговора
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Задолженность6832.Субконто1 КАК Контрагент,
	|	Задолженность6832.Субконто2 КАК Договор,
	|	Задолженность6832.Субконто3 КАК ДокументРасчетов,
	|	Задолженность6832.СуммаОстатокКт КАК Сумма,
	|	ВЫБОР
	|		КОГДА ДанныеПервичныхДокументов.Дата <> ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА НАЧАЛОПЕРИОДА(ДанныеПервичныхДокументов.Дата, ДЕНЬ)
	|		ИНАЧЕ НАЧАЛОПЕРИОДА(ДанныеПервичныхДокументов.ДатаРегистратора, ДЕНЬ)
	|	КОНЕЦ КАК СрокУплаты
	|ИЗ
	|	Задолженность6832 КАК Задолженность6832
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
	|		ПО Задолженность6832.Субконто3 = ДанныеПервичныхДокументов.Документ
	|			И Задолженность6832.Организация = ДанныеПервичныхДокументов.Организация
	|ГДЕ
	|	Задолженность6832.ВидАгентскогоДоговора В (ЗНАЧЕНИЕ(Перечисление.ВидыАгентскихДоговоров.Нерезидент), 
	|											   ЗНАЧЕНИЕ(Перечисление.ВидыАгентскихДоговоров.НерезидентЭлектронныеУслуги))
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Задолженность6832.Субконто1 КАК Контрагент,
	|	Задолженность6832.Субконто2 КАК Договор,
	|	Задолженность6832.Субконто3 КАК ДокументРасчетов,
	|	СчетФактура.СуммаНДС КАК ИсчисленоНДС,
	|	Задолженность6832.СуммаОстатокКт КАК ОстатокНДС,
	|	ВЫБОР
	|		КОГДА ДанныеПервичныхДокументов.Дата <> ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА НАЧАЛОПЕРИОДА(ДанныеПервичныхДокументов.Дата, КВАРТАЛ)
	|		ИНАЧЕ НАЧАЛОПЕРИОДА(ДанныеПервичныхДокументов.ДатаРегистратора, КВАРТАЛ)
	|	КОНЕЦ КАК ПериодОплатыКонтрагенту
	|ИЗ
	|	Задолженность6832 КАК Задолженность6832
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
	|		ПО Задолженность6832.Субконто3 = ДанныеПервичныхДокументов.Документ
	|			И Задолженность6832.Организация = ДанныеПервичныхДокументов.Организация
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураНалоговыйАгент КАК СчетФактура
	|		ПО (СчетФактура.ДокументОснование = Задолженность6832.Субконто3)
	|ГДЕ
	|	Задолженность6832.ВидАгентскогоДоговора В (ЗНАЧЕНИЕ(Перечисление.ВидыАгентскихДоговоров.Аренда), 
	|											   ЗНАЧЕНИЕ(Перечисление.ВидыАгентскихДоговоров.РеализацияИмущества))
	|	И НЕ СчетФактура.ПометкаУдаления"
	
КонецФункции

Функция РаспределитьЗадолженностьПоСрокамУплаты(МассивЗадолженностей, РеквизитыДокумента)
	
	ЗадолженностьПоСрокам = МассивЗадолженностей[4].Выгрузить();
	ЗадолженностьПоАренде = МассивЗадолженностей[5].Выгрузить();
	
	ТекущийКвартал = НачалоКвартала(РеквизитыДокумента.ДатаДокумента);
	
	// Задолженность по аренде разобъем на суммы по срокам уплаты.
	Для Каждого СтрокаТаблицы Из ЗадолженностьПоАренде Цикл
		// Если платеж контрагенту был в текущем квартале - уплачивать налог рано,
		// такой платеж в списке предстоящих не показываем.
		// Так же не учитываем "будущие" оплаты (применительно к дате документа).
		Если СтрокаТаблицы.ПериодОплатыКонтрагенту >= ТекущийКвартал Тогда
			Продолжить;
		КонецЕсли;
		
		// Определим квартал уплаты налога, сумму ежемесячного платежа.
		КварталУплатыНалога = ДобавитьМесяц(СтрокаТаблицы.ПериодОплатыКонтрагенту, 3);
		
		НоваяСтрокаЗадолженности = ЗадолженностьПоСрокам.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрокаЗадолженности, СтрокаТаблицы);
		НоваяСтрокаЗадолженности.Сумма = СтрокаТаблицы.ИсчисленоНДС;
		НоваяСтрокаЗадолженности.СрокУплаты = СрокУплатыНалогаВБюджет(КварталУплатыНалога);
		
	КонецЦикла;
	
	ЗадолженностьПоСрокам.Сортировать("СрокУплаты, Сумма Убыв");
	
	Возврат ЗадолженностьПоСрокам;
	
КонецФункции

Функция СрокУплатыНалогаВБюджет(МесяцУплаты)
	
	День = 24 * 60 * 60;
	ДатаУплатыНалога = НачалоДня(МесяцУплаты) + 24 * День;
		
	// Перенесем на рабочие дни
	ПроизводственныйКалендарь = КалендарныеГрафики.ОсновнойПроизводственныйКалендарь();
		
	Если НЕ ЗначениеЗаполнено(ПроизводственныйКалендарь) Тогда
		Возврат КонецДня(ДатаУплатыНалога);
	КонецЕсли; 
		
	ИсходныеДаты = Новый Массив;
	ИсходныеДаты.Добавить(ДатаУплатыНалога);
		
	ГрафикПереноса = КалендарныеГрафики.ДатыБлижайшихРабочихДней(
		ПроизводственныйКалендарь, 
		ИсходныеДаты,
		Ложь,
		Ложь,
		Истина);
	
	ДатаПереноса = ?(ЗначениеЗаполнено(ГрафикПереноса[ДатаУплатыНалога]), 
		ГрафикПереноса[ДатаУплатыНалога], ДатаУплатыНалога);
	
	Возврат КонецДня(ДатаПереноса);
	
КонецФункции

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

#Область ВвозТоваровИзЕАЭС

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

Функция ТекстЗапросаЗадолженностьПоВвозуТоваров()
	
	// Получаем начисленный налог, подлежащий уплате
	// с учетом ситуации, когда платежный документ проведен.
	
	// Описание пакетов:
	// - таблица движений субконто текущего документа,
	// - данные движений по основной таблице регистра бухгалтерии текущего документа, соединенные с таблицей субконто,
	// - остаток НДС к уплате, дополненный движениями текущего документа,
	// - налог, подлежащий уплате 20 числа следующего месяца.
	
	Возврат
	"ВЫБРАТЬ
	|	ХозрасчетныйСубконто.НомерСтроки КАК НомерСтроки,
	|	ХозрасчетныйСубконто.Вид КАК Вид,
	|	ХозрасчетныйСубконто.Значение КАК Значение
	|ПОМЕСТИТЬ ЗначенияСубконто
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
	|ГДЕ
	|	ХозрасчетныйСубконто.Регистратор = &ТекущийДокумент
	|	И ХозрасчетныйСубконто.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет)
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	НомерСтроки,
	|	Вид
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Контрагенты.Значение КАК Субконто1,
	|	Договоры.Значение КАК Субконто2,
	|	ДокументыРасчетов.Значение КАК Субконто3,
	|	Хозрасчетный.Сумма КАК СуммаОстатокКт,
	|	Хозрасчетный.Организация КАК Организация
	|ПОМЕСТИТЬ ДвиженияТекущегоДокумента
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗначенияСубконто КАК Договоры
	|		ПО Хозрасчетный.НомерСтроки = Договоры.НомерСтроки
	|			И (Договоры.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры))
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗначенияСубконто КАК Контрагенты
	|		ПО Хозрасчетный.НомерСтроки = Контрагенты.НомерСтроки
	|			И (Контрагенты.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты))
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗначенияСубконто КАК ДокументыРасчетов
	|		ПО Хозрасчетный.НомерСтроки = ДокументыРасчетов.НомерСтроки
	|			И (ДокументыРасчетов.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.СФПолученные))
	|ГДЕ
	|	Хозрасчетный.Регистратор = &ТекущийДокумент
	|	И Хозрасчетный.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.НДСТаможенныйСоюзКУплате)
	|	И Хозрасчетный.Активность
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ЗаявлениеОВвозеТоваров.Контрагент КАК Субконто1,
	|	ЗаявлениеОВвозеТоваров.Договор КАК Субконто2,
	|	ЗаявлениеОВвозеТоваров.Ссылка КАК Субконто3,
	|	ОжидаетОплаты.Сумма - ЕСТЬNULL(Оплачено.Сумма, 0) КАК СуммаОстатокКт,
	|	ЗаявлениеОВвозеТоваров.Организация КАК Организация
	|ПОМЕСТИТЬ Задолженность6842
	|ИЗ
	|	Документ.ЗаявлениеОВвозеТоваров КАК ЗаявлениеОВвозеТоваров
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК ОжидаетОплаты
	|		ПО ЗаявлениеОВвозеТоваров.Ссылка = ОжидаетОплаты.СчетФактура
	|			И (ОжидаетОплаты.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.ОжидаетОплаты))
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|			Т.СчетФактура КАК СчетФактура,
	|			СУММА(Т.Сумма) КАК Сумма
	|		ИЗ
	|			РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК Т
	|		ГДЕ
	|			Т.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.Оплачено)
	|		
	|		СГРУППИРОВАТЬ ПО
	|			Т.СчетФактура) КАК Оплачено
	|		ПО ЗаявлениеОВвозеТоваров.Ссылка = Оплачено.СчетФактура
	|ГДЕ
	|	ЗаявлениеОВвозеТоваров.Проведен
	|	И ОжидаетОплаты.Сумма - ЕСТЬNULL(Оплачено.Сумма, 0) > 0
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ДвиженияТекущегоДокумента.Субконто1,
	|	ДвиженияТекущегоДокумента.Субконто2,
	|	ДвиженияТекущегоДокумента.Субконто3,
	|	ДвиженияТекущегоДокумента.СуммаОстатокКт,
	|	ДвиженияТекущегоДокумента.Организация
	|ИЗ
	|	ДвиженияТекущегоДокумента КАК ДвиженияТекущегоДокумента
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Организация,
	|	Субконто3
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Задолженность6842.Субконто1 КАК Контрагент,
	|	Задолженность6842.Субконто2 КАК Договор,
	|	Задолженность6842.Субконто3 КАК ДокументРасчетов,
	|	СУММА(Задолженность6842.СуммаОстатокКт) КАК Сумма,
	|	ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДанныеПервичныхДокументов.ДатаРегистратора, МЕСЯЦ), ДЕНЬ, 21) КАК СрокУплаты
	|ИЗ
	|	Задолженность6842 КАК Задолженность6842
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
	|		ПО Задолженность6842.Субконто3 = ДанныеПервичныхДокументов.Документ
	|			И Задолженность6842.Организация = ДанныеПервичныхДокументов.Организация
	|
	|СГРУППИРОВАТЬ ПО
	|	Задолженность6842.Субконто1,
	|	Задолженность6842.Субконто3,
	|	Задолженность6842.Субконто2,
	|	ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДанныеПервичныхДокументов.ДатаРегистратора, МЕСЯЦ), ДЕНЬ, 21)"
	
КонецФункции

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

#КонецОбласти
//-- НЕ УТ

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

#КонецЕсли

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