#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ТекстСостояниеОплатыНДСВБюджет(СчетФактура) Экспорт
Если Не ЗначениеЗаполнено(СчетФактура) Тогда
Возврат НСтр("ru = 'Ожидает оплаты НДС в бюджет'");
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ТекущееСостояние = Перечисления.СостоянияОплатыНДСВБюджет.ПустаяСсылка();
Набор = СоздатьНаборЗаписей();
Набор.Отбор.СчетФактура.Установить(СчетФактура);
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ОжидаетОплаты);
Набор.Прочитать();
КОплате = Набор.Итог("Сумма");
Если КОплате > 0 Тогда
ТекущееСостояние = Перечисления.СостоянияОплатыНДСВБюджет.ОжидаетОплаты;
КонецЕсли;
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.Оплачено);
Набор.Прочитать();
ТаблицаОплат = Набор.Выгрузить();
ТаблицаОплат.Сортировать("ДатаПодтвержденияОплаты Убыв");
Если ТаблицаОплат.Количество() > 0 Тогда
ТекущееСостояние = Перечисления.СостоянияОплатыНДСВБюджет.Оплачено;
ДатаПодтвержденияОплаты = Формат(ТаблицаОплат[0].ДатаПодтвержденияОплаты, "ДЛФ=D");
Если ТаблицаОплат.Количество() > 1 Тогда
СтрокаПлатежноРасчетныеДокументы = НСтр("ru = '<несколько платежей>'");
Иначе
СтрокаПлатежноРасчетныеДокументы = НСтр("ru = '№'") + " " + ТаблицаОплат[0].СтрокаПлатежноРасчетныеДокументы;
КонецЕсли;
КонецЕсли;
Если ТипЗнч(СчетФактура) = Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров")
Или ВидЦенностиВводОстатков(СчетФактура) = Перечисления.ВидыЦенностей.ТаможенныйСоюз Тогда
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение);
Набор.Прочитать();
Если Набор.Количество() Тогда
ТекущееСостояние = Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение;
НомерОтметкиОРегистрации = Набор[0].НомерОтметкиОРегистрации;
ДатаПодтвержденияОплаты = Формат(Набор[0].ДатаПодтвержденияОплаты, "ДЛФ=D");
КонецЕсли;
КонецЕсли;
Если ТекущееСостояние = Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Оплата подтверждена %1 г. Отметка № %2'"),
ДатаПодтвержденияОплаты,
НомерОтметкиОРегистрации);
ИначеЕсли ТекущееСостояние = Перечисления.СостоянияОплатыНДСВБюджет.Оплачено Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'НДС оплачен %1 (%2)'"),
ДатаПодтвержденияОплаты,
СтрокаПлатежноРасчетныеДокументы);
ИначеЕсли ТекущееСостояние = Перечисления.СостоянияОплатыНДСВБюджет.ОжидаетОплаты Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Укажите реквизиты документов оплаты НДС. Всего к оплате (руб.): %1.'"),
Формат(КОплате, "ЧДЦ=2; ЧГ=0"));
Иначе
Возврат НСтр("ru = 'Ожидает оплаты НДС в бюджет'");
КонецЕсли;
КонецФункции
Процедура ЗарегистрироватьСчетаФактурыОжидаетОплатыНДС(СчетаФактуры, ДокументРегистратор, Проведен) Экспорт
Если Не ЗначениеЗаполнено(ДокументРегистратор) Тогда
Возврат;
КонецЕсли;
СчетаФактуры.Свернуть("СчетФактура,ВидАгентскогоДоговора,ОплатаЧерезЕдиныйЛицевойСчет","СуммаОплаты");
УстановитьПривилегированныйРежим(Истина);
Если Проведен Тогда
Набор = РегистрыСведений.ПодтверждениеОплатыНДСВБюджет.СоздатьНаборЗаписей();
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ОжидаетОплаты);
Набор.Отбор.ДокументРегистратор.Установить(ДокументРегистратор);
Для Каждого СтрокаТЗ Из СчетаФактуры Цикл
Запись = Набор.Добавить();
Запись.Состояние = Перечисления.СостоянияОплатыНДСВБюджет.ОжидаетОплаты;
Запись.ДокументРегистратор = ДокументРегистратор;
Запись.СчетФактура = СтрокаТЗ.СчетФактура;
Запись.ВидАгентскогоДоговора = СтрокаТЗ.ВидАгентскогоДоговора;
Запись.Сумма = СтрокаТЗ.СуммаОплаты;
КонецЦикла;
Набор.Записать();
Если ТипЗнч(ДокументРегистратор) = Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров") Тогда
МассивСостояний = Новый Массив;
МассивСостояний.Добавить(Перечисления.СостоянияОплатыНДСВБюджет.Оплачено);
МассивСостояний.Добавить(Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение);
ЗарегистрироватьЗаписиОплатыДляИсправительногоЗаявления(ДокументРегистратор, МассивСостояний);
КонецЕсли;
КонецЕсли;
Если Не Проведен Тогда
Набор = РегистрыСведений.ПодтверждениеОплатыНДСВБюджет.СоздатьНаборЗаписей();
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ОжидаетОплаты);
Набор.Отбор.ДокументРегистратор.Установить(ДокументРегистратор);
Набор.Записать();
КонецЕсли;
ОбновитьСостояниеПодтвержденияОплаты(СчетаФактуры, Проведен);
КонецПроцедуры
Процедура ЗарегистрироватьПланированиеОплатыНДСПоСчетамФактурам(СчетаФактуры, ТипНалога, ДокументРегистратор, Проведен) Экспорт
Если Не ЗначениеЗаполнено(ДокументРегистратор) Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
СчетаФактуры = ПреобразоватьТаблицуСчетовФактур(СчетаФактуры, ТипНалога);
Если Проведен Тогда
Набор = РегистрыСведений.ПодтверждениеОплатыНДСВБюджет.СоздатьНаборЗаписей();
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ОжидаетОплаты);
Для Каждого СтрокаТЗ Из СчетаФактуры Цикл
Набор.Отбор.СчетФактура.Установить(СтрокаТЗ.СчетФактура);
Набор.Прочитать();
Для Каждого Запись Из Набор Цикл
Запись.ЗаявкаНаРасходованиеДенежныхСредств = ДокументРегистратор;
КонецЦикла;
Набор.Записать();
КонецЦикла;
КонецЕсли;
Если Не Проведен Тогда
Набор = РегистрыСведений.ПодтверждениеОплатыНДСВБюджет.СоздатьНаборЗаписей();
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ОжидаетОплаты);
Для Каждого СтрокаТЗ Из СчетаФактуры Цикл
Набор.Отбор.СчетФактура.Установить(СтрокаТЗ.СчетФактура);
Набор.Прочитать();
Для Каждого Запись Из Набор Цикл
Если Запись.ЗаявкаНаРасходованиеДенежныхСредств = ДокументРегистратор Тогда
Запись.ЗаявкаНаРасходованиеДенежныхСредств = Неопределено;
КонецЕсли;
КонецЦикла;
Набор.Записать();
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ЗарегистрироватьОплатуНДСПоСчетамФактурам(СчетаФактуры, ДокументРегистратор, РеквизитыДокументаОплаты, Проведен) Экспорт
Если Не ЗначениеЗаполнено(ДокументРегистратор) Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
СчетаФактуры = ПреобразоватьТаблицуСчетовФактур(СчетаФактуры, РеквизитыДокументаОплаты.ТипНалога);
Если Проведен Тогда
Набор = РегистрыСведений.ПодтверждениеОплатыНДСВБюджет.СоздатьНаборЗаписей();
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.Оплачено);
Набор.Отбор.ДокументРегистратор.Установить(ДокументРегистратор);
Для Каждого СтрокаТЗ Из СчетаФактуры Цикл
Запись = Набор.Добавить();
Запись.Состояние = Перечисления.СостоянияОплатыНДСВБюджет.Оплачено;
Запись.ДокументРегистратор = ДокументРегистратор;
Запись.СчетФактура = СтрокаТЗ.СчетФактура;
Запись.Сумма = СтрокаТЗ.СуммаОплаты;
Запись.ДатаПодтвержденияОплаты = РеквизитыДокументаОплаты.ДатаПеречисленияВБюджет;
Если ЗначениеЗаполнено(СтрокаТЗ.НомерДокументаПеречисленияНалога)
И ЗначениеЗаполнено(СтрокаТЗ.ДатаДокументаПеречисленияНалога) Тогда
Запись.НомерДокументаПеречисленияНалога = СтрокаТЗ.НомерДокументаПеречисленияНалога;
Запись.ДатаДокументаПеречисленияНалога = СтрокаТЗ.ДатаДокументаПеречисленияНалога;
Иначе
Запись.НомерДокументаПеречисленияНалога = РеквизитыДокументаОплаты.НомерДокумента;
Запись.ДатаДокументаПеречисленияНалога = РеквизитыДокументаОплаты.ДатаДокумента;
КонецЕсли;
КонецЦикла;
Набор.Записать();
МассивСостояний = Новый Массив;
МассивСостояний.Добавить(Перечисления.СостоянияОплатыНДСВБюджет.Оплачено);
Для Каждого СтрокаТЗ Из СчетаФактуры Цикл
Если ТипЗнч(СтрокаТЗ.СчетФактура) = Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров") Тогда
ЗарегистрироватьЗаписиОплатыДляИсправительногоЗаявления(СтрокаТЗ.СчетФактура, МассивСостояний);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Не Проведен Тогда
Набор = РегистрыСведений.ПодтверждениеОплатыНДСВБюджет.СоздатьНаборЗаписей();
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.Оплачено);
Набор.Отбор.ДокументРегистратор.Установить(ДокументРегистратор);
Набор.Записать();
КонецЕсли;
ОбновитьСостояниеПодтвержденияОплаты(СчетаФактуры, Проведен);
КонецПроцедуры
#Область ФормаДокументыОплаты
Функция ПолучитьСуммуНДСКОплатеВБюджет(СчетФактура) Экспорт
УстановитьПривилегированныйРежим(Истина);
Если ТипЗнч(СчетФактура) = Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров")
ИЛИ ТипЗнч(СчетФактура) = Тип("ДокументСсылка.ТаможеннаяДекларацияИмпорт") Тогда
Товары = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СчетФактура, "Товары").Выгрузить();
Возврат Товары.Итог("СуммаНДС");
ИначеЕсли ТипЗнч(СчетФактура) = Тип("ДокументСсылка.СчетФактураНалоговыйАгент") Тогда
РасшифровкаСуммы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СчетФактура, "РасшифровкаСуммы").Выгрузить();
Возврат РасшифровкаСуммы.Итог("СуммаНДС");
ИначеЕсли ТипЗнч(СчетФактура) = Тип("ДокументСсылка.ПервичныйДокумент") Тогда
Набор = СоздатьНаборЗаписей();
Набор.Отбор.СчетФактура.Установить(СчетФактура);
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ОжидаетОплаты);
Набор.Прочитать();
Если Набор.Количество() Тогда
Возврат Набор[0].Сумма;
КонецЕсли;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Функция ПолучитьДанныеОтметкиНалоговогоОргана(СчетФактура) Экспорт
СтруктураОтметки = Неопределено;
УстановитьПривилегированныйРежим(Истина);
Если (ТипЗнч(СчетФактура) = Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров")
Или ТипЗнч(СчетФактура) = Тип("ДокументСсылка.ПервичныйДокумент")) И Не СчетФактура.Пустая() Тогда
Набор = СоздатьНаборЗаписей();
Набор.Отбор.СчетФактура.Установить(СчетФактура);
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение);
Набор.Прочитать();
Если Набор.Количество() = 1 Тогда
СтруктураОтметки = Новый Структура("НомерОтметкиОРегистрации,ДатаПодтвержденияОплаты");
ЗаполнитьЗначенияСвойств(СтруктураОтметки, Набор[0]);
КонецЕсли;
КонецЕсли;
Возврат СтруктураОтметки;
КонецФункции
Функция ПолучитьДанныеОплат(СчетФактура) Экспорт
УстановитьПривилегированныйРежим(Истина);
Набор = СоздатьНаборЗаписей();
Набор.Отбор.СчетФактура.Установить(СчетФактура);
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.Оплачено);
Набор.Прочитать();
Возврат Набор.Выгрузить();
КонецФункции
Функция СформироватьТаблицуОплатНДСВБюджет(СчетФактура, РучныеКорректировки = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
ВременныеТаблицы = Новый МенеджерВременныхТаблиц;
СформироватьДанныеСчетовФактур(СчетФактура, ВременныеТаблицы);
СформироватьДанныеОплаты(ВременныеТаблицы);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = ВременныеТаблицы;
Если ТипЗнч(СчетФактура) = Тип("ДокументСсылка.ТаможеннаяДекларацияИмпорт")
Или ВидЦенностиВводОстатков(СчетФактура) = Перечисления.ВидыЦенностей.ТаможенныеПлатежи Тогда
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РучныеКорректировки.РучнаяКорректировка КАК РучнаяКорректировка,
| РучныеКорректировки.Сумма КАК Сумма,
| РучныеКорректировки.Номер КАК Номер,
| РучныеКорректировки.Дата КАК Дата
|ПОМЕСТИТЬ ВтРучныеКорректировки
|ИЗ
| &РучныеКорректировки КАК РучныеКорректировки
|ГДЕ
| РучныеКорректировки.РучнаяКорректировка = ИСТИНА
|ИНДЕКСИРОВАТЬ ПО
| Номер,
| Дата
|;
|
|
|ВЫБРАТЬ
| ЛОЖЬ КАК РучнаяКорректировка,
| Оплаты.Номер КАК Номер,
| Оплаты.Дата КАК Дата,
| Оплаты.Сумма КАК Сумма
|ИЗ
| ВтОплаты КАК Оплаты
|ГДЕ
| НЕ (Оплаты.Номер, Оплаты.Дата) В
| (ВЫБРАТЬ
| ВтРучныеКорректировки.Номер КАК Номер,
| ВтРучныеКорректировки.Дата КАК Дата
| ИЗ
| ВтРучныеКорректировки КАК ВтРучныеКорректировки)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВтРучныеКорректировки.РучнаяКорректировка,
| ВтРучныеКорректировки.Номер,
| ВтРучныеКорректировки.Дата,
| ВтРучныеКорректировки.Сумма
|ИЗ
| ВтРучныеКорректировки КАК ВтРучныеКорректировки";
Иначе
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РучныеКорректировки.РучнаяКорректировка КАК РучнаяКорректировка,
| РучныеКорректировки.Сумма КАК Сумма,
| РучныеКорректировки.Номер КАК Номер,
| РучныеКорректировки.Дата КАК Дата,
| РучныеКорректировки.ДатаПеречисленияНалога КАК ДатаПеречисленияНалога
|ПОМЕСТИТЬ ВтРучныеКорректировки
|ИЗ
| &РучныеКорректировки КАК РучныеКорректировки
|ГДЕ
| РучныеКорректировки.РучнаяКорректировка = ИСТИНА
|ИНДЕКСИРОВАТЬ ПО
| Номер,
| Дата
|;
|
|
|ВЫБРАТЬ
| ЛОЖЬ КАК РучнаяКорректировка,
| Оплаты.Номер КАК Номер,
| Оплаты.Дата КАК Дата,
| Оплаты.Сумма КАК Сумма,
| Оплаты.ДатаПеречисленияНалога КАК ДатаПеречисленияНалога
|ИЗ
| ВтОплаты КАК Оплаты
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВтРучныеКорректировки.РучнаяКорректировка,
| ВтРучныеКорректировки.Номер,
| ВтРучныеКорректировки.Дата,
| ВтРучныеКорректировки.Сумма,
| ВтРучныеКорректировки.ДатаПеречисленияНалога
|ИЗ
| ВтРучныеКорректировки КАК ВтРучныеКорректировки";
Запрос.УстановитьПараметр("Дата", СчетФактура.Дата);
КонецЕсли;
Если РучныеКорректировки = Неопределено Тогда
РучныеКорректировки = Новый ТаблицаЗначений;
РучныеКорректировки.Колонки.Добавить("Сумма", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
РучныеКорректировки.Колонки.Добавить("Номер", ОбщегоНазначения.ОписаниеТипаСтрока(15));
РучныеКорректировки.Колонки.Добавить("Дата", ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты.Дата));
РучныеКорректировки.Колонки.Добавить("ДатаПеречисленияНалога", ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты.Дата));
РучныеКорректировки.Колонки.Добавить("РучнаяКорректировка", Новый ОписаниеТипов("Булево"));
КонецЕсли;
Запрос.УстановитьПараметр("РучныеКорректировки", РучныеКорректировки);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Процедура ЗаписатьДанныеОплаты(СчетФактура, ТаблицаОплат) Экспорт
УстановитьПривилегированныйРежим(Истина);
Набор = СоздатьНаборЗаписей();
Набор.Отбор.СчетФактура.Установить(СчетФактура);
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.Оплачено);
ТаблицаОплат.Свернуть("Дата,Номер,ДатаПеречисленияНалога,РучнаяКорректировка","Сумма");
Для Каждого СтрокаТаблицыОплат Из ТаблицаОплат Цикл
СтрокаОплаты = Набор.Добавить();
СтрокаОплаты.СчетФактура = СчетФактура;
СтрокаОплаты.Состояние = Перечисления.СостоянияОплатыНДСВБюджет.Оплачено;
СтрокаОплаты.Сумма = СтрокаТаблицыОплат.Сумма;
СтрокаОплаты.ДатаДокументаПеречисленияНалога = СтрокаТаблицыОплат.Дата;
СтрокаОплаты.НомерДокументаПеречисленияНалога = СтрокаТаблицыОплат.Номер;
СтрокаОплаты.ДатаПодтвержденияОплаты = СтрокаТаблицыОплат.ДатаПеречисленияНалога;
СтрокаОплаты.РучнаяКорректировка = СтрокаТаблицыОплат.РучнаяКорректировка;
КонецЦикла;
Набор.Записать();
Если Не (ТипЗнч(СчетФактура) = Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров")
Или ВидЦенностиВводОстатков(СчетФактура) = Перечисления.ВидыЦенностей.ТаможенныйСоюз) Тогда
Набор.Очистить();
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение);
КОплате = ПолучитьСуммуНДСКОплатеВБюджет(СчетФактура);
Оплачено = ТаблицаОплат.Итог("Сумма");
Если КОплате <= Оплачено Тогда
СтрокаПодтверждения = Набор.Добавить();
СтрокаПодтверждения.СчетФактура = СчетФактура;
СтрокаПодтверждения.Состояние = Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение;
Если ТаблицаОплат.Количество() > 0 Тогда
ТаблицаОплат.Сортировать("ДатаПеречисленияНалога Убыв");
Если Не ЗначениеЗаполнено(ТаблицаОплат[0].ДатаПеречисленияНалога) Тогда
ТаблицаОплат.Сортировать("Дата Убыв");
СтрокаПодтверждения.ДатаПодтвержденияОплаты = ТаблицаОплат[0].Дата;
Иначе
СтрокаПодтверждения.ДатаПодтвержденияОплаты = ТаблицаОплат[0].ДатаПеречисленияНалога;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Набор.Записать();
КонецЕсли;
Если ТипЗнч(СчетФактура) = Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров") Тогда
МассивСостояний = Новый Массив;
МассивСостояний.Добавить(Перечисления.СостоянияОплатыНДСВБюджет.Оплачено);
ЗарегистрироватьЗаписиОплатыДляИсправительногоЗаявления(СчетФактура, МассивСостояний);
КонецЕсли;
КонецПроцедуры
Процедура ЗаписатьПодтверждениеОплаты(СчетФактура, ОплатаПодтверждена, НомерОтметкиОРегистрации, ДатаПодтвержденияОплаты) Экспорт
Если ТипЗнч(СчетФактура) <> Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров")
И ТипЗнч(СчетФактура) <> Тип("ДокументСсылка.ПервичныйДокумент") Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Набор = СоздатьНаборЗаписей();
Набор.Отбор.СчетФактура.Установить(СчетФактура);
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение);
Если ОплатаПодтверждена Тогда
СтрокаПодтверждения = Набор.Добавить();
СтрокаПодтверждения.СчетФактура = СчетФактура;
СтрокаПодтверждения.Состояние = Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение;
СтрокаПодтверждения.ДатаПодтвержденияОплаты = ДатаПодтвержденияОплаты;
СтрокаПодтверждения.НомерОтметкиОРегистрации = НомерОтметкиОРегистрации;
КонецЕсли;
Набор.Записать();
Если ТипЗнч(СчетФактура) = Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров") Тогда
МассивСостояний = Новый Массив;
МассивСостояний.Добавить(Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение);
ЗарегистрироватьЗаписиОплатыДляИсправительногоЗаявления(СчетФактура, МассивСостояний);
КонецЕсли;
КонецПроцедуры
Функция ВидЦенностиВводОстатков(СчетФактура) Экспорт
Набор = СоздатьНаборЗаписей();
Набор.Отбор.СчетФактура.Установить(СчетФактура);
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ОжидаетОплаты);
Набор.Прочитать();
Если Набор.Количество() Тогда
Если ЗначениеЗаполнено(Набор[0].ДокументРегистратор)
И ТипЗнч(Набор[0].ДокументРегистратор) = Тип("ДокументСсылка.ВводОстатковНДСПредъявленного") Тогда
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Набор[0].ДокументРегистратор, "ВидЦенностиНДС");
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
КонецФункции
#КонецОбласти
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК Т
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК Т1
| ПО Т.СчетФактура = Т1.Ссылка
|;
|РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Т1.Организация)";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Прочее
Процедура СформироватьДанныеСчетовФактур(СчетаФактуры, ВременныеТаблицы)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = ВременныеТаблицы;
Запрос.Текст = "
|ВЫБРАТЬ
| ЗаявлениеОВвозеТоваров.Ссылка КАК Документ,
| ЗаявлениеОВвозеТоваров.Ссылка.Дата КАК Дата,
| ЗаявлениеОВвозеТоваров.Ссылка.Организация КАК Организация,
| СУММА(ЗаявлениеОВвозеТоваров.СуммаНДС) КАК СуммаНДС,
| ЗаявлениеОВвозеТоваров.Ссылка.Договор КАК Договор,
| NULL КАК ДокументОснование,
| NULL КАК ВидАгентскогоДоговора
|ПОМЕСТИТЬ ВтСчетаФактуры
|ИЗ
| Документ.ЗаявлениеОВвозеТоваров.Товары КАК ЗаявлениеОВвозеТоваров
|ГДЕ
| ЗаявлениеОВвозеТоваров.Ссылка В(&СчетаФактуры)
|
|СГРУППИРОВАТЬ ПО
| ЗаявлениеОВвозеТоваров.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СчетФактураНалоговыйАгент.Ссылка,
| СчетФактураНалоговыйАгент.Ссылка.Дата,
| СчетФактураНалоговыйАгент.Ссылка.Организация,
| СУММА(СчетФактураНалоговыйАгент.СуммаНДС),
| СчетФактураНалоговыйАгент.Ссылка.Договор,
| СчетФактураНалоговыйАгент.Ссылка.ДокументОснование,
| СчетФактураНалоговыйАгент.Ссылка.ВидАгентскогоДоговора
|ИЗ
| Документ.СчетФактураНалоговыйАгент.РасшифровкаСуммы КАК СчетФактураНалоговыйАгент
|ГДЕ
| СчетФактураНалоговыйАгент.Ссылка В(&СчетаФактуры)
| ИЛИ СчетФактураНалоговыйАгент.Ссылка.ДокументОснование В(&СчетаФактуры)
|
|СГРУППИРОВАТЬ ПО
| СчетФактураНалоговыйАгент.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаможеннаяДекларацияИмпорт.Ссылка,
| ТаможеннаяДекларацияИмпорт.Ссылка.Дата,
| ТаможеннаяДекларацияИмпорт.Ссылка.Организация,
| СУММА(ТаможеннаяДекларацияИмпорт.СуммаНДС),
| ТаможеннаяДекларацияИмпорт.Ссылка.Договор,
| NULL КАК ДокументОснование,
| NULL КАК ВидАгентскогоДоговора
|ИЗ
| Документ.ТаможеннаяДекларацияИмпорт.Товары КАК ТаможеннаяДекларацияИмпорт
|ГДЕ
| ТаможеннаяДекларацияИмпорт.Ссылка В(&СчетаФактуры)
|
|СГРУППИРОВАТЬ ПО
| ТаможеннаяДекларацияИмпорт.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПервичныйДокумент.Ссылка,
| ПервичныйДокумент.Дата,
| ПервичныйДокумент.Организация,
| СУММА(ПервичныйДокумент.СуммаРегл),
| ПервичныйДокумент.Договор,
| NULL КАК ДокументОснование,
| NULL КАК ВидАгентскогоДоговора
|ИЗ
| Документ.ПервичныйДокумент КАК ПервичныйДокумент
|ГДЕ
| ПервичныйДокумент.Ссылка В(&СчетаФактуры)
|
|СГРУППИРОВАТЬ ПО
| ПервичныйДокумент.Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Документ,
| ДокументОснование
|;
|
|
|ВЫБРАТЬ
| МИНИМУМ(НАЧАЛОПЕРИОДА(ОбщаяСчетаФактуры.Дата,ДЕНЬ)) КАК Дата
|ПОМЕСТИТЬ ВтНачалоРасчета
|ИЗ
| ВтСчетаФактуры КАК ОбщаяСчетаФактуры
|;
|";
Запрос.УстановитьПараметр("СчетаФактуры", СчетаФактуры);
Запрос.Выполнить();
КонецПроцедуры
Процедура СформироватьДанныеОплаты(ВременныеТаблицы)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = ВременныеТаблицы;
Запрос.УстановитьПараметр("НоваяАрхитектураВзаиморасчетов",ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов"));
Запрос.Текст = "
|ВЫБРАТЬ
| СчетаФактуры.Документ КАК СчетФактура,
| Расчеты.РасчетныйДокумент КАК ДокументОплаты,
| Расчеты.ПредоплатаРегл КАК Сумма,
| Расчеты.АналитикаУчетаПоПартнерам.Организация КАК Организация
|ПОМЕСТИТЬ ВтРасчеты
|ИЗ
| РегистрНакопления.РасчетыСПоставщикамиПоДокументам КАК Расчеты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтНачалоРасчета КАК НачалоРасчета
| ПО Расчеты.Период >= НачалоРасчета.Дата
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтСчетаФактуры КАК СчетаФактуры
| ПО Расчеты.Регистратор = СчетаФактуры.Документ
|ГДЕ
| Расчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| И Расчеты.Активность
| И НЕ &НоваяАрхитектураВзаиморасчетов
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СчетаФактуры.Документ КАК СчетФактура,
| Расчеты.Регистратор,
| ВЫБОР
| КОГДА Расчеты.РасчетныйДокумент = Расчеты.Регистратор
| ТОГДА Расчеты.ПредоплатаРегл
| ИНАЧЕ Расчеты.ДолгРегл
| КОНЕЦ,
| Расчеты.АналитикаУчетаПоПартнерам.Организация
|ИЗ
| РегистрНакопления.РасчетыСПоставщикамиПоДокументам КАК Расчеты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтНачалоРасчета КАК НачалоРасчета
| ПО Расчеты.Период >= НачалоРасчета.Дата
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтСчетаФактуры КАК СчетаФактуры
| ПО Расчеты.ЗаказПоставщику.Объект = СчетаФактуры.Документ
|ГДЕ
| Расчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| И Расчеты.Активность
| И НЕ &НоваяАрхитектураВзаиморасчетов
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СчетаФактуры.Документ КАК СчетФактура,
| Расчеты.Регистратор,
| Расчеты.ДолгРегл,
| Расчеты.АналитикаУчетаПоПартнерам.Организация
|ИЗ
| РегистрНакопления.РасчетыСПоставщикамиПоДокументам КАК Расчеты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтНачалоРасчета КАК НачалоРасчета
| ПО Расчеты.Период >= НачалоРасчета.Дата
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтСчетаФактуры КАК СчетаФактуры
| ПО Расчеты.РасчетныйДокумент = СчетаФактуры.Документ
|ГДЕ
| Расчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| И Расчеты.Активность
| И Расчеты.РасчетныйДокумент <> Расчеты.ЗаказПоставщику.Объект
| И Расчеты.РасчетныйДокумент <> Расчеты.Регистратор
| И НЕ &НоваяАрхитектураВзаиморасчетов
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СчетаФактуры.Документ КАК СчетФактура,
| Расчеты.РасчетныйДокумент КАК ДокументОплаты,
| Расчеты.ПредоплатаРегл КАК Сумма,
| Расчеты.АналитикаУчетаПоПартнерам.Организация КАК Организация
|ИЗ
| РегистрНакопления.РасчетыСПоставщикамиПоСрокам КАК Расчеты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтНачалоРасчета КАК НачалоРасчета
| ПО Расчеты.Период >= НачалоРасчета.Дата
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтСчетаФактуры КАК СчетаФактуры
| ПО Расчеты.ДокументРегистратор = СчетаФактуры.Документ
|ГДЕ
| Расчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| И &НоваяАрхитектураВзаиморасчетов
| И НЕ Расчеты.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереносАванса)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СчетаФактуры.Документ КАК СчетФактура,
| Расчеты.ДокументРегистратор,
| ВЫБОР
| КОГДА Расчеты.РасчетныйДокумент = Расчеты.ДокументРегистратор
| ТОГДА Расчеты.ПредоплатаРегл
| КОГДА Расчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И Расчеты.ДолгРегл > 0
| ТОГДА Расчеты.ДолгРегл
| ИНАЧЕ 0
| КОНЕЦ,
| Расчеты.АналитикаУчетаПоПартнерам.Организация
|ИЗ
| РегистрНакопления.РасчетыСПоставщикамиПоСрокам КАК Расчеты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтНачалоРасчета КАК НачалоРасчета
| ПО Расчеты.Период >= НачалоРасчета.Дата
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтСчетаФактуры КАК СчетаФактуры
| ПО Расчеты.ОбъектРасчетов.Объект = СчетаФактуры.Документ
|ГДЕ
| ВЫБОР
| КОГДА Расчеты.РасчетныйДокумент = Расчеты.ДокументРегистратор
| ТОГДА Расчеты.ПредоплатаРегл
| КОГДА Расчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И Расчеты.ДолгРегл > 0
| ТОГДА Расчеты.ДолгРегл
| ИНАЧЕ 0
| КОНЕЦ > 0
| И &НоваяАрхитектураВзаиморасчетов
| И НЕ Расчеты.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереносАванса)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СчетаФактуры.Документ КАК СчетФактура,
| Расчеты.ДокументРегистратор,
| Расчеты.ДолгРегл,
| Расчеты.АналитикаУчетаПоПартнерам.Организация
|ИЗ
| РегистрНакопления.РасчетыСПоставщикамиПоСрокам КАК Расчеты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтНачалоРасчета КАК НачалоРасчета
| ПО Расчеты.Период >= НачалоРасчета.Дата
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтСчетаФактуры КАК СчетаФактуры
| ПО Расчеты.РасчетныйДокумент = СчетаФактуры.Документ
|ГДЕ
| Расчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| И Расчеты.РасчетныйДокумент <> Расчеты.ОбъектРасчетов.Объект
| И Расчеты.РасчетныйДокумент <> Расчеты.ДокументРегистратор
| И &НоваяАрхитектураВзаиморасчетов
| И НЕ Расчеты.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереносАванса)
|;
|
|
|ВЫБРАТЬ
| Оплаты.СчетФактура КАК СчетФактура,
| Оплаты.ДокументРегистратор КАК ДокументОплаты,
| Оплаты.Сумма КАК Сумма,
| Оплаты.НомерДокументаПеречисленияНалога КАК Номер,
| Оплаты.ДатаДокументаПеречисленияНалога КАК Дата,
| Оплаты.ДатаПодтвержденияОплаты КАК ДатаПеречисленияНалога
|ПОМЕСТИТЬ ВтОплаты
|ИЗ
| РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК Оплаты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтСчетаФактуры КАК СчетаФактуры
| ПО Оплаты.СчетФактура = СчетаФактуры.Документ
|ГДЕ
| Оплаты.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.Оплачено)
| И (Оплаты.РучнаяКорректировка
| ИЛИ ТИПЗНАЧЕНИЯ(Оплаты.СчетФактура) = ТИП(Документ.ЗаявлениеОВвозеТоваров))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Расчеты.СчетФактура,
| Расчеты.ДокументОплаты,
| СУММА(Расчеты.Сумма),
| ДанныеПервичныхДокументов.Номер,
| ДанныеПервичныхДокументов.Дата,
| NULL
|ИЗ
| ВтРасчеты КАК Расчеты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
| ПО Расчеты.ДокументОплаты = ДанныеПервичныхДокументов.Документ
| И Расчеты.Организация = ДанныеПервичныхДокументов.Организация
|
|СГРУППИРОВАТЬ ПО
| Расчеты.СчетФактура,
| Расчеты.ДокументОплаты,
| ДанныеПервичныхДокументов.Номер,
| ДанныеПервичныхДокументов.Дата
|
|ИМЕЮЩИЕ
| СУММА(Расчеты.Сумма) > 0
|
|ИНДЕКСИРОВАТЬ ПО
| Номер,
| Дата
|;
|
|
|УНИЧТОЖИТЬ ВтРасчеты
|;
|";
Запрос.Выполнить();
КонецПроцедуры
Функция ПреобразоватьТаблицуСчетовФактур(СчетаФактуры, ТипНалога)
Если ТипНалога = Справочники.ВидыНалоговВзносов.НДС_НалоговыйАгент Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("СчетаФактуры", СчетаФактуры);
Запрос.Текст =
"ВЫБРАТЬ
| СчетаФактуры.СчетФактура КАК СчетФактура,
| СчетаФактуры.СуммаОплаты
|ПОМЕСТИТЬ СчетаФактуры
|ИЗ
| &СчетаФактуры КАК СчетаФактуры
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура
|;
|
|
|ВЫБРАТЬ
| СчетФактураНалоговыйАгент.Ссылка КАК СчетФактура,
| ЛОЖЬ КАК ОплатаЧерезЕдиныйЛицевойСчет,
| СУММА(СчетаФактуры.СуммаОплаты) КАК СуммаОплаты,
| НЕОПРЕДЕЛЕНО КАК НомерДокументаПеречисленияНалога,
| НЕОПРЕДЕЛЕНО КАК ДатаДокументаПеречисленияНалога
|ИЗ
| СчетаФактуры КАК СчетаФактуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураНалоговыйАгент КАК СчетФактураНалоговыйАгент
| ПО СчетаФактуры.СчетФактура = СчетФактураНалоговыйАгент.ДокументОснование
|СГРУППИРОВАТЬ ПО
| СчетФактураНалоговыйАгент.Ссылка";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
СчетаФактуры.Очистить();
Иначе
СчетаФактуры = Результат.Выгрузить();
КонецЕсли;
Иначе
МассивПустыхСтрок = Новый Массив;
ТипыСчетовФактур = Метаданные.РегистрыСведений.ПодтверждениеОплатыНДСВБюджет.Измерения.СчетФактура.Тип;
Для Каждого СтрокаСчетаФактуры Из СчетаФактуры Цикл
Если Не ЗначениеЗаполнено(СтрокаСчетаФактуры.СчетФактура)
Или Не ТипыСчетовФактур.СодержитТип(ТипЗнч(СтрокаСчетаФактуры.СчетФактура)) Тогда
МассивПустыхСтрок.Добавить(СтрокаСчетаФактуры);
КонецЕсли;
КонецЦикла;
Для Каждого ПустаяСтрока Из МассивПустыхСтрок Цикл
СчетаФактуры.Удалить(ПустаяСтрока);
КонецЦикла;
СчетаФактуры.Свернуть("СчетФактура,ОплатаЧерезЕдиныйЛицевойСчет,НомерДокументаПеречисленияНалога,ДатаДокументаПеречисленияНалога","СуммаОплаты");
КонецЕсли;
Возврат СчетаФактуры;
КонецФункции
Процедура ОбновитьСостояниеПодтвержденияОплаты(СчетаФактуры, Проведен)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("СчетаФактуры", СчетаФактуры);
Если Проведен Тогда
Запрос.Текст =
"ВЫБРАТЬ
| СчетаФактуры.СчетФактура КАК СчетФактура,
| СчетаФактуры.ОплатаЧерезЕдиныйЛицевойСчет,
| СчетаФактуры.СуммаОплаты
|ПОМЕСТИТЬ СчетаФактуры
|ИЗ
| &СчетаФактуры КАК СчетаФактуры
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура
|;
|
|
|ВЫБРАТЬ
| ПодтверждениеОплатыНДСВБюджет.СчетФактура КАК СчетФактура,
| СУММА(ПодтверждениеОплатыНДСВБюджет.Сумма) КАК Сумма,
| МАКСИМУМ(ПодтверждениеОплатыНДСВБюджет.ДатаПодтвержденияОплаты) КАК ДатаПодтвержденияОплаты
|ПОМЕСТИТЬ Оплачено
|ИЗ
| РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК ПодтверждениеОплатыНДСВБюджет
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактуры КАК СчетаФактуры
| ПО ПодтверждениеОплатыНДСВБюджет.СчетФактура = СчетаФактуры.СчетФактура
|ГДЕ
| ТИПЗНАЧЕНИЯ(ПодтверждениеОплатыНДСВБюджет.СчетФактура) <> ТИП(Документ.ЗаявлениеОВвозеТоваров)
| И ТИПЗНАЧЕНИЯ(ПодтверждениеОплатыНДСВБюджет.ДокументРегистратор) <> ТИП(Документ.АвансовыйОтчет)
| И ПодтверждениеОплатыНДСВБюджет.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОплатыНДСВБюджет.Оплачено)
|СГРУППИРОВАТЬ ПО
| ПодтверждениеОплатыНДСВБюджет.СчетФактура
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура
|;
|
|
|ВЫБРАТЬ
| СчетаФактуры.СчетФактура,
| ВЫБОР
| КОГДА СчетаФактуры.ОплатаЧерезЕдиныйЛицевойСчет
| ТОГДА СчетаФактуры.СуммаОплаты
| КОГДА СчетаФактуры.СуммаОплаты > ЕСТЬNULL(Оплачено.Сумма, 0)
| ТОГДА 0
| ИНАЧЕ Оплачено.Сумма
| КОНЕЦ КАК Сумма,
| ЕСТЬNULL(Оплачено.ДатаПодтвержденияОплаты, ДАТАВРЕМЯ(1,1,1)) КАК ДатаПодтвержденияОплаты
|ИЗ
| СчетаФактуры КАК СчетаФактуры
| ЛЕВОЕ СОЕДИНЕНИЕ Оплачено КАК Оплачено
| ПО Оплачено.СчетФактура = СчетаФактуры.СчетФактура
|ГДЕ
| ТИПЗНАЧЕНИЯ(СчетаФактуры.СчетФактура) <> ТИП(Документ.ЗаявлениеОВвозеТоваров)
|";
Выборка = Запрос.Выполнить().Выбрать();
Набор = РегистрыСведений.ПодтверждениеОплатыНДСВБюджет.СоздатьНаборЗаписей();
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение);
Пока Выборка.Следующий() Цикл
Набор.Отбор.СчетФактура.Установить(Выборка.СчетФактура);
Если Выборка.Сумма = 0 Тогда
Набор.Записать();
Иначе
Запись = Набор.Добавить();
Запись.Состояние = Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение;
Запись.СчетФактура = Выборка.СчетФактура;
Запись.ДатаПодтвержденияОплаты = Выборка.ДатаПодтвержденияОплаты;
Запись.Сумма = Выборка.Сумма;
Набор.Записать();
Набор.Очистить();
КонецЕсли;
КонецЦикла;
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| СчетаФактуры.СчетФактура КАК СчетФактура,
| СчетаФактуры.СуммаОплаты
|ПОМЕСТИТЬ СчетаФактуры
|ИЗ
| &СчетаФактуры КАК СчетаФактуры
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура
|;
|
|
|ВЫБРАТЬ
| ПодтверждениеОплатыНДСВБюджет.СчетФактура КАК СчетФактура
|ИЗ
| РегистрСведений.ПодтверждениеОплатыНДСВБюджет КАК ПодтверждениеОплатыНДСВБюджет
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактуры КАК СчетаФактуры
| ПО ПодтверждениеОплатыНДСВБюджет.СчетФактура = СчетаФактуры.СчетФактура
|ГДЕ
| ТИПЗНАЧЕНИЯ(ПодтверждениеОплатыНДСВБюджет.СчетФактура) <> ТИП(Документ.ЗаявлениеОВвозеТоваров)
| И ПодтверждениеОплатыНДСВБюджет.Состояние = ЗНАЧЕНИЕ(перечисление.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение)";
Выборка = Запрос.Выполнить().Выбрать();
Набор = РегистрыСведений.ПодтверждениеОплатыНДСВБюджет.СоздатьНаборЗаписей();
Набор.Отбор.Состояние.Установить(Перечисления.СостоянияОплатыНДСВБюджет.ПолученоПодтверждение);
Пока Выборка.Следующий() Цикл
Набор.Отбор.СчетФактура.Установить(Выборка.СчетФактура);
Набор.Записать();
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ЗарегистрироватьЗаписиОплатыДляИсправительногоЗаявления(ДокументРегистратор, МассивСостояний);
РеквизитыДокументаРегистратора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументРегистратор, "Исправление, ИсправляемыйДокумент");
Если РеквизитыДокументаРегистратора.Исправление Тогда
Если Не ЗначениеЗаполнено(РеквизитыДокументаРегистратора.ИсправляемыйДокумент) Тогда
Возврат;
КонецЕсли;
ИсходныйНаборОплат = СоздатьНаборЗаписей();
ИсходныйНаборОплат.Отбор.СчетФактура.Установить(РеквизитыДокументаРегистратора.ИсправляемыйДокумент);
Набор = СоздатьНаборЗаписей();
Набор.Отбор.СчетФактура.Установить(ДокументРегистратор);
Для Каждого ТекущееСостояние Из МассивСостояний Цикл
Набор.Отбор.Состояние.Установить(ТекущееСостояние);
ИсходныйНаборОплат.Отбор.Состояние.Установить(ТекущееСостояние);
ИсходныйНаборОплат.Прочитать();
Для Каждого ИсходнаяЗапись Из ИсходныйНаборОплат Цикл
Запись = Набор.Добавить();
ЗаполнитьЗначенияСвойств(Запись, ИсходнаяЗапись);
Запись.СчетФактура = ДокументРегистратор;
КонецЦикла;
Набор.Записать();
Набор.Очистить();
КонецЦикла;
Иначе
ИсходныйНаборОплат = СоздатьНаборЗаписей();
ИсходныйНаборОплат.Отбор.СчетФактура.Установить(ДокументРегистратор);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИсправляемыйДокумент", ДокументРегистратор);
Запрос.Текст = "ВЫБРАТЬ
| ЗаявлениеОВвозеТоваров.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаявлениеОВвозеТоваров КАК ЗаявлениеОВвозеТоваров
|ГДЕ
| ЗаявлениеОВвозеТоваров.ИсправляемыйДокумент = &ИсправляемыйДокумент
| И ЗаявлениеОВвозеТоваров.Проведен";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Набор = СоздатьНаборЗаписей();
Набор.Отбор.СчетФактура.Установить(Выборка.Ссылка);
Для Каждого ТекущееСостояние Из МассивСостояний Цикл
Набор.Отбор.Состояние.Установить(ТекущееСостояние);
ИсходныйНаборОплат.Отбор.Состояние.Установить(ТекущееСостояние);
ИсходныйНаборОплат.Прочитать();
Для Каждого ИсходнаяЗапись Из ИсходныйНаборОплат Цикл
Запись = Набор.Добавить();
ЗаполнитьЗначенияСвойств(Запись, ИсходнаяЗапись);
Запись.СчетФактура = Выборка.Ссылка;
КонецЦикла;
Набор.Записать();
Набор.Очистить();
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Обработчики_11_4_2
#КонецОбласти
#КонецЕсли