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