#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Продажи");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
МеханизмыДокумента.Добавить("УчетНДС");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.СчетФактураВыданный") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаЖурналУчетаСчетовФактур(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаНДСЗаписиКнигиПокупок(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаНДСЗаписиКнигиПродаж(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаЗачетыАвансов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияПоПрочимАктивамПассивам(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияПоНДС(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаНДССостояниеРеализации0(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ДанныеДокументаДляПроведения = ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос,
ТекстыЗапроса,
ДопПараметры);
Возврат ДанныеДокументаДляПроведения;
КонецФункции
#КонецОбласти
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Корректировочный,Склад,Дата,Перевыставленный,Исправление";
Возврат ИменаРеквизитов;
КонецФункции
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, Организация";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Руководитель", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, Организация";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"ГлавныйБухгалтер", Параметры);
КонецПроцедуры
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.СчетФактураВыданный";
Если Объект.Перевыставленный Тогда
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = Ложь;
ИначеЕсли Не Константы.ВыводитьСерииВПечатныхФормах.Получить() Тогда
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = Ложь;
Иначе
УчитыватьСебестоимостьПоСериям = ПолучитьФункциональнуюОпцию("УчитыватьСебестоимостьПоСериямСклад",
Новый Структура());
ИспользоватьСерииНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад",
Новый Структура());
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ИспользоватьСерииНоменклатуры;
ПараметрыУказанияСерий.ИмяПоляСклад = Неопределено;
ПараметрыУказанияСерий.ТолькоСерииДляСебестоимости = Истина;
Если Объект.Корректировочный
Или Объект.Исправление Тогда
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = УчитыватьСебестоимостьПоСериям;
КонецЕсли;
КонецЕсли;
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.ПланированиеОтбора = Истина;
ПараметрыУказанияСерий.ФактОтбора = Истина;
ПараметрыУказанияСерий.ИмяТЧТовары = "Товары";
ПараметрыУказанияСерий.ИмяТЧСерии = "Товары";
ПараметрыУказанияСерий.РегистрироватьСерии = НоменклатураКлиентСервер.НеобходимоРегистрироватьСерии(ПараметрыУказанияСерий);
ПараметрыУказанияСерий.Дата = Объект.Дата;
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ТоварыПредварительно.Номенклатура,
| ТоварыПредварительно.Серия,
| ТоварыПредварительно.Количество,
| ТоварыПредварительно.НомерСтроки
|ПОМЕСТИТЬ ТоварыПредварительно
|ИЗ
| &Товары КАК ТоварыПредварительно
|;
|ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Серия,
| Товары.Количество,
| Товары.НомерСтроки,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ Товары
|ИЗ
| ТоварыПредварительно КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.Ссылка ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 15
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО Товары.ВидНоменклатуры.ПолитикаУчетаСерий = ПолитикиУчетаСерий.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Функция ГруппировкиПечатиСчетаФактуры() Экспорт
ГруппировкиПечати = "Номенклатура,Характеристика,НоменклатураНабора,ХарактеристикаНабора,Содержание,КодТНВЭД,НомерГТД,ЕдиницаИзмерения,СтавкаНДС,НомерСтрокиИсходногоСФ";
Если Константы.ВыводитьСерииВПечатныхФормах.Получить() Тогда
ГруппировкиПечати = ГруппировкиПечати + ",Серия";
КонецЕсли;
Возврат ГруппировкиПечати;
КонецФункции
Функция ПолучитьПорядковыеНомераСтрок(Знач Таблица) Экспорт
Результат = Таблица.Скопировать(,"СчетФактура,ДокументОснование");
Результат.Свернуть("СчетФактура,ДокументОснование");
Результат.Колонки.Добавить("НомерСтрокиСФ",Новый ОписаниеТипов("Строка"));
Результат.Индексы.Добавить("ДокументОснование");
Расчет = Таблица.Скопировать();
Расчет.Сортировать("СчетФактура,ДокументОснование,НомерСтрокиСФ");
ПорядковыеНомераСтрок = "";
ПредыдущийНомер = 0;
ИдетИнтервал = Ложь;
ТекущееОснование = Неопределено;
Для Каждого СтрокаРасчета Из Расчет Цикл
Если СтрокаРасчета.НомерСтрокиСФ = 0 Тогда
Продолжить;
КонецЕсли;
Если СтрокаРасчета.ДокументОснование <> ТекущееОснование Тогда
Если ТекущееОснование <> Неопределено Тогда
Если ИдетИнтервал Тогда
ИдетИнтервал = Ложь;
ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "-" + СтрЗаменить(ПредыдущийНомер,Символы.НПП,"");
КонецЕсли;
СтрокаОснования = Результат.Найти(ТекущееОснование,"ДокументОснование");
СтрокаОснования.НомерСтрокиСФ = ПорядковыеНомераСтрок;
КонецЕсли;
ТекущееОснование = СтрокаРасчета.ДокументОснование;
ПорядковыеНомераСтрок = ""+СтрЗаменить(СтрокаРасчета.НомерСтрокиСФ,Символы.НПП,"");
Иначе
Если ПредыдущийНомер = СтрокаРасчета.НомерСтрокиСФ - 1 Тогда
ИдетИнтервал = Истина;
Иначе
Если ИдетИнтервал Тогда
ИдетИнтервал = Ложь;
ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "-" + СтрЗаменить(ПредыдущийНомер,Символы.НПП,"");
КонецЕсли;
ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "," + СтрЗаменить(СтрокаРасчета.НомерСтрокиСФ,Символы.НПП,"");
КонецЕсли;
КонецЕсли;
ПредыдущийНомер = СтрокаРасчета.НомерСтрокиСФ;
КонецЦикла;
Если ТекущееОснование <> Неопределено Тогда
Если ИдетИнтервал Тогда
ИдетИнтервал = Ложь;
ПорядковыеНомераСтрок = ПорядковыеНомераСтрок + "-" + СтрЗаменить(ПредыдущийНомер,Символы.НПП,"");
КонецЕсли;
СтрокаОснования = Результат.Найти(ТекущееОснование,"ДокументОснование");
СтрокаОснования.НомерСтрокиСФ = ПорядковыеНомераСтрок;
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ПолучитьПредставленияСтроки5а(Знач Таблица, МенеджерВременныхТаблиц) Экспорт
ТаблицаИтог = Таблица.СкопироватьКолонки("СчетФактура,ДокументОснование");
ТаблицаИтог.Колонки.Добавить("НомерСтрокиСФ",Новый ОписаниеТипов("Строка"));
СчетаФактурыСНомерами = Новый Массив;
СчетаФактуры = Таблица.ВыгрузитьКолонку("СчетФактура");
СчетаФактуры = ОбщегоНазначенияКлиентСервер.СвернутьМассив(СчетаФактуры);
Для Каждого СФ Из СчетаФактуры Цикл
Если ТипЗнч(СФ) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
РеквизитыСФ = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СФ, "Исправление, Перевыставленный, Корректировочный, РучнаяКорректировкаСуммДокумента");
Если (РеквизитыСФ.Исправление Или РеквизитыСФ.Перевыставленный) И Не РеквизитыСФ.Корректировочный Или РеквизитыСФ.РучнаяКорректировкаСуммДокумента Тогда
СчетаФактурыСНомерами.Добавить(СФ);
Иначе
СтрокиПоСФ = Таблица.НайтиСтроки(Новый Структура("СчетФактура",СФ));
ТаблицаПоСФ = Таблица.Скопировать(СтрокиПоСФ,);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ПолучитьПорядковыеНомераСтрок(ТаблицаПоСФ), ТаблицаИтог);
КонецЕсли;
Иначе
СтрокиПоСФ = Таблица.НайтиСтроки(Новый Структура("СчетФактура",СФ));
ТаблицаПоСФ = Таблица.Скопировать(СтрокиПоСФ,);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ПолучитьПорядковыеНомераСтрок(ТаблицаПоСФ), ТаблицаИтог);
КонецЕсли;
КонецЦикла;
Результат = Новый ТаблицаЗначений();
Результат.Колонки.Добавить("СчетФактура", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный,ДокументСсылка.СчетФактураКомиссионеру"));
Результат.Колонки.Добавить("ПредставлениеСтроки5а", Новый ОписаниеТипов("Строка"));
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Таблица", ТаблицаИтог);
Запрос.УстановитьПараметр("СчетаФактурыСНомерами", СчетаФактурыСНомерами);
Запрос.УстановитьПараметр("ТекстТоварнаяНакладная", НСтр("ru = 'Товарная накладная'"));
Запрос.УстановитьПараметр("ТекстАкт", НСтр("ru = 'Акт'"));
Запрос.Текст = "ВЫБРАТЬ
| СчетаФактурыОснования.Ссылка КАК Ссылка,
| МАКСИМУМ(ВЫБОР
| КОГДА НЕ ТаблицаТоваров.ЭтоТовар
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ЕстьУслуги,
| МАКСИМУМ(ВЫБОР
| КОГДА ТаблицаТоваров.ЭтоТовар
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ЕстьТовары
|ПОМЕСТИТЬ НоменклатураДокументов
|ИЗ
| СчетаФактурыОснования КАК СчетаФактурыОснования
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаТоваров КАК ТаблицаТоваров
| ПО СчетаФактурыОснования.ДокументОснование = ТаблицаТоваров.Ссылка
|
|СГРУППИРОВАТЬ ПО
| СчетаФактурыОснования.Ссылка
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| Т.СчетФактура КАК СчетФактура,
| Т.ДокументОснование КАК ДокументОснование,
| Т.НомерСтрокиСФ КАК ПорядковыеНомераСтрок
|ПОМЕСТИТЬ ПорядковыеНомера
|ИЗ
| &Таблица КАК Т
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПорядковыеНомера.СчетФактура КАК СчетФактура,
| ВЫРАЗИТЬ(ПорядковыеНомера.ПорядковыеНомераСтрок КАК СТРОКА(100)) КАК ПорядковыеНомераСтрок,
| ДанныеПервичныхДокументов.Номер,
| ДанныеПервичныхДокументов.Дата,
| ПорядковыеНомера.ДокументОснование,
| ПорядковыеНомера.НаименованиеДокумента
|ИЗ
| (ВЫБРАТЬ
| ПорядковыеНомера.СчетФактура,
| ВЫБОР
| КОГДА КорректировкаРеализации.ВидКорректировки = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ИсправлениеОшибок)
| ТОГДА КорректировкаРеализации.ДокументОснование
| ИНАЧЕ ПорядковыеНомера.ДокументОснование
| КОНЕЦ КАК ДокументОснование,
| ВЫБОР
| КОГДА НоменклатураДокументов.ЕстьТовары
| ТОГДА &ТекстТоварнаяНакладная
| ИНАЧЕ &ТекстАкт
| КОНЕЦ КАК НаименованиеДокумента,
|
| ПорядковыеНомера.ПорядковыеНомераСтрок
| ИЗ
| ПорядковыеНомера КАК ПорядковыеНомера
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации КАК КорректировкаРеализации
| ПО ПорядковыеНомера.ДокументОснование = КорректировкаРеализации.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураДокументов КАК НоменклатураДокументов
| ПО ПорядковыеНомера.СчетФактура = НоменклатураДокументов.Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| СчетФактураВыданныйДокументыОснования.Ссылка,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ (СчетФактураВыданныйДокументыОснования.ДокументОснование) = ТИП(Документ.КорректировкаРеализации)
| И ВЫРАЗИТЬ(СчетФактураВыданныйДокументыОснования.ДокументОснование КАК Документ.КорректировкаРеализации).ВидКорректировки = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ИсправлениеОшибок)
| ТОГДА ВЫРАЗИТЬ(СчетФактураВыданныйДокументыОснования.ДокументОснование КАК Документ.КорректировкаРеализации).ДокументОснование
| КОГДА СчетФактураВыданныйДокументыОснования.Ссылка.Перевыставленный
| ТОГДА ЕСТЬNULL(СчетФактураПолученныйДокументыОснования.ДокументОснование, СчетФактураВыданныйДокументыОснования.ДокументОснование)
| ИНАЧЕ СчетФактураВыданныйДокументыОснования.ДокументОснование
| КОНЕЦ,
| ВЫБОР
| КОГДА НоменклатураДокументов.ЕстьТовары
| ТОГДА &ТекстТоварнаяНакладная
| ИНАЧЕ &ТекстАкт
| КОНЕЦ КАК НаименованиеДокумента,
| СчетФактураВыданныйДокументыОснования.ПорядковыеНомераСтрок
| ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученныйДокументыОснования
| ПО СчетФактураВыданныйДокументыОснования.СчетФактураПолученныйОтПродавца = СчетФактураПолученныйДокументыОснования.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураДокументов КАК НоменклатураДокументов
| ПО СчетФактураВыданныйДокументыОснования.Ссылка = НоменклатураДокументов.Ссылка
| ГДЕ
| СчетФактураВыданныйДокументыОснования.Ссылка В (&СчетаФактурыСНомерами)
| ) КАК ПорядковыеНомера
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
| ПО ПорядковыеНомера.СчетФактура.Организация = ДанныеПервичныхДокументов.Организация
| И ПорядковыеНомера.ДокументОснование = ДанныеПервичныхДокументов.Документ
|УПОРЯДОЧИТЬ ПО
| Номер
|ИТОГИ
|ПО
| СчетФактура;
|
|
|УНИЧТОЖИТЬ НоменклатураДокументов";
ВерсияПостановления1137 = 1;
РезультатЗапроса = Запрос.Выполнить();
ДокументыОснования = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("ДокументОснование");
НаименованияДокументовДанныеПечати = ОбщегоНазначенияУТ.НаименованияЭлектронныхДокументовИлиОсновныхПечатныхФорм(ДокументыОснования);
ВыборкаПоСФ = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСФ.Следующий() Цикл
НоваяСтрока = Результат.Добавить();
НоваяСтрока.СчетФактура = ВыборкаПоСФ.СчетФактура;
ПредставленияДокументов = Новый Массив;
Выборка = ВыборкаПоСФ.Выбрать();
Пока Выборка.Следующий() Цикл
Если ВерсияПостановления1137 = 1 И ЗначениеЗаполнено(Выборка.Дата) Тогда
ВерсияПостановления1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(Выборка.Дата);
КонецЕсли;
Если ВерсияПостановления1137 >= 7 Тогда
ПредставленияДокументов.Добавить(
СтрШаблон(
НСтр("ru = '%1, № %2 от %3'"),
?(НаименованияДокументовДанныеПечати[Выборка.ДокументОснование] <> Неопределено,
НаименованияДокументовДанныеПечати[Выборка.ДокументОснование], Выборка.НаименованиеДокумента),
Выборка.Номер,
Формат(Выборка.Дата, "ДЛФ=D")));
Иначе
ПредставленияДокументов.Добавить(
СтрШаблон(
НСтр("ru = '№ п/п %1 № %2 от %3'"),
Выборка.ПорядковыеНомераСтрок,
Выборка.Номер,
Формат(Выборка.Дата, "ДЛФ=D")));
КонецЕсли;
КонецЦикла;
НоваяСтрока.ПредставлениеСтроки5а = СтрСоединить(ПредставленияДокументов, ";");
КонецЦикла;
Возврат Результат;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СчетФактураВыданный.ДобавитьКомандуСоздатьНаОснованииКорректировочныйСчетФактура(КомандыСозданияНаОсновании);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОснованииКорректировочныйСчетФактура(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.СчетФактураВыданный) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "УчетНДСРФКлиент.КорректировочныйСчетФактура";
КомандаСоздатьНаОсновании.Идентификатор = "КорректировочныйСчетФактура";
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Исправленный счет-фактура'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.СчетФактураВыданный) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.СчетФактураВыданный.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.СчетФактураВыданный);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииИсправленныйСчетФактура(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.СчетФактураВыданный) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "УчетНДСРФКлиент.ИсправленныйСчетФактура";
КомандаСоздатьНаОсновании.Идентификатор = "ИсправленныйСчетФактура";
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Счет-фактура выданный'", ОбщегоНазначения.КодОсновногоЯзыка());
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КонецПроцедуры
Функция ПредставлениеСчетаФактуры(Номер, Дата, Проведен = Истина, ПрефиксПредставления="", ПостфиксПредставления="") Экспорт
Если НЕ ЗначениеЗаполнено(ПрефиксПредставления) Тогда
ПрефиксПредставления = НСтр("ru='Счет-фактура'");
КонецЕсли;
СтруктураШапки = Новый Структура;
СтруктураШапки.Вставить("Дата", Дата);
СтруктураШапки.Вставить("Номер", Номер);
МассивПодстрок = Новый Массив;
МассивПодстрок.Добавить(ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(СтруктураШапки, ПрефиксПредставления));
Если Не Проведен Тогда
МассивПодстрок.Добавить(НСтр("ru = '(не проведен)'"));
КонецЕсли;
Если ЗначениеЗаполнено(ПостфиксПредставления) Тогда
МассивПодстрок.Добавить(ПостфиксПредставления);
КонецЕсли;
Представление = СтрСоединить(МассивПодстрок, " ");
Возврат Представление;
КонецФункции
Функция СчетаФактурыПоОснованию(Основание, ПараметрыОтбора = Неопределено, РеквизитыСчетаФактуры = Неопределено, Проведен = Ложь) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетФактура.Ссылка КАК Ссылка,
| СчетФактура.Номер КАК Номер,
| СчетФактура.Дата КАК Дата,
| СчетФактура.Организация КАК Организация,
| СчетФактура.Контрагент КАК Контрагент,
| СчетФактура.КППКонтрагента КАК КППКонтрагента,
| СчетФактура.Валюта КАК Валюта,
| СчетФактура.Проведен КАК Проведен,
| СчетФактура.Корректировочный КАК Корректировочный,
| СчетФактура.ИдентификаторГосКонтракта КАК ИдентификаторГосКонтракта,
| СчетФактура.ПредставлениеНомера КАК ПредставлениеНомера,
|
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.ПредставлениеНомера, """") КАК НомерИсходногоДокумента,
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.СчетФактураОснование.Дата, СчетФактураТовары.ПредыдущийСчетФактура.Дата) КАК ДатаИсходногоДокумента,
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.НомерИсправления, """") КАК НомерИсправленияИсходногоДокумента,
| ВЫБОР
| КОГДА СчетФактураТовары.ПредыдущийСчетФактура.Исправление
| ТОГДА ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.Дата, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаИсправленияИсходногоДокумента
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураДокументыОснования
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактура
| ПО СчетФактураДокументыОснования.Ссылка = СчетФактура.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК СчетФактураТовары
| ПО СчетФактураДокументыОснования.Ссылка = СчетФактураТовары.Ссылка
|ГДЕ
| СчетФактураДокументыОснования.ДокументОснование = &Основание
| И (НЕ СчетФактура.ПометкаУдаления)
|
|
|УПОРЯДОЧИТЬ ПО
| СчетФактура.НомерИсправления УБЫВ
|");
Запрос.УстановитьПараметр("Основание", Основание);
Если ПараметрыОтбора <> Неопределено Тогда
ТекстУсловий = "";
Для Каждого ЭлементОтбора Из ПараметрыОтбора Цикл
ТекстУсловий = ТекстУсловий + "
| И СчетФактура." + ЭлементОтбора.Ключ + " = &" + ЭлементОтбора.Ключ;
Запрос.УстановитьПараметр(ЭлементОтбора.Ключ, ЭлементОтбора.Значение);
КонецЦикла;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//УсловияОтбора", ТекстУсловий);
КонецЕсли;
Если Проведен Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"(НЕ СчетФактура.ПометкаУдаления)",
"СчетФактура.Проведен");
КонецЕсли;
РезультатЗапроса = Запрос.Выполнить();
РеквизитыСчетаФактуры = Новый Структура;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
РеквизитыСчетаФактуры.Вставить(Колонка.Имя);
КонецЦикла;
ТаблицаСчетовФактур = Новый ТаблицаЗначений;
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
ТаблицаСчетовФактур.Колонки.Добавить(Колонка.Имя);
КонецЦикла;
Если НЕ РезультатЗапроса.Пустой() Тогда
ТаблицаСчетовФактур = РезультатЗапроса.Выгрузить();
ЗаполнитьЗначенияСвойств(РеквизитыСчетаФактуры, ТаблицаСчетовФактур[0]);
КонецЕсли;
Возврат ТаблицаСчетовФактур;
КонецФункции
Функция ПараметрыЗаполненияПоСчетуФактуре(СчетФактура) Экспорт
УстановитьПривилегированныйРежим(Истина);
ПараметрыЗаполнения = Новый Структура("Основания, ДатаКорректировки");
ПараметрыЗаполнения.Вставить("Корректировочный", Ложь);
ПараметрыЗаполнения.Вставить("Исправление", Ложь);
ПараметрыЗаполнения.Вставить("Перевыставленный", Неопределено);
Запрос = Новый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| СчетФактураВыданный.Ссылка КАК Ссылка,
| СчетФактураВыданный.Исправление КАК Исправление,
| СчетФактураВыданный.Перевыставленный КАК Перевыставленный
|ИЗ
| Документ.СчетФактураВыданный КАК СчетФактураВыданный
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК ОснованийКоррективочныхСФ
| ПО СчетФактураВыданный.Ссылка = ОснованийКоррективочныхСФ.ПредыдущийСчетФактура
| И НЕ СчетФактураВыданный.Исправление
| И (ОснованийКоррективочныхСФ.Ссылка.Проведен)
|ГДЕ
| СчетФактураВыданный.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| СчетФактураВыданный.Ссылка КАК Ссылка,
| СчетФактураВыданный.Исправление КАК Исправление,
| СчетФактураВыданный.Перевыставленный КАК Перевыставленный
|ИЗ
| Документ.СчетФактураВыданный КАК СчетФактураВыданный
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК ОснованийКоррективочныхСФ
| ПО СчетФактураВыданный.СчетФактураОснование = ОснованийКоррективочныхСФ.ПредыдущийСчетФактура
| И СчетФактураВыданный.Исправление
| И (ОснованийКоррективочныхСФ.Ссылка.Проведен)
|ГДЕ
| СчетФактураВыданный.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| СчетФактураВыданный.Ссылка КАК Ссылка,
| СчетФактураВыданный.Исправление КАК Исправление,
| СчетФактураВыданный.Перевыставленный КАК Перевыставленный
|ИЗ
| Документ.СчетФактураВыданный КАК СчетФактураВыданный
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК ОснованияСчетаФактуры
| ПО СчетФактураВыданный.Ссылка = ОснованияСчетаФактуры.Ссылка
| И ОснованияСчетаФактуры.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОЗакупках
|
|ГДЕ
| СчетФактураВыданный.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", СчетФактура);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ПараметрыЗаполнения.Исправление = Истина;
Иначе
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ПараметрыЗаполнения.Перевыставленный = Выборка.Перевыставленный;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
Процедура ЗаполнитьПлатежноРасчетныеДокументы(ПлатежноРасчетныеДокументы, МассивОснований, Организация) Экспорт
УстановитьПривилегированныйРежим(Истина);
ПлатежноРасчетныеДокументы.Очистить();
Если ПланыОбмена.ГлавныйУзел() <> Неопределено Тогда
Возврат;
КонецЕсли;
ТаблицаЗаполненияПлатежноРасчетныхДокументов = Новый ТаблицаЗначений;
ТаблицаЗаполненияПлатежноРасчетныхДокументов.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный"));
ТаблицаЗаполненияПлатежноРасчетныхДокументов.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ТаблицаЗаполненияПлатежноРасчетныхДокументов.Колонки.Добавить("ДокументОснование",
Метаданные.Документы.СчетФактураВыданный.ТабличныеЧасти.ДокументыОснования.Реквизиты.ДокументОснование.Тип);
Для каждого ДокументОснования Из МассивОснований Цикл
НоваяСтрока = ТаблицаЗаполненияПлатежноРасчетныхДокументов.Добавить();
НоваяСтрока.Ссылка = Документы.СчетФактураВыданный.ПустаяСсылка();
НоваяСтрока.Организация = Организация;
НоваяСтрока.ДокументОснование = ДокументОснования;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Ссылка,
| Таблица.Организация,
| Таблица.ДокументОснование
|ПОМЕСТИТЬ ТаблицаЗаполненияПлатежноРасчетныхДокументов
|ИЗ
| &ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК Таблица";
Запрос.УстановитьПараметр("ТаблицаЗаполненияПлатежноРасчетныхДокументов", ТаблицаЗаполненияПлатежноРасчетныхДокументов);
Запрос.Выполнить();
МассивАналитикУчетаПоПартнерам = АналитикиУчетаПоПартнерамДляАктуализацииПлатежноРасчетныхДокументов(Запрос.МенеджерВременныхТаблиц);
КонецРасчета = КонецРасчетаДляАктуализацииПлатежноРасчетныхДокументов(Запрос.МенеджерВременныхТаблиц);
Если МассивАналитикУчетаПоПартнерам.Количество() > 0 Тогда
Если Не ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов") Тогда
АналитикиРасчета = РаспределениеВзаиморасчетовВызовСервера.АналитикиРасчета();
АналитикиРасчета.АналитикиУчетаПоПартнерам = МассивАналитикУчетаПоПартнерам;
Попытка
РаспределениеВзаиморасчетовВызовСервера.РаспределитьВсеРасчетыСКлиентами(КонецРасчета, АналитикиРасчета);
Исключение
ТекстСообщения = НСтр("ru = 'Печатная форма сформирована по неактуальным данным.
|Необходимо актуализировать взаиморасчеты вручную и переформировать печатную форму.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецПопытки;
Иначе
Если РегистрыСведений.ЗаданияКРаспределениюВзаиморасчетов.АктуальныйПериодРассчитанныхДанныхПоВзаиморасчетам(МассивАналитикУчетаПоПартнерам,,КонецРасчета) <> Неопределено Тогда
ТекстСообщения = НСтр("ru = 'Печатная форма сформирована по неактуальным данным.'") + Символы.ПС;
ТекстСообщения = ТекстСообщения + ВзаиморасчетыСервер.ТекстПредупрежденияЗаданияРаспределенияВзаиморасчетов();
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПараметрыПоиска = ВзаиморасчетыСервер.ИнициализироватьПараметрыПоискаОснованийИДокументовОплаты();
ПараметрыПоиска.ПараметрыОтбораПоТаблицеДокументов.ИмяПоля = "ДокументОснование";
ПараметрыПоиска.ПараметрыОтбораПоТаблицеДокументов.ИмяТаблицыОтбора =
"ТаблицаЗаполненияПлатежноРасчетныхДокументов";
ПараметрыПоиска.ТолькоАвансы = Истина;
ПараметрыПоиска.ОграничитьТипыДокументовОплаты = Истина;
ВзаиморасчетыСервер.ПодготовитьВТ_РасчетыСКлиентами_ОснованияИДокументыОплаты(
Запрос.МенеджерВременныхТаблиц,
ПараметрыПоиска);
Запрос.Текст = ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов();
Запрос.УстановитьПараметр("МассивАналитикУчетаПоПартнерам", МассивАналитикУчетаПоПартнерам);
ВыборкаСчетФактур = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаСчетФактур.Следующий() Тогда
ЗаполнитьТаблицуПлатежноРасчетныхДокументовПоВыборке(ПлатежноРасчетныеДокументы, ВыборкаСчетФактур);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПлатежноРасчетныеДокументыПоОтгрузке(ПлатежноРасчетныеДокументы, МассивОснований, Организация) Экспорт
СчетаФактуры = Документы.СчетФактураВыданный.СчетаФактурыПоОснованию(МассивОснований[0]);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("СчетФактура", СчетаФактуры);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаПлатежноРасчетныеДокументы.ДатаПлатежноРасчетногоДокумента КАК ДатаВходящегоДокумента,
| ТаблицаПлатежноРасчетныеДокументы.НомерПлатежноРасчетногоДокумента КАК НомерВходящегоДокумента,
| ТаблицаПлатежноРасчетныеДокументы.Ссылка КАК СчетФактура
|ИЗ
| Документ.СчетФактураВыданный.ПлатежноРасчетныеДокументы КАК ТаблицаПлатежноРасчетныеДокументы
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.СчетФактураВыданный КАК Операция
| ПО
| ТаблицаПлатежноРасчетныеДокументы.Ссылка = Операция.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
| ПО
| Операция.Организация = ДанныеПервичныхДокументов.Организация
| И ТаблицаПлатежноРасчетныеДокументы.РасчетныйДокумент = ДанныеПервичныхДокументов.Документ
|ГДЕ
| ТаблицаПлатежноРасчетныеДокументы.Ссылка В (&СчетФактура)
| И НЕ Операция.Корректировочный
| И НЕ Операция.Исправление
|
|ИТОГИ ПО
| СчетФактура";
ВыборкаСчетФактур = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаСчетФактур.Следующий() Тогда
ЗаполнитьТаблицуПлатежноРасчетныхДокументовПоВыборке(ПлатежноРасчетныеДокументы, ВыборкаСчетФактур);
КонецЕсли;
КонецПроцедуры
Функция СтрокаРасчетноПлатежныхДокументов(ПлатежноРасчетныеДокументы) Экспорт
СтрокаНомеровИДата = "";
Для Каждого СтрокаТаблицы Из ПлатежноРасчетныеДокументы Цикл
СтрокаНомеровИДата = СтрокаНомеровИДата + ?(ПустаяСтрока(СтрокаНомеровИДата), "", ", ")
+ СтрокаТаблицы.НомерПлатежноРасчетногоДокумента
+ " от " + Формат(СтрокаТаблицы.ДатаПлатежноРасчетногоДокумента, "ДЛФ=D");
КонецЦикла;
Возврат СтрокаНомеровИДата;
КонецФункции
Функция ЕстьСчетаФактурыКОформлению(Параметры) Экспорт
ТолькоОформление = Ложь;
ТолькоПеревыставление = Ложь;
Если Параметры.Свойство("ТолькоОформление") Тогда
Параметры.Свойство("ТолькоОформление", ТолькоОформление);
КонецЕсли;
Если Параметры.Свойство("ТолькоПеревыставление") Тогда
Параметры.Свойство("ТолькоПеревыставление", ТолькоПеревыставление);
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Параметры.Вставить("ТипСчетаФактуры", ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.СчетФактураВыданный"));
Запрос.Параметры.Вставить("МассивОрганизаций", Параметры.МассивОрганизаций);
Если Параметры.Свойство("ПоОрганизациям") Тогда
Запрос.Параметры.Вставить("КонецПериода", КонецДня(Параметры.КонецПериода));
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТребуетсяОформлениеСчетаФактуры.Организация КАК Организация
|ИЗ
| РегистрСведений.ТребуетсяОформлениеСчетаФактуры КАК ТребуетсяОформлениеСчетаФактуры
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеОснования
| ПО ТребуетсяОформлениеСчетаФактуры.Организация = ДанныеОснования.Организация
| И ТребуетсяОформлениеСчетаФактуры.Основание = ДанныеОснования.Документ
|ГДЕ
| ТребуетсяОформлениеСчетаФактуры.ТипСчетаФактуры = &ТипСчетаФактуры
| И ВЫБОР
| КОГДА ЕСТЬNULL(ДанныеОснования.Дата, ДАТАВРЕМЯ(1, 1, 1)) = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ЕСТЬNULL(ДанныеОснования.ДатаРегистратора, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ ДанныеОснования.Дата
| КОНЕЦ <= &КонецПериода
| И &УсловиеОтбора";
ИначеЕсли Параметры.Свойство("БезОграниченияПериода") Тогда
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СУММА(ВложенныйЗапрос.КоличествоДокументовКОформлению) КАК КоличествоДокументовКОформлению,
| СУММА(ВложенныйЗапрос.КоличествоДокументовКПеревыставлению) КАК КоличествоДокументовКПеревыставлению
|ИЗ
| (ВЫБРАТЬ
| СУММА(1) КАК КоличествоДокументовКОформлению,
| 0 КАК КоличествоДокументовКПеревыставлению
| ИЗ
| РегистрСведений.ТребуетсяОформлениеСчетаФактуры КАК ТребуетсяОформлениеСчетаФактуры
| ГДЕ
| ТребуетсяОформлениеСчетаФактуры.ТипСчетаФактуры = &ТипСчетаФактуры
| И &УсловиеОтбора
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| 0,
| СУММА(1)
| ИЗ
| РегистрСведений.СчетаФактурыПоставщиковКПеревыставлениюКомитентам КАК ТребуетсяОформлениеСчетаФактуры
| ГДЕ
| ИСТИНА
| И &УсловиеОтбора
| ) КАК ВложенныйЗапрос
|";
Иначе
Запрос.Параметры.Вставить("КонецПериода", КонецДня(Параметры.КонецПериода));
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СУММА(ВложенныйЗапрос.КоличествоДокументовКОформлению) КАК КоличествоДокументовКОформлению,
| СУММА(ВложенныйЗапрос.КоличествоДокументовКПеревыставлению) КАК КоличествоДокументовКПеревыставлению
|ИЗ
| (ВЫБРАТЬ
| СУММА(1) КАК КоличествоДокументовКОформлению,
| 0 КАК КоличествоДокументовКПеревыставлению
| ИЗ
| РегистрСведений.ТребуетсяОформлениеСчетаФактуры КАК ТребуетсяОформлениеСчетаФактуры
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеОснования
| ПО ТребуетсяОформлениеСчетаФактуры.Организация = ДанныеОснования.Организация
| И ТребуетсяОформлениеСчетаФактуры.Основание = ДанныеОснования.Документ
| ГДЕ
| ТребуетсяОформлениеСчетаФактуры.ТипСчетаФактуры = &ТипСчетаФактуры
| И ВЫБОР
| КОГДА ЕСТЬNULL(ДанныеОснования.Дата, ДАТАВРЕМЯ(1, 1, 1)) = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ЕСТЬNULL(ДанныеОснования.ДатаРегистратора, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ ДанныеОснования.Дата
| КОНЕЦ <= &КонецПериода
| И &УсловиеОтбора
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| 0,
| СУММА(1)
| ИЗ
| РегистрСведений.СчетаФактурыПоставщиковКПеревыставлениюКомитентам КАК ТребуетсяОформлениеСчетаФактуры
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеОснования
| ПО ТребуетсяОформлениеСчетаФактуры.Организация = ДанныеОснования.Организация
| И ТребуетсяОформлениеСчетаФактуры.ОтчетКомитентуОЗакупках = ДанныеОснования.Документ
| ГДЕ
| ВЫБОР
| КОГДА ЕСТЬNULL(ДанныеОснования.Дата, ДАТАВРЕМЯ(1, 1, 1)) = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ЕСТЬNULL(ДанныеОснования.ДатаРегистратора, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ ДанныеОснования.Дата
| КОНЕЦ <= &КонецПериода
| И &УсловиеОтбора
| ) КАК ВложенныйЗапрос
|";
КонецЕсли;
Если ЗначениеЗаполнено(Параметры.МассивОрганизаций) Тогда
УсловиеОтбора = "ТребуетсяОформлениеСчетаФактуры.Организация В(&МассивОрганизаций)";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеОтбора", УсловиеОтбора);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст,"И &УсловиеОтбора", "");
КонецЕсли;
Если Параметры.Свойство("ПоОрганизациям") Тогда
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Организация");
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() И НЕ Выборка.КоличествоДокументовКОформлению = NULL Тогда
Если ТолькоОформление Тогда
Возврат Выборка.КоличествоДокументовКОформлению;
ИначеЕсли ТолькоПеревыставление Тогда
Возврат Выборка.КоличествоДокументовКПеревыставлению;
Иначе
Возврат Выборка.КоличествоДокументовКОформлению + Выборка.КоличествоДокументовКПеревыставлению;
КонецЕсли;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Функция ЕстьСчетаФактурыПоОтгрузкамКОформлению(Параметры) Экспорт
ТекстыЗапроса = Новый Массив();
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.ТекстУсловия =
" (Распоряжение.Организация В (&Организация)
| ИЛИ &ПоВсемОрганизациям)
| И (ТИПЗНАЧЕНИЯ(Распоряжение) = ТИП(Документ.ЗаказКлиента)
| ИЛИ ТИПЗНАЧЕНИЯ(Распоряжение) = ТИП(Документ.ОтгрузкаТоваровКлиенту))
| И Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, КодСтроки";
ПараметрыФормированияТаблицы.Показатели = "Оформлено, ОформленоПоВозвратам, Отгружено, СписаноДоППС, ОприходованоДоППС, Скорректировано, ОформленоСчетовФактур";
ПараметрыФормированияТаблицы.Ресурсы = "Количество, Сумма, СуммаНДСРегл";
Если Не Параметры.Свойство("БезОграниченияПериода") Тогда
ПараметрыФормированияТаблицы.КонецПериода = "&Месяц";
КонецЕсли;
ПараметрыФормированияТаблицы.ИмяВременнойТаблицы = "ВТ_РаспоряженияНаОтгрузкуОборотыРазвернутая";
ПараметрыФормированияТаблицы.ТолькоРазрешенные = Истина;
ВТ_РаспоряженияНаОтгрузкуОборотыРазвернутая =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
ТекстыЗапроса.Добавить(ВТ_РаспоряженияНаОтгрузкуОборотыРазвернутая);
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ДанныеУчета.Распоряжение КАК Распоряжение,
| ДанныеУчета.Номенклатура КАК Номенклатура,
| ДанныеУчета.Характеристика КАК Характеристика,
| ДанныеУчета.КодСтроки КАК КодСтроки
|ИЗ
| ВТ_РаспоряженияНаОтгрузкуОборотыРазвернутая КАК ДанныеУчета
|
|ГДЕ
| ДанныеУчета.Распоряжение В (&Распоряжения)
| ИЛИ &БезОтбораПоРаспоряжениям
|
|СГРУППИРОВАТЬ ПО
| ДанныеУчета.Распоряжение,
| ДанныеУчета.Номенклатура,
| ДанныеУчета.Характеристика,
| ДанныеУчета.КодСтроки
|
|ИМЕЮЩИЕ
| (СУММА(ДанныеУчета.ОформленоСчетовФактурКоличествоОборот) <> 0 ИЛИ ДанныеУчета.КодСтроки = 0)
| И (ВЫБОР
| КОГДА СУММА(ДанныеУчета.ОформленоКоличествоОборот) = 0
| И СУММА(ДанныеУчета.СкорректированоКоличествоОборот) = 0
| ТОГДА СУММА(ДанныеУчета.ОтгруженоКоличествоОборот - ДанныеУчета.ОформленоПоВозвратамКоличествоОборот - ДанныеУчета.СписаноДоППСКоличествоОборот + ДанныеУчета.ОприходованоДоППСКоличествоОборот - ДанныеУчета.ОформленоСчетовФактурКоличествоОборот)
| ИНАЧЕ
| СУММА(ДанныеУчета.ОформленоКоличествоОборот + ДанныеУчета.СкорректированоКоличествоОборот - ДанныеУчета.ОформленоСчетовФактурКоличествоОборот)
| КОНЕЦ <> 0
| ИЛИ ВЫБОР
| КОГДА СУММА(ДанныеУчета.ОформленоСуммаОборот) = 0
| И СУММА(ДанныеУчета.СкорректированоСуммаОборот) = 0
| ТОГДА СУММА(ДанныеУчета.ОтгруженоСуммаОборот - ДанныеУчета.ОформленоПоВозвратамСуммаОборот - ДанныеУчета.СписаноДоППССуммаОборот + ДанныеУчета.ОприходованоДоППССуммаОборот - ДанныеУчета.ОформленоСчетовФактурСуммаОборот)
| ИНАЧЕ
| СУММА(ДанныеУчета.ОформленоСуммаОборот + ДанныеУчета.СкорректированоСуммаОборот - ДанныеУчета.ОформленоСчетовФактурСуммаОборот)
| КОНЕЦ <> 0
| ИЛИ ВЫБОР
| КОГДА СУММА(ДанныеУчета.ОформленоСуммаНДСРеглОборот) = 0
| И СУММА(ДанныеУчета.ОформленоСчетовФактурКоличествоОборот) = 0
| ТОГДА 0
| КОГДА СУММА(ДанныеУчета.ОформленоСуммаНДСРеглОборот) = 0
| И СУММА(ДанныеУчета.СкорректированоСуммаНДСРеглОборот) = 0
| И СУММА(ДанныеУчета.ОтгруженоКоличествоОборот - ДанныеУчета.ОформленоПоВозвратамКоличествоОборот - ДанныеУчета.СписаноДоППСКоличествоОборот + ДанныеУчета.ОприходованоДоППСКоличествоОборот - ДанныеУчета.ОформленоСчетовФактурКоличествоОборот) = 0
| ТОГДА -СУММА(ДанныеУчета.ОформленоСчетовФактурСуммаНДСРеглОборот)
| КОГДА СУММА(ДанныеУчета.ОформленоСуммаНДСРеглОборот) = 0
| ТОГДА СУММА(ДанныеУчета.ОтгруженоКоличествоОборот - ДанныеУчета.ОформленоПоВозвратамКоличествоОборот + ДанныеУчета.СкорректированоКоличествоОборот - ДанныеУчета.СписаноДоППСКоличествоОборот + ДанныеУчета.ОприходованоДоППСКоличествоОборот - ДанныеУчета.ОформленоСчетовФактурКоличествоОборот) / СУММА(ДанныеУчета.ОформленоСчетовФактурКоличествоОборот) * СУММА(ДанныеУчета.ОформленоСчетовФактурСуммаНДСРеглОборот)
| ИНАЧЕ
| СУММА(ДанныеУчета.ОформленоСуммаНДСРеглОборот + ДанныеУчета.СкорректированоСуммаНДСРеглОборот - ДанныеУчета.ОформленоСчетовФактурСуммаНДСРеглОборот)
| КОНЕЦ <> 0)";
ТекстыЗапроса.Добавить(ТекстЗапроса);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, НакладныеСервер.ТекстРазделителяЗапросов());
Запрос.УстановитьПараметр("Организация", Параметры.МассивОрганизаций);
Запрос.УстановитьПараметр("ПоВсемОрганизациям", Не ЗначениеЗаполнено(Параметры.МассивОрганизаций));
Если Не Параметры.Свойство("БезОграниченияПериода") Тогда
Запрос.УстановитьПараметр("Месяц", ?(ЗначениеЗаполнено(Параметры.КонецПериода), КонецМесяца(Параметры.КонецПериода), Параметры.КонецПериода));
КонецЕсли;
Запрос.УстановитьПараметр("БезОтбораПоРаспоряжениям", Не Параметры.Свойство("Распоряжения"));
Запрос.УстановитьПараметр("Распоряжения", ?(Параметры.Свойство("Распоряжения"), Параметры.Распоряжения, Неопределено));
Выборка = Запрос.Выполнить().Выгрузить();
Выборка.Свернуть("Распоряжение");
Возврат Выборка.Количество();
КонецФункции
Функция КорректировкиДокументаОснования(ДокументРеализации, ДатаПодтверждения) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДокументРеализации", ДокументРеализации);
Запрос.УстановитьПараметр("ДатаПодтверждения", ДатаПодтверждения);
Запрос.Текст =
"ВЫБРАТЬ
| СчетФактураВыданныйДокументыОснования.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ИсходныеСФ
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
|ГДЕ
| СчетФактураВыданныйДокументыОснования.ДокументОснование = &ДокументРеализации
| И СчетФактураВыданныйДокументыОснования.Ссылка.Проведен
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетФактураВыданныйТовары.Ссылка КАК Ссылка
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК СчетФактураВыданныйТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсходныеСФ КАК ИсходныеСФ
| ПО СчетФактураВыданныйТовары.ИсходныйСчетФактура = ИсходныеСФ.Ссылка
|ГДЕ
| СчетФактураВыданныйТовары.Ссылка.Проведен
| И (СчетФактураВыданныйТовары.Ссылка.Дата < &ДатаПодтверждения
| ИЛИ &ДатаПодтверждения = ДАТАВРЕМЯ(1,1,1))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &ДокументРеализации
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|АВТОУПОРЯДОЧИВАНИЕ";
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
Функция КодВидаОперации(ДокументыОснования, Покупатели, Дата, Основание = Неопределено) Экспорт
Если Покупатели.Количество() > 1 Тогда
Возврат "27";
ИначеЕсли Покупатели.Количество() = 1
И Покупатели[0].Покупатель = Справочники.Контрагенты.РозничныйПокупатель Тогда
Возврат "26";
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Основание) И ДокументыОснования.Количество() > 0 Тогда
Основание = ДокументыОснования[0].ДокументОснование;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Основание", Основание);
Запрос.УстановитьПараметр("ТипыЗапасовСобственные", УчетНДСУПСлужебный.ТипыЗапасовСобственные());
Запрос.УстановитьПараметр("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.СчетФактураВыданный"));
Запрос.Текст = "
|ВЫБРАТЬ
| ДанныеОснованийСчетовФактур.НалогообложениеНДС,
| ДанныеОснованийСчетовФактур.ЭтоВозврат,
| МАКСИМУМ(ВЫБОР
| КОГДА ДанныеОснованийСчетовФактур.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.Товары)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ЕстьТовары,
| МАКСИМУМ(ВЫБОР
| КОГДА ДанныеОснованийСчетовФактур.ТипЗапасов В (&ТипыЗапасовСобственные)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ЕстьСобственныйТовар,
| МАКСИМУМ(ВЫБОР
| КОГДА
| НЕ ДанныеОснованийСчетовФактур.ТипЗапасов В (&ТипыЗапасовСобственные)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ЕстьКомиссионныйТовар
|ИЗ
| РегистрСведений.ДанныеОснованийСчетовФактур КАК ДанныеОснованийСчетовФактур
|ГДЕ
| ДанныеОснованийСчетовФактур.Регистратор = &Основание
| И ДанныеОснованийСчетовФактур.ТипСчетаФактуры = &ИдентификаторМетаданных
|СГРУППИРОВАТЬ ПО
| ДанныеОснованийСчетовФактур.НалогообложениеНДС,
| ДанныеОснованийСчетовФактур.ЭтоВозврат
|УПОРЯДОЧИТЬ ПО
| ЕстьСобственныйТовар УБЫВ,
| ЕстьКомиссионныйТовар УБЫВ
|";
КодВидаОперации = "01";
ВерсияКодовВидовОпераций = УчетНДСКлиентСервер.ВерсияКодовВидовОпераций(?(ЗначениеЗаполнено(Дата), Дата, ТекущаяДатаСеанса()));
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.ЭтоВозврат Тогда
Если Выборка.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя Тогда
КодВидаОперации = "34";
Иначе
КодВидаОперации = ?(ВерсияКодовВидовОпераций >= 3, "01", "03");
КонецЕсли;
ИначеЕсли Выборка.ЕстьКомиссионныйТовар И Выборка.ЕстьСобственныйТовар Тогда
КодВидаОперации = ?(ВерсияКодовВидовОпераций >= 3, "15", "01;04");
ИначеЕсли Выборка.ЕстьКомиссионныйТовар Тогда
КодВидаОперации = ?(ВерсияКодовВидовОпераций >= 3, "01", "04");
ИначеЕсли Выборка.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя Тогда
КодВидаОперации = "34";
Иначе
КодВидаОперации = "01";
КонецЕсли;
КонецЕсли;
Возврат КодВидаОперации;
КонецФункции
Процедура ДобавитьКомандуПечатиСчетаФактуры(КомандыПечати, Порядок = Неопределено, УсловиеВидимости = Неопределено) Экспорт
Если ПравоДоступа("Просмотр", Метаданные.Документы.СчетФактураВыданный) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьОбщихФорм";
КомандаПечати.Идентификатор = "СчетФактура";
КомандаПечати.Представление = НСтр("ru = 'Счет-фактура'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ПечатьВВалюте", Ложь);
Если Порядок <> Неопределено Тогда
КомандаПечати.Порядок = Порядок;
КонецЕсли;
Если УсловиеВидимости <> Неопределено Тогда
КомандаПечати.УсловияВидимости.Добавить(УсловиеВидимости)
КонецЕсли;
Если НЕ ПраваПользователяПовтИсп.ЭтоПартнер() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьОбщихФорм";
КомандаПечати.Идентификатор = "СчетФактураВВалюте";
КомандаПечати.Представление = НСтр("ru = 'Счет-фактура (в валюте)'");
КомандаПечати.ФункциональныеОпции = "ИспользоватьНесколькоВалют";
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ПечатьВВалюте", Истина);
Если Порядок <> Неопределено Тогда
КомандаПечати.Порядок = Порядок + 1;
КонецЕсли;
Если УсловиеВидимости <> Неопределено Тогда
КомандаПечати.УсловияВидимости.Добавить(УсловиеВидимости)
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьКомандуПечатиУПД(КомандыПечати, Порядок = Неопределено, УсловиеВидимости = Неопределено) Экспорт
Если ПравоДоступа("Просмотр", Метаданные.Документы.СчетФактураВыданный) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьОбщихФорм";
КомандаПечати.Идентификатор = "УПД";
КомандаПечати.Представление = НСтр("ru = 'Универсальный передаточный документ (УПД)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ОсновнаяПечатнаяФорма = Истина;
КомандаПечати.НаименованиеПечатнойФормы = НСтр("ru = 'Универсальный передаточный документ'");
Если Порядок <> Неопределено Тогда
КомандаПечати.Порядок = Порядок + 1;
КонецЕсли;
Если УсловиеВидимости <> Неопределено Тогда
КомандаПечати.УсловияВидимости.Добавить(УсловиеВидимости)
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ВЫБОР
| КОГДА ТипЗначения(Контрагент) = Тип(Справочник.Организации)
| ТОГДА (ЗначениеРазрешено(Организация) ИЛИ ЗначениеРазрешено(Контрагент)) И ЗначениеРазрешено(Склад)
| ИНАЧЕ ЗначениеРазрешено(Организация) И ЗначениеРазрешено(Контрагент.Партнер) И ЗначениеРазрешено(Склад)
| КОНЕЦ";
КонецПроцедуры
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Период,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.ПредставлениеНомера КАК НомерНаПечать,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Организация.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета,
| ЕСТЬNULL(ДанныеДокумента.Организация.ОбособленноеПодразделение, ЛОЖЬ) КАК ОбособленноеПодразделение,
| ЕСТЬNULL(ДанныеДокумента.Организация.ЦифровойИндексОбособленногоПодразделения, 0) КАК ЦифровойИндексОбособленногоПодразделения,
| ДанныеДокумента.СчетФактураОснование КАК СчетФактураОснование,
| ЕСТЬNULL(ДанныеДокумента.СчетФактураОснование.Дата, ДАТАВРЕМЯ(1,1,1)) КАК ДатаСчетаФактурыОснования,
| ДанныеДокумента.Исправление КАК Исправление,
| ДанныеДокумента.НомерИсправления КАК НомерИсправления,
| ДанныеДокумента.Корректировочный КАК Корректировочный,
| ДанныеДокумента.Перевыставленный КАК Перевыставленный,
| ДанныеДокумента.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеДокумента.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДССМежценовойРазницы) КАК НДССМежценовойРазницы,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Склад КАК Склад,
| ДанныеДокумента.Валюта КАК ВалютаСчетаФактуры,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.ОплатаВВалюте КАК ОплатаВВалюте,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВЫБОР
| КОГДА ДанныеДокумента.ВыставленВЭлектронномВиде ТОГДА
| 2
| ИНАЧЕ
| 1
| КОНЕЦ КАК ВыставленВЭлектронномВиде,
| ДанныеДокумента.ДатаВыставления КАК ДатаВыставления,
| ДанныеДокумента.КодВидаОперации КАК КодВидаОперации,
| ДанныеДокумента.КодВидаОперацииНаУменьшение КАК КодВидаОперацииНаУменьшение,
| ДанныеДокумента.КППКонтрагента КАК КППКонтрагента,
| ДанныеДокумента.ИННКонтрагента КАК ИННКонтрагента,
| ДанныеДокумента.ДокументОснование КАК ДокументОснование,
| ЕСТЬNULL(ДанныеДокумента.Организация.КПП, """") КАК ОрганизацияКПП,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.Ответственный КАК Ответственный,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.РучнаяКорректировкаЖурналаСФ КАК РучнаяКорректировкаЖурналаСФ,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.ДокументОснование ССЫЛКА Документ.КорректировкаРеализации КАК ДокументОснованиеКорректировкаРеализации,
| ДанныеДокумента.РеализацияЧерезКомиссионера КАК РеализацияЧерезКомиссионера,
| ДанныеДокумента.ДокументОснование.ДокументОснование КАК ОснованиеДокументОснование,
| ДанныеДокумента.НачислениеНДСПриОтгрузке КАК НачислениеНДСПриОтгрузке,
| ДанныеДокумента.Дата КАК ДатаОтгрузки,
| ВЫБОР
| КОГДА ДанныеДокумента.НачислениеНДСПриОтгрузке
| ТОГДА ДанныеДокумента.ДокументОснование
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДокументОтгрузки,
| НЕОПРЕДЕЛЕНО КАК ДокументОтгрузкиИсправление
|ИЗ
| Документ.СчетФактураВыданный КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка";
Результат = Запрос.Выполнить();
Реквизиты = Результат.Выбрать();
Реквизиты.Следующий();
Для Каждого Колонка Из Результат.Колонки Цикл
Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
КонецЦикла;
Запрос.УстановитьПараметр("ВалютаУправленческогоУчета", ЗначениеНастроекПовтИсп.ВалютаУправленческогоУчета());
Запрос.УстановитьПараметр("ДокументИнтеркампани",
ТипЗнч(Реквизиты.Контрагент) = Тип("СправочникСсылка.Организации"));
Запрос.УстановитьПараметр("ДатаПримененияКорректировочныхСФ", Дата('20130701'));
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ТипЗнч(ДокументСсылка)));
Запрос.УстановитьПараметр("ВводОстатков",
Не ЗначениеЗаполнено(Реквизиты.ДокументОснование) Или ТипЗнч(Реквизиты.ДокументОснование) = Тип("ДокументСсылка.ПервичныйДокумент") );
Запрос.УстановитьПараметр("ДокументОснованиеОтчетКомиссионера", ТипЗнч(Реквизиты.ДокументОснование) = Тип("ДокументСсылка.ОтчетКомиссионера"));
ДатаКомиссионера =
?(ЗначениеЗаполнено(Реквизиты.ДатаСчетаФактурыОснования),
Реквизиты.ДатаСчетаФактурыОснования, Реквизиты.Период);
Запрос.УстановитьПараметр("ДатаКомиссионера", ДатаКомиссионера);
УчетНДСРФ.УстановитьПараметрыЗапросаПроведенияПоЖурналуСчетаФактурыВыставленного(Реквизиты, Запрос);
Запрос.УстановитьПараметр("ТипыЗапасовСобственные", УчетНДСУПСлужебный.ТипыЗапасовСобственные());
Запрос.УстановитьПараметр("ТипыНоменклатурыТовар", УчетНДСУПСлужебный.ТипыНоменклатурыТовар());
Запрос.УстановитьПараметр("ВозвратПоЭкспорту",
Реквизиты.Корректировочный
И Реквизиты.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНаЭкспорт);
ШаблонСтроки = "";
Если ЗначениеЗаполнено(Реквизиты.НомерИсправления) Тогда
Если Реквизиты.Исправление Тогда
ШаблонСтроки = "ru = 'Исправление %1 от %2'";
КонецЕсли;
Если Реквизиты.Корректировочный Тогда
ШаблонСтроки = "ru = 'Исправление %1 от %2 (корректировочный)'";
КонецЕсли;
ИнформацияПоИсправлению = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонСтроки,
Реквизиты.НомерИсправления,
Реквизиты.Период);
КонецЕсли;
Запрос.УстановитьПараметр("ИнформацияПоИсправлению", ИнформацияПоИсправлению);
КоэффициентПересчетаВВалютуВзаиморасчетовРегл = РаботаСКурсамиВалютУТ.ПолучитьКоэффициентПересчетаИзВалютыВВалюту(
Запрос.Параметры.ВалютаВзаиморасчетов,
Запрос.Параметры.ВалютаРегламентированногоУчета,
Запрос.Параметры.Период);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуВзаиморасчетовРегл", КоэффициентПересчетаВВалютуВзаиморасчетовРегл);
КоэффициентПересчетаВВалютуУпр = РаботаСКурсамиВалютУТ.ПолучитьКоэффициентПересчетаИзВалютыВВалюту(
Запрос.Параметры.ВалютаСчетаФактуры,
ЗначениеНастроекПовтИсп.ВалютаУправленческогоУчета(),
Запрос.Параметры.Период);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуУпр", КоэффициентПересчетаВВалютуУпр);
КоэффициентПересчетаВВалютуУпрРегл = РаботаСКурсамиВалютУТ.ПолучитьКоэффициентПересчетаИзВалютыВВалюту(
Запрос.Параметры.ВалютаРегламентированногоУчета,
ЗначениеНастроекПовтИсп.ВалютаУправленческогоУчета(),
Запрос.Параметры.Период);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуУпрРегл", КоэффициентПересчетаВВалютуУпрРегл);
НезаполненныеПокупателиКомиссионногоТовара = Новый Массив;
НезаполненныеПокупателиКомиссионногоТовара.Добавить(Неопределено);
НезаполненныеПокупателиКомиссионногоТовара.Добавить(Справочники.Организации.ПустаяСсылка());
НезаполненныеПокупателиКомиссионногоТовара.Добавить(Справочники.Контрагенты.ПустаяСсылка());
Запрос.УстановитьПараметр("НезаполненныеПокупателиКомиссионногоТовара", НезаполненныеПокупателиКомиссионногоТовара);
Запрос.УстановитьПараметр("ИсходныеСчетаФактуры", ДокументСсылка.Товары.ВыгрузитьКолонку("ИсходныйСчетФактура"));
Если Реквизиты.НачислениеНДСПриОтгрузке
И Реквизиты.ДокументОтгрузки <> Неопределено Тогда
Если ТипЗнч(Реквизиты.ДокументОтгрузки) <> Тип("ДокументСсылка.ПервичныйДокумент") Тогда
РеквизитыОтгрузки = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Реквизиты.ДокументОтгрузки, "Исправление,ИсправляемыйДокумент");
Если РеквизитыОтгрузки.Исправление Тогда
Запрос.УстановитьПараметр("ДокументОтгрузкиИсправление", Реквизиты.ДокументОтгрузки);
Запрос.УстановитьПараметр("ДокументОтгрузки", РеквизитыОтгрузки.ИсправляемыйДокумент);
КонецЕсли;
КонецЕсли;
Запрос.УстановитьПараметр("ДатаОтгрузки", ОпределитьДатуОтгрузки(Запрос.Параметры, Истина));
КонецЕсли;
УчетНДСУП.УстановитьПараметрыЗапросаСтавкиНДС(Запрос.Параметры, Запрос.Параметры.Организация, Запрос.Параметры.Период);
КонецПроцедуры
Процедура УстановитьПараметрЗапросаСчетФактураПредыдущееИсправление(Запрос)
Если Запрос.Параметры.Свойство("СчетФактураПредыдущееИсправление") Тогда
Возврат;
КонецЕсли;
Запрос.УстановитьПараметр("СчетФактураПредыдущееИсправление", ?(Запрос.Параметры.Исправление,
СчетФактураПредыдущееИсправление(Запрос.Параметры.СчетФактураОснование, Запрос.Параметры.НомерИсправления),
Неопределено));
КонецПроцедуры
Процедура УстановитьПараметрЗапросаИсправляемыйСчетФактура(Запрос)
Если Запрос.Параметры.Свойство("ИсправляемыйСчетФактура") Тогда
Возврат;
КонецЕсли;
Запрос.УстановитьПараметр("ИсправляемыйСчетФактура", ?(
Не Запрос.Параметры.Свойство("СчетФактураПредыдущееИсправление") Или Запрос.Параметры.СчетФактураПредыдущееИсправление = Неопределено,
Запрос.Параметры.СчетФактураОснование,
Запрос.Параметры.СчетФактураПредыдущееИсправление));
КонецПроцедуры
Процедура ИнициализироватьКурсыВалют(Запрос, ДокументСсылка)
Если Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуРегл") Тогда
Возврат;
КонецЕсли;
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументСсылка, "Организация"));
Если Запрос.Параметры.ВалютаСчетаФактуры <> ВалютаРегламентированногоУчета И (Запрос.Параметры.Корректировочный ИЛИ Запрос.Параметры.Исправление) Тогда
Коэффициенты = РаботаСКурсамивалютУТ.ПолучитьКоэффициентыПересчетаВалюты(
Запрос.Параметры.ВалютаСчетаФактуры,
Неопределено,
ДатаИсходногоДокументаОснования(ДокументСсылка),
Запрос.Параметры.Организация);
КоэффициентПересчетаВВалютуРегл = Коэффициенты.КоэффициентПересчетаВВалютуРегл;
Иначе
КоэффициентПересчетаВВалютуРегл = 1;
КонецЕсли;
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуРегл", КоэффициентПересчетаВВалютуРегл);
КонецПроцедуры
Функция ТекстЗапросаВтДокументыОснования(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтДокументыОснования";
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументыОснования.Ссылка КАК Ссылка,
| ДокументыОснования.ДокументОснование КАК ДокументОснование
|ПОМЕСТИТЬ ВтДокументыОснования
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ДокументыОснования
|ГДЕ
| ДокументыОснования.Ссылка = &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтСчетаФактурыИсправления(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтСчетаФактурыИсправления";
УстановитьПараметрЗапросаСчетФактураПредыдущееИсправление(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументыОснования.ДокументОснование КАК СчетФактура
|ПОМЕСТИТЬ ВтСчетаФактурыИсправления
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ДокументыОснования
|ГДЕ
| ДокументыОснования.Ссылка = &СчетФактураОснование
|
| И НЕ ДокументыОснования.Ссылка.РеализацияЧерезКомиссионера
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументыОснования.ДокументОснование КАК СчетФактура
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ДокументыОснования
|ГДЕ
| ДокументыОснования.Ссылка = &СчетФактураОснование
| И ДокументыОснования.Ссылка.РеализацияЧерезКомиссионера
| И ДокументыОснования.ДокументОснование = &ОснованиеДокументОснование
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &СчетФактураОснование
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтТаблицаТоваров(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВТТаблицаТоваров";
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса);
ТекстЗапроса =
"ВЫБРАТЬ
| СчетФактураТовары.Ссылка КАК Ссылка,
| СчетФактураТовары.Ссылка.СчетФактураОснование КАК СчетФактураОснование,
| СчетФактураТовары.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ВЫБОР
| КОГДА ЕСТЬNULL(СчетФактураТовары.Номенклатура.ТипНоменклатуры, НЕОПРЕДЕЛЕНО) В (&ТипыНоменклатурыТовар)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.Товары)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.ПрочиеРаботыИУслуги)
| КОНЕЦ КАК ВидЦенности,
| СчетФактураТовары.ПредыдущийСчетФактура КАК ПредыдущийСчетФактура,
| СчетФактураТовары.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| СчетФактураТовары.ТипЗапасов КАК ТипЗапасов,
| СчетФактураТовары.СтавкаНДС.ПеречислениеСтавкаНДС КАК СтавкаНДС,
| СчетФактураТовары.СтавкаНДС КАК СпрСтавкаНДС,
| СчетФактураТовары.Сумма КАК Сумма,
| СчетФактураТовары.СуммаНДС КАК СуммаНДС,
| ЕСТЬNULL(Суммы.БазаНДСРегл, 0) КАК СуммаРегл,
| ЕСТЬNULL(Суммы.СуммаНДСРегл, 0) КАК СуммаНДСРегл,
| СчетФактураТовары.МежценоваяРазница КАК МежценоваяРазница,
| СчетФактураТовары.СуммаУвеличение КАК СуммаУвеличение,
| СчетФактураТовары.СуммаНДСУвеличение КАК СуммаНДСУвеличение,
| СчетФактураТовары.МежценоваяРазницаУвеличение КАК МежценоваяРазницаУвеличение,
| СчетФактураТовары.СуммаУменьшение КАК СуммаУменьшение,
| СчетФактураТовары.СуммаНДСУменьшение КАК СуммаНДСУменьшение,
| СчетФактураТовары.МежценоваяРазницаУменьшение КАК МежценоваяРазницаУменьшение,
| СчетФактураТовары.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА СчетФактураДокументыОснования.ДокументОснование ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК СчетФактураСОсобымОтражением
|ПОМЕСТИТЬ ВТТаблицаТоваров
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК СчетФактураТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураДокументыОснования
| ПО СчетФактураТовары.Ссылка = СчетФактураДокументыОснования.Ссылка
| И (СчетФактураДокументыОснования.ДокументОснование ССЫЛКА Документ.ЗаписьКнигиПродаж)
| И (ВЫРАЗИТЬ(СчетФактураДокументыОснования.ДокументОснование КАК Документ.ЗаписьКнигиПродаж).ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ИсправлениеПрочегоНачисленияНДС))
| ЛЕВОЕ СОЕДИНЕНИЕ ВтСуммыДокументовВВалютахУчета КАК Суммы
| ПО СчетФактураТовары.Ссылка = Суммы.Ссылка
| И СчетФактураТовары.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
| И &НачислениеНДСПриОтгрузке
|ГДЕ
| СчетФактураТовары.Ссылка = &Ссылка
| И НЕ &ВводОстатков";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтТаблицаДанныхДляЖурнала(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтТаблицаДанныхДляЖурнала";
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтДокументыОснования", ТекстыЗапроса) Тогда
ТекстЗапросаВтДокументыОснования(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВТТаблицаТоваров", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаТоваров(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ДокументыОснования.Ссылка КАК Ссылка,
| ДокументыОснования.ДокументОснование КАК ДокументОснование,
| """" КАК НомерИсходногоДокумента,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДатаИсходногоДокумента,
| """" КАК НомерИсправленияИсходногоДокумента,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДатаИсправленияИсходногоДокумента,
| СУММА(ВЫБОР
| КОГДА &ВалютаСчетаФактуры = ДанныеОснований.Валюта
| ТОГДА ДанныеОснований.СуммаБезНДС + ДанныеОснований.СуммаНДС
| ИНАЧЕ ДанныеОснований.БазаНДСРегл + ДанныеОснований.СуммаНДСРегл
| КОНЕЦ) КАК СуммаПоСчетуФактуре,
| СУММА(ВЫБОР
| КОГДА &ВалютаСчетаФактуры = ДанныеОснований.Валюта
| ТОГДА ДанныеОснований.СуммаНДС
| ИНАЧЕ ДанныеОснований.СуммаНДСРегл
| КОНЕЦ) КАК СуммаНДС,
| 0 КАК СуммаПоСчетуФактуреКомиссия,
| 0 КАК СуммаНДСКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУвеличение,
| 0 КАК СуммаНДСРазницаУвеличение,
| 0 КАК СуммаПоСчетуФактуреРазницаУменьшение,
| 0 КАК СуммаНДСРазницаУменьшение,
| 0 КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| 0 КАК СуммаНДСРазницаУвеличениеКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| 0 КАК СуммаНДСРазницаУменьшениеКомиссия,
| МИНИМУМ(ВЫБОР
| КОГДА ДанныеОснований.СтавкаНДС.Ставка = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ПоСтавкеБезНДС,
| ЛОЖЬ КАК Комиссия,
| НЕОПРЕДЕЛЕНО КАК Продавец,
| НЕОПРЕДЕЛЕНО КАК ИННПродавца,
| НЕОПРЕДЕЛЕНО КАК КПППродавца,
| НЕОПРЕДЕЛЕНО КАК НомерСчетаФактурыПродавца,
| НЕОПРЕДЕЛЕНО КАК ДатаСчетаФактурыПродавца,
| 0 КАК ИндексСтроки
|
|ПОМЕСТИТЬ ВтТаблицаДанныхДляЖурнала
|ИЗ
| РегистрСведений.ДанныеОснованийСчетовФактур КАК ДанныеОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументыОснования КАК ДокументыОснования
| ПО ДанныеОснований.Регистратор = ДокументыОснования.ДокументОснование
| И (НЕ &Исправление)
| И (НЕ &Корректировочный)
| И (НЕ &Перевыставленный)
| И (НЕ &НачислениеНДСПриОтгрузке)
| И ДанныеОснований.ТипЗапасов В (&ТипыЗапасовСобственные)
| И (ДанныеОснований.ПокупательКомиссионногоТовара В (&НезаполненныеПокупателиКомиссионногоТовара)
| ИЛИ &РеализацияЧерезКомиссионера)
| И ДанныеОснований.ТипСчетаФактуры = &ИдентификаторМетаданных
|
|СГРУППИРОВАТЬ ПО
| ДокументыОснования.Ссылка,
| ДокументыОснования.ДокументОснование
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДокументыОснования.Ссылка КАК Ссылка,
| ДокументыОснования.ДокументОснование КАК ДокументОснование,
| """" КАК НомерИсходногоДокумента,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДатаИсходногоДокумента,
| """" КАК НомерИсправленияИсходногоДокумента,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДатаИсправленияИсходногоДокумента,
| СУММА(ВЫБОР
| КОГДА &ВалютаСчетаФактуры = ДанныеОснований.Валюта
| ТОГДА ДанныеОснований.СуммаБезНДС + ДанныеОснований.СуммаНДС
| ИНАЧЕ ДанныеОснований.БазаНДСРегл + ДанныеОснований.СуммаНДСРегл
| КОНЕЦ) КАК СуммаПоСчетуФактуре,
| СУММА(ВЫБОР
| КОГДА &ВалютаСчетаФактуры = ДанныеОснований.Валюта
| ТОГДА ДанныеОснований.СуммаНДС
| ИНАЧЕ ДанныеОснований.СуммаНДСРегл
| КОНЕЦ) КАК СуммаНДС,
| СУММА(ВЫБОР
| КОГДА &ВалютаСчетаФактуры = ДанныеОснований.Валюта
| ТОГДА ДанныеОснований.СуммаБезНДС + ДанныеОснований.СуммаНДС
| ИНАЧЕ ДанныеОснований.БазаНДСРегл + ДанныеОснований.СуммаНДСРегл
| КОНЕЦ) КАК СуммаПоСчетуФактуреКомиссия,
| СУММА(ВЫБОР
| КОГДА &ВалютаСчетаФактуры = ДанныеОснований.Валюта
| ТОГДА ДанныеОснований.СуммаНДС
| ИНАЧЕ ДанныеОснований.СуммаНДСРегл
| КОНЕЦ) КАК СуммаНДСКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУвеличение,
| 0 КАК СуммаНДСРазницаУвеличение,
| 0 КАК СуммаПоСчетуФактуреРазницаУменьшение,
| 0 КАК СуммаНДСРазницаУменьшение,
| 0 КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| 0 КАК СуммаНДСРазницаУвеличениеКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| 0 КАК СуммаНДСРазницаУменьшениеКомиссия,
| МИНИМУМ(ВЫБОР
| КОГДА ДанныеОснований.СтавкаНДС.Ставка = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ПоСтавкеБезНДС,
| ИСТИНА КАК Комиссия,
| НЕОПРЕДЕЛЕНО КАК Продавец,
| НЕОПРЕДЕЛЕНО КАК ИННПродавца,
| НЕОПРЕДЕЛЕНО КАК КПППродавца,
| НЕОПРЕДЕЛЕНО КАК НомерСчетаФактурыПродавца,
| НЕОПРЕДЕЛЕНО КАК ДатаСчетаФактурыПродавца,
| 0 КАК ИндексСтроки
|
|ИЗ
| РегистрСведений.ДанныеОснованийСчетовФактур КАК ДанныеОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументыОснования КАК ДокументыОснования
| ПО ДанныеОснований.Регистратор = ДокументыОснования.ДокументОснование
| И (НЕ &Исправление)
| И (НЕ &Корректировочный)
| И (НЕ &Перевыставленный)
| И (НЕ &НачислениеНДСПриОтгрузке)
| И НЕ ДанныеОснований.ТипЗапасов В (&ТипыЗапасовСобственные)
| И (ДанныеОснований.ПокупательКомиссионногоТовара В (&НезаполненныеПокупателиКомиссионногоТовара)
| ИЛИ &РеализацияЧерезКомиссионера)
| И ДанныеОснований.ТипСчетаФактуры = &ИдентификаторМетаданных
|
|СГРУППИРОВАТЬ ПО
| ДокументыОснования.Ссылка,
| ДокументыОснования.ДокументОснование
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетФактураТовары.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ДокументОснование,
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.ПредставлениеНомера, """"),
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.СчетФактураОснование.Дата, СчетФактураТовары.ПредыдущийСчетФактура.Дата),
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.НомерИсправления, """"),
| ВЫБОР
| КОГДА СчетФактураТовары.ПредыдущийСчетФактура.Исправление
| ТОГДА ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.Дата, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ,
| СУММА(СчетФактураТовары.Сумма),
| СУММА(СчетФактураТовары.СуммаНДС),
| 0,
| 0,
| СУММА(СчетФактураТовары.СуммаУвеличение),
| СУММА(СчетФактураТовары.СуммаНДСУвеличение),
| СУММА(СчетФактураТовары.СуммаУменьшение),
| СУММА(СчетФактураТовары.СуммаНДСУменьшение),
| 0,
| 0,
| 0,
| 0,
| МИНИМУМ(ВЫБОР
| КОГДА СчетФактураТовары.СпрСтавкаНДС.Ставка = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ),
| ЛОЖЬ,
| НЕОПРЕДЕЛЕНО,
| НЕОПРЕДЕЛЕНО,
| НЕОПРЕДЕЛЕНО,
| НЕОПРЕДЕЛЕНО,
| НЕОПРЕДЕЛЕНО,
| ВЫБОР
| КОГДА &НачислениеНДСПриОтгрузке И НЕ (&Исправление ИЛИ &Корректировочный)
| ТОГДА 0
| ИНАЧЕ
| МИНИМУМ(СчетФактураТовары.НомерСтроки - 1)
| КОНЕЦ
|ИЗ
| ВТТаблицаТоваров КАК СчетФактураТовары
|ГДЕ
| СчетФактураТовары.ТипЗапасов В (&ТипыЗапасовСобственные)
| И (НЕ &НДССМежценовойРазницы ИЛИ &Исправление ИЛИ &Корректировочный ИЛИ &НачислениеНДСПриОтгрузке)
|
|СГРУППИРОВАТЬ ПО
| СчетФактураТовары.Ссылка,
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.СчетФактураОснование.Дата, СчетФактураТовары.ПредыдущийСчетФактура.Дата),
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.ПредставлениеНомера, """"),
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.НомерИсправления, """"),
| ВЫБОР
| КОГДА СчетФактураТовары.ПредыдущийСчетФактура.Исправление
| ТОГДА ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.Дата, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетФактураТовары.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ДокументОснование,
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.ПредставлениеНомера, """"),
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.СчетФактураОснование.Дата, СчетФактураТовары.ПредыдущийСчетФактура.Дата),
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.НомерИсправления, """"),
| ВЫБОР
| КОГДА СчетФактураТовары.ПредыдущийСчетФактура.Исправление
| ТОГДА ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.Дата, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ,
| СУММА(СчетФактураТовары.Сумма),
| СУММА(СчетФактураТовары.СуммаНДС),
| СУММА(СчетФактураТовары.Сумма),
| СУММА(СчетФактураТовары.СуммаНДС),
| СУММА(СчетФактураТовары.СуммаУвеличение),
| СУММА(СчетФактураТовары.СуммаНДСУвеличение),
| СУММА(СчетФактураТовары.СуммаУменьшение),
| СУММА(СчетФактураТовары.СуммаНДСУменьшение),
| СУММА(СчетФактураТовары.СуммаУвеличение),
| СУММА(СчетФактураТовары.СуммаНДСУвеличение),
| СУММА(СчетФактураТовары.СуммаУменьшение),
| СУММА(СчетФактураТовары.СуммаНДСУменьшение),
| МИНИМУМ(ВЫБОР
| КОГДА СчетФактураТовары.СпрСтавкаНДС.Ставка = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ),
| ИСТИНА,
| ЕСТЬNULL(Продавцы.Продавец, ЕСТЬNULL(СчетФактураТовары.СчетФактураПолученныйОтПродавца.Контрагент, НЕОПРЕДЕЛЕНО)),
| ЕСТЬNULL(Продавцы.ИННПродавца, ЕСТЬNULL(СчетФактураТовары.СчетФактураПолученныйОтПродавца.ИННКонтрагента, НЕОПРЕДЕЛЕНО)),
| ЕСТЬNULL(Продавцы.КПППродавца, ЕСТЬNULL(СчетФактураТовары.СчетФактураПолученныйОтПродавца.КППКонтрагента, НЕОПРЕДЕЛЕНО)),
| ЕСТЬNULL(СчетФактураТовары.СчетФактураПолученныйОтПродавца.Номер, НЕОПРЕДЕЛЕНО),
| ЕСТЬNULL(СчетФактураТовары.СчетФактураПолученныйОтПродавца.ДатаСоставления, НЕОПРЕДЕЛЕНО),
| ВЫБОР
| КОГДА &НачислениеНДСПриОтгрузке И НЕ (&Исправление ИЛИ &Корректировочный)
| ТОГДА 0
| ИНАЧЕ
| МИНИМУМ(СчетФактураТовары.НомерСтроки - 1)
| КОНЕЦ
|ИЗ
| ВТТаблицаТоваров КАК СчетФактураТовары
| ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.СчетФактураПолученный.Продавцы КАК Продавцы
| ПО
| СчетФактураТовары.СчетФактураПолученныйОтПродавца.Ссылка = Продавцы.Ссылка
| И СчетФактураТовары.СчетФактураПолученныйОтПродавца.СоставленКомиссионеромОтИмениПродавца
| И НЕ СчетФактураТовары.СчетФактураПолученныйОтПродавца.СводныйКомиссионный
|ГДЕ
| НЕ СчетФактураТовары.ТипЗапасов В (&ТипыЗапасовСобственные)
|
|СГРУППИРОВАТЬ ПО
| СчетФактураТовары.Ссылка,
| ЕСТЬNULL(Продавцы.Продавец, ЕСТЬNULL(СчетФактураТовары.СчетФактураПолученныйОтПродавца.Контрагент, НЕОПРЕДЕЛЕНО)),
| ЕСТЬNULL(Продавцы.ИННПродавца, ЕСТЬNULL(СчетФактураТовары.СчетФактураПолученныйОтПродавца.ИННКонтрагента, НЕОПРЕДЕЛЕНО)),
| ЕСТЬNULL(Продавцы.КПППродавца, ЕСТЬNULL(СчетФактураТовары.СчетФактураПолученныйОтПродавца.КППКонтрагента, НЕОПРЕДЕЛЕНО)),
| ЕСТЬNULL(СчетФактураТовары.СчетФактураПолученныйОтПродавца.Номер, НЕОПРЕДЕЛЕНО),
| ЕСТЬNULL(СчетФактураТовары.СчетФактураПолученныйОтПродавца.ДатаСоставления, НЕОПРЕДЕЛЕНО),
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.СчетФактураОснование.Дата, СчетФактураТовары.ПредыдущийСчетФактура.Дата),
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.ПредставлениеНомера, """"),
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.НомерИсправления, """"),
| ВЫБОР
| КОГДА СчетФактураТовары.ПредыдущийСчетФактура.Исправление
| ТОГДА ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.Дата, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| МАКСИМУМ(СчетФактураТовары.Ссылка) КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ДокументОснование,
| МАКСИМУМ(СчетФактураТовары.ПредыдущийСчетФактура.ПредставлениеНомера),
| МАКСИМУМ(СчетФактураТовары.ПредыдущийСчетФактура.СчетФактураОснование.Дата),
| МАКСИМУМ(СчетФактураТовары.ПредыдущийСчетФактура.НомерИсправления),
| МАКСИМУМ(ВЫБОР
| КОГДА СчетФактураТовары.ПредыдущийСчетФактура.Исправление
| ТОГДА СчетФактураТовары.ПредыдущийСчетФактура.Дата
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ),
| 0,
| 0,
| 0,
| 0,
| 0,
| 0,
| 0,
| 0,
| 0,
| 0,
| 0,
| 0,
| МИНИМУМ(ВЫБОР
| КОГДА СчетФактураТовары.СпрСтавкаНДС.Ставка = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ),
| ИСТИНА,
| Продавцы.Продавец,
| Продавцы.ИННПродавца,
| Продавцы.КПППродавца,
| МАКСИМУМ(СчетФактураТовары.СчетФактураПолученныйОтПродавца.Номер),
| МАКСИМУМ(СчетФактураТовары.СчетФактураПолученныйОтПродавца.ДатаСоставления),
| Продавцы.НомерСтроки + МИНИМУМ(СчетФактураТовары.НомерСтроки)
|ИЗ
| ВТТаблицаТоваров КАК СчетФактураТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.СчетФактураПолученный.Продавцы КАК Продавцы
| ПО
| СчетФактураТовары.СчетФактураПолученныйОтПродавца.Ссылка = Продавцы.Ссылка
| И СчетФактураТовары.СчетФактураПолученныйОтПродавца.СоставленКомиссионеромОтИмениПродавца
| И СчетФактураТовары.СчетФактураПолученныйОтПродавца.СводныйКомиссионный
|ГДЕ
| НЕ СчетФактураТовары.ТипЗапасов В (&ТипыЗапасовСобственные)
|
|СГРУППИРОВАТЬ ПО
| Продавцы.Продавец,
| Продавцы.ИННПродавца,
| Продавцы.КПППродавца,
| Продавцы.НомерСтроки
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаЖурналУчетаСчетовФактур(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЖурналУчетаСчетовФактур";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
УстановитьПараметрЗапросаСчетФактураПредыдущееИсправление(Запрос);
УстановитьПараметрЗапросаИсправляемыйСчетФактура(Запрос);
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаДанныхДляЖурнала", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаДанныхДляЖурнала(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаПокупатели", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаПокупатели(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаСуммДокументов", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаСуммДокументов(Запрос, ТекстыЗапроса);
КонецЕсли;
#Область ТекстРучнаяКорректировка
ТекстЗапросаРучнаяКорректировка =
"ВЫБРАТЬ
| ЖурналУчетаСчетовФактур.Период КАК Период,
| ЖурналУчетаСчетовФактур.Организация КАК Организация,
| ЖурналУчетаСчетовФактур.Контрагент КАК Контрагент,
| ЖурналУчетаСчетовФактур.СчетФактура КАК СчетФактура,
| ЖурналУчетаСчетовФактур.ЧастьЖурнала КАК ЧастьЖурнала,
| ЖурналУчетаСчетовФактур.ДатаВыставленияПолучения КАК ДатаВыставленияПолучения,
| ЖурналУчетаСчетовФактур.КодСпособаВыставленияПолучения КАК КодСпособаВыставленияПолучения,
| ЖурналУчетаСчетовФактур.КодВидаОперации КАК КодВидаОперации,
| ЖурналУчетаСчетовФактур.НомерСчетаФактуры КАК НомерСчетаФактуры,
| ЖурналУчетаСчетовФактур.ДатаСчетаФактуры КАК ДатаСчетаФактуры,
| ЖурналУчетаСчетовФактур.НомерКорректировочногоСчетаФактуры КАК НомерКорректировочногоСчетаФактуры,
| ЖурналУчетаСчетовФактур.ДатаКорректировочногоСчетаФактуры КАК ДатаКорректировочногоСчетаФактуры,
| ЖурналУчетаСчетовФактур.НомерИсправления КАК НомерИсправления,
| ЖурналУчетаСчетовФактур.ДатаИсправления КАК ДатаИсправления,
| ЖурналУчетаСчетовФактур.НомерИсправленияКорректировочногоСчетаФактуры КАК НомерИсправленияКорректировочногоСчетаФактуры,
| ЖурналУчетаСчетовФактур.ДатаИсправленияКорректировочногоСчетаФактуры КАК ДатаИсправленияКорректировочногоСчетаФактуры,
| ЖурналУчетаСчетовФактур.ИндексСтроки КАК ИндексСтроки,
| ЖурналУчетаСчетовФактур.Валюта КАК Валюта,
| ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуре КАК СуммаПоСчетуФактуре,
| ЖурналУчетаСчетовФактур.СуммаНДС КАК СуммаНДС,
| ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреРазницаУменьшение КАК СуммаПоСчетуФактуреРазницаУменьшение,
| ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреРазницаУвеличение КАК СуммаПоСчетуФактуреРазницаУвеличение,
| ЖурналУчетаСчетовФактур.СуммаНДСРазницаУменьшение КАК СуммаНДСРазницаУменьшение,
| ЖурналУчетаСчетовФактур.СуммаНДСРазницаУвеличение КАК СуммаНДСРазницаУвеличение,
| ЖурналУчетаСчетовФактур.ПоСтавкеБезНДС КАК ПоСтавкеБезНДС,
| ЖурналУчетаСчетовФактур.СчетФактураНеВыставляется КАК СчетФактураНеВыставляется,
| ЖурналУчетаСчетовФактур.КППКонтрагента КАК КППКонтрагента,
| ЖурналУчетаСчетовФактур.ИННКонтрагента КАК ИННКонтрагента,
| ЖурналУчетаСчетовФактур.Посредник КАК Посредник,
| ЖурналУчетаСчетовФактур.СчетФактураВыданныйПокупателю КАК СчетФактураВыданныйПокупателю,
| ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреКомиссия КАК СуммаПоСчетуФактуреКомиссия,
| ЖурналУчетаСчетовФактур.СуммаНДСКомиссия КАК СуммаНДСКомиссия,
| ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреРазницаУменьшениеКомиссия КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреРазницаУвеличениеКомиссия КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| ЖурналУчетаСчетовФактур.СуммаНДСРазницаУменьшениеКомиссия КАК СуммаНДСРазницаУменьшениеКомиссия,
| ЖурналУчетаСчетовФактур.СуммаНДСРазницаУвеличениеКомиссия КАК СуммаНДСРазницаУвеличениеКомиссия,
| ЖурналУчетаСчетовФактур.КодВидаОперацииКомиссия КАК КодВидаОперацииКомиссия,
| ЖурналУчетаСчетовФактур.Субкомиссионер КАК Субкомиссионер,
| ЖурналУчетаСчетовФактур.КодВидаСделки КАК КодВидаСделки,
| ЖурналУчетаСчетовФактур.НомерСчетаФактурыПродавца КАК НомерСчетаФактурыПродавца,
| ЖурналУчетаСчетовФактур.ДатаСчетаФактурыПродавца КАК ДатаСчетаФактурыПродавца,
| ЖурналУчетаСчетовФактур.ИННПродавца КАК ИННПродавца,
| ЖурналУчетаСчетовФактур.КПППродавца КАК КПППродавца,
| ЖурналУчетаСчетовФактур.ИННСубкомиссионера КАК ИННСубкомиссионера,
| ЖурналУчетаСчетовФактур.КППСубкомиссионера КАК КППСубкомиссионера,
| ЖурналУчетаСчетовФактур.Сторно КАК Сторно,
| ЖурналУчетаСчетовФактур.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| ЖурналУчетаСчетовФактур.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ЖурналУчетаСчетовФактур.ИсправлениеСобственнойОшибки КАК ИсправлениеСобственнойОшибки,
| ЖурналУчетаСчетовФактур.Продавец КАК Продавец
|ИЗ
| РегистрСведений.ЖурналУчетаСчетовФактур КАК ЖурналУчетаСчетовФактур
|ГДЕ
| ЖурналУчетаСчетовФактур.Регистратор = &Ссылка
| И &РучнаяКорректировкаЖурналаСФ
|";
#КонецОбласти
#Область ТекстСторноИсправление
ТекстЗапросаСторноИсправление =
"ВЫБРАТЬ
| &Период КАК Период,
| ЖурналУчетаСчетовФактур.Организация КАК Организация,
| ЖурналУчетаСчетовФактур.Контрагент КАК Контрагент,
| ЖурналУчетаСчетовФактур.СчетФактура КАК СчетФактура,
| ЖурналУчетаСчетовФактур.ЧастьЖурнала КАК ЧастьЖурнала,
| ЖурналУчетаСчетовФактур.ДатаВыставленияПолучения КАК ДатаВыставленияПолучения,
| ЖурналУчетаСчетовФактур.КодСпособаВыставленияПолучения КАК КодСпособаВыставленияПолучения,
| ЖурналУчетаСчетовФактур.КодВидаОперации КАК КодВидаОперации,
| ЖурналУчетаСчетовФактур.НомерСчетаФактуры КАК НомерСчетаФактуры,
| ЖурналУчетаСчетовФактур.ДатаСчетаФактуры КАК ДатаСчетаФактуры,
| ЖурналУчетаСчетовФактур.НомерКорректировочногоСчетаФактуры КАК НомерКорректировочногоСчетаФактуры,
| ЖурналУчетаСчетовФактур.ДатаКорректировочногоСчетаФактуры КАК ДатаКорректировочногоСчетаФактуры,
| ЖурналУчетаСчетовФактур.НомерИсправления КАК НомерИсправления,
| ЖурналУчетаСчетовФактур.ДатаИсправления КАК ДатаИсправления,
| ЖурналУчетаСчетовФактур.НомерИсправленияКорректировочногоСчетаФактуры КАК НомерИсправленияКорректировочногоСчетаФактуры,
| ЖурналУчетаСчетовФактур.ДатаИсправленияКорректировочногоСчетаФактуры КАК ДатаИсправленияКорректировочногоСчетаФактуры,
| ЖурналУчетаСчетовФактур.ИндексСтроки КАК ИндексСтроки,
| ЖурналУчетаСчетовФактур.Валюта КАК Валюта,
| -ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуре КАК СуммаПоСчетуФактуре,
| -ЖурналУчетаСчетовФактур.СуммаНДС КАК СуммаНДС,
| -ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреРазницаУменьшение КАК СуммаПоСчетуФактуреРазницаУменьшение,
| -ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреРазницаУвеличение КАК СуммаПоСчетуФактуреРазницаУвеличение,
| -ЖурналУчетаСчетовФактур.СуммаНДСРазницаУменьшение КАК СуммаНДСРазницаУменьшение,
| -ЖурналУчетаСчетовФактур.СуммаНДСРазницаУвеличение КАК СуммаНДСРазницаУвеличение,
| ЖурналУчетаСчетовФактур.ПоСтавкеБезНДС КАК ПоСтавкеБезНДС,
| ЖурналУчетаСчетовФактур.СчетФактураНеВыставляется КАК СчетФактураНеВыставляется,
| ЖурналУчетаСчетовФактур.КППКонтрагента КАК КППКонтрагента,
| ЖурналУчетаСчетовФактур.ИННКонтрагента КАК ИННКонтрагента,
| ЖурналУчетаСчетовФактур.Посредник КАК Посредник,
| ЖурналУчетаСчетовФактур.СчетФактураВыданныйПокупателю КАК СчетФактураВыданныйПокупателю,
| -ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреКомиссия КАК СуммаПоСчетуФактуреКомиссия,
| -ЖурналУчетаСчетовФактур.СуммаНДСКомиссия КАК СуммаНДСКомиссия,
| -ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреРазницаУменьшениеКомиссия КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| -ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреРазницаУвеличениеКомиссия КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| -ЖурналУчетаСчетовФактур.СуммаНДСРазницаУменьшениеКомиссия КАК СуммаНДСРазницаУменьшениеКомиссия,
| -ЖурналУчетаСчетовФактур.СуммаНДСРазницаУвеличениеКомиссия КАК СуммаНДСРазницаУвеличениеКомиссия,
| ЖурналУчетаСчетовФактур.КодВидаОперацииКомиссия КАК КодВидаОперацииКомиссия,
| ЖурналУчетаСчетовФактур.Субкомиссионер КАК Субкомиссионер,
| ЖурналУчетаСчетовФактур.КодВидаСделки КАК КодВидаСделки,
| ЖурналУчетаСчетовФактур.НомерСчетаФактурыПродавца КАК НомерСчетаФактурыПродавца,
| ЖурналУчетаСчетовФактур.ДатаСчетаФактурыПродавца КАК ДатаСчетаФактурыПродавца,
| ЖурналУчетаСчетовФактур.ИННПродавца КАК ИННПродавца,
| ЖурналУчетаСчетовФактур.КПППродавца КАК КПППродавца,
| ЖурналУчетаСчетовФактур.ИННСубкомиссионера КАК ИННСубкомиссионера,
| ЖурналУчетаСчетовФактур.КППСубкомиссионера КАК КППСубкомиссионера,
| ИСТИНА КАК Сторно,
| ЖурналУчетаСчетовФактур.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| ЖурналУчетаСчетовФактур.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ЖурналУчетаСчетовФактур.ИсправлениеСобственнойОшибки КАК ИсправлениеСобственнойОшибки,
| ЖурналУчетаСчетовФактур.Продавец КАК Продавец
|ИЗ
| РегистрСведений.ЖурналУчетаСчетовФактур.СрезПоследних(
| &Период,
| НЕ Сторно
| И Регистратор <> &Ссылка
| И СчетФактура = &ИсправляемыйСчетФактура) КАК ЖурналУчетаСчетовФактур
|
|ГДЕ
| &Исправление
| И (ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреКомиссия > 0
| ИЛИ ЖурналУчетаСчетовФактур.СуммаНДСКомиссия > 0
| ИЛИ ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреРазницаУменьшениеКомиссия > 0
| ИЛИ ЖурналУчетаСчетовФактур.СуммаПоСчетуФактуреРазницаУвеличениеКомиссия > 0
| ИЛИ ЖурналУчетаСчетовФактур.СуммаНДСРазницаУменьшениеКомиссия > 0
| ИЛИ ЖурналУчетаСчетовФактур.СуммаНДСРазницаУвеличениеКомиссия > 0)
|";
#КонецОбласти
#Область ТекстВыставленныеСчетаФактурыНаРеализацию
ТекстЗапросаВыставленныеСчетаФактурыНаРеализацию = "
|ВЫБРАТЬ
| &Период КАК Период,
| &Организация КАК Организация,
| &Контрагент КАК Контрагент,
| &Ссылка КАК СчетФактура,
| ЗНАЧЕНИЕ(Перечисление.ЧастиЖурналаУчетаСчетовФактур.ВыставленныеСчетаФактуры) КАК ЧастьЖурнала,
| &ДатаВыставления КАК ДатаВыставленияПолучения,
| &ВыставленВЭлектронномВиде КАК КодСпособаВыставленияПолучения,
| &КодВидаОперации КАК КодВидаОперации,
| &НомерНаПечать КАК НомерСчетаФактуры,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &ДатаСчетаФактурыОснования
| ИНАЧЕ &Период
| КОНЕЦ КАК ДатаСчетаФактуры,
| NULL КАК НомерКорректировочногоСчетаФактуры,
| NULL КАК ДатаКорректировочногоСчетаФактуры,
| ВЫБОР КОГДА &Исправление
| ТОГДА &НомерИсправления
| КОНЕЦ КАК НомерИсправления,
| ВЫБОР КОГДА &Исправление
| ТОГДА &Период
| КОНЕЦ КАК ДатаИсправления,
| NULL КАК НомерИсправленияКорректировочногоСчетаФактуры,
| NULL КАК ДатаИсправленияКорректировочногоСчетаФактуры,
| ТаблицаДанных.ИндексСтроки КАК ИндексСтроки,
| &ВалютаСчетаФактуры КАК Валюта,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуре) КАК СуммаПоСчетуФактуре,
| СУММА(ТаблицаДанных.СуммаНДС) КАК СуммаНДС,
| NULL КАК СуммаПоСчетуФактуреРазницаУменьшение,
| NULL КАК СуммаПоСчетуФактуреРазницаУвеличение,
| NULL КАК СуммаНДСРазницаУменьшение,
| NULL КАК СуммаНДСРазницаУвеличение,
| МИНИМУМ(ТаблицаДанных.ПоСтавкеБезНДС) КАК ПоСтавкеБезНДС,
| ЛОЖЬ КАК СчетФактураНеВыставляется,
| &КППКонтрагента КАК КППКонтрагента,
| &ИННКонтрагента КАК ИННКонтрагента,
| NULL КАК Посредник,
| NULL КАК СчетФактураВыданныйПокупателю,
|
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреКомиссия) КАК СуммаПоСчетуФактуреКомиссия,
| СУММА(ТаблицаДанных.СуммаНДСКомиссия) КАК СуммаНДСКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| 0 КАК СуммаНДСРазницаУменьшениеКомиссия,
| 0 КАК СуммаНДСРазницаУвеличениеКомиссия,
| ВЫБОР
| КОГДА СУММА(ТаблицаДанных.СуммаПоСчетуФактуреКомиссия) <> 0
| ТОГДА &КодВидаОперации
| ИНАЧЕ """"
| КОНЕЦ КАК КодВидаОперацииКомиссия,
| NULL КАК Субкомиссионер,
| NULL КАК КодВидаСделки,
| ТаблицаДанных.НомерСчетаФактурыПродавца КАК НомерСчетаФактурыПродавца,
| ТаблицаДанных.ДатаСчетаФактурыПродавца КАК ДатаСчетаФактурыПродавца,
| ТаблицаДанных.ИННПродавца КАК ИННПродавца,
| ТаблицаДанных.КПППродавца КАК КПППродавца,
| NULL КАК ИННСубкомиссионера,
| NULL КАК КППСубкомиссионера,
| ЛОЖЬ КАК Сторно,
| NULL КАК ИсправленныйСчетФактура,
| NULL КАК СчетФактураПолученныйОтПродавца,
| NULL КАК ИсправлениеСобственнойОшибки,
| ТаблицаДанных.Продавец КАК Продавец
|ИЗ
| ВтТаблицаДанныхДляЖурнала КАК ТаблицаДанных
|ГДЕ
| НЕ &Корректировочный
| И НЕ &РучнаяКорректировкаЖурналаСФ
| И НЕ &РеализацияЧерезКомиссионера
|СГРУППИРОВАТЬ ПО
| ТаблицаДанных.НомерСчетаФактурыПродавца,
| ТаблицаДанных.ДатаСчетаФактурыПродавца,
| ТаблицаДанных.ИННПродавца,
| ТаблицаДанных.КПППродавца,
| ТаблицаДанных.ИндексСтроки,
| ТаблицаДанных.Продавец
|ИМЕЮЩИЕ
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуре) + СУММА(ТаблицаДанных.СуммаПоСчетуФактуреКомиссия) <> 0
|";
#КонецОбласти
#Область ТекстВыставленныеСчетаФактурыНаРеализациюКорректировочный
ТекстЗапросаВыставленныеСчетаФактурыНаРеализациюКорректировочный = "
|ВЫБРАТЬ
| &Период,
| &Организация,
| &Контрагент,
| &Ссылка,
| ЗНАЧЕНИЕ(Перечисление.ЧастиЖурналаУчетаСчетовФактур.ВыставленныеСчетаФактуры),
| &ДатаВыставления,
| &ВыставленВЭлектронномВиде,
| &КодВидаОперации,
| ТаблицаДанных.НомерИсходногоДокумента,
| ТаблицаДанных.ДатаИсходногоДокумента,
| &НомерНаПечать,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &ДатаСчетаФактурыОснования
| ИНАЧЕ &Период
| КОНЕЦ,
| ТаблицаДанных.НомерИсправленияИсходногоДокумента,
| ТаблицаДанных.ДатаИсправленияИсходногоДокумента,
| &НомерИсправления,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &Период
| КОНЕЦ,
| ТаблицаДанных.ИндексСтроки,
| &ВалютаСчетаФактуры,
| NULL,
| NULL,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУменьшение),
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУвеличение),
| СУММА(ТаблицаДанных.СуммаНДСРазницаУменьшение),
| СУММА(ТаблицаДанных.СуммаНДСРазницаУвеличение),
| МИНИМУМ(ТаблицаДанных.ПоСтавкеБезНДС),
| ЛОЖЬ,
| &КППКонтрагента,
| &ИННКонтрагента,
| NULL,
| NULL,
|
| 0 КАК СуммаПоСчетуФактуреКомиссия,
| 0 КАК СуммаНДСКомиссия,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУменьшениеКомиссия) КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУвеличениеКомиссия) КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| СУММА(ТаблицаДанных.СуммаНДСРазницаУменьшениеКомиссия) КАК СуммаНДСРазницаУменьшениеКомиссия,
| СУММА(ТаблицаДанных.СуммаНДСРазницаУвеличениеКомиссия) КАК СуммаНДСРазницаУвеличениеКомиссия,
| ВЫБОР
| КОГДА СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУменьшениеКомиссия) <> 0
| ИЛИ СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУвеличениеКомиссия) <> 0
| ТОГДА &КодВидаОперации
| ИНАЧЕ """"
| КОНЕЦ КАК КодВидаОперацииКомиссия,
| NULL КАК Субкомиссионер,
| NULL КАК КодВидаСделки,
| ТаблицаДанных.НомерСчетаФактурыПродавца КАК НомерСчетаФактурыПродавца,
| ТаблицаДанных.ДатаСчетаФактурыПродавца КАК ДатаСчетаФактурыПродавца,
| ТаблицаДанных.ИННПродавца КАК ИННПродавца,
| ТаблицаДанных.КПППродавца КАК КПППродавца,
| NULL КАК ИННСубкомиссионера,
| NULL КАК КППСубкомиссионера,
| ЛОЖЬ КАК Сторно,
| NULL КАК ИсправленныйСчетФактура,
| NULL КАК СчетФактураПолученныйОтПродавца,
| NULL КАК ИсправлениеСобственнойОшибки,
| ТаблицаДанных.Продавец КАК Продавец
|
|ИЗ
| ВтТаблицаДанныхДляЖурнала КАК ТаблицаДанных
|
|ГДЕ
| &Корректировочный
| И НЕ &РучнаяКорректировкаЖурналаСФ
| И НЕ &РеализацияЧерезКомиссионера
|
|СГРУППИРОВАТЬ ПО
| ТаблицаДанных.НомерИсходногоДокумента,
| ТаблицаДанных.ДатаИсходногоДокумента,
| ТаблицаДанных.НомерИсправленияИсходногоДокумента,
| ТаблицаДанных.ДатаИсправленияИсходногоДокумента,
| ТаблицаДанных.НомерСчетаФактурыПродавца,
| ТаблицаДанных.ДатаСчетаФактурыПродавца,
| ТаблицаДанных.ИННПродавца,
| ТаблицаДанных.КПППродавца,
| ТаблицаДанных.Продавец,
| ТаблицаДанных.ИндексСтроки";
#КонецОбласти
#Область ТекстПолученныеСчетаФактуры
ТекстЗапросаПолученныеСчетаФактуры = "
|ВЫБРАТЬ
| &Период КАК Период,
| &Контрагент КАК Контрагент,
| &Организация КАК Организация,
| &Ссылка КАК СчетФактура,
| ЗНАЧЕНИЕ(Перечисление.ЧастиЖурналаУчетаСчетовФактур.ПолученныеСчетаФактуры) КАК ЧастьЖурнала,
| &ДатаВыставления КАК ДатаВыставленияПолучения,
| &ВыставленВЭлектронномВиде КАК КодСпособаВыставленияПолучения,
| &КодВидаОперации КАК КодВидаОперации,
| &НомерНаПечать КАК НомерСчетаФактуры,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &ДатаСчетаФактурыОснования
| ИНАЧЕ &Период
| КОНЕЦ КАК ДатаСчетаФактуры,
| NULL КАК НомерКорректировочногоСчетаФактуры,
| NULL КАК ДатаКорректировочногоСчетаФактуры,
| ВЫБОР КОГДА &Исправление
| ТОГДА &НомерИсправления
| КОНЕЦ КАК НомерИсправления,
| ВЫБОР КОГДА &Исправление
| ТОГДА &Период
| КОНЕЦ КАК ДатаИсправления,
| NULL КАК НомерИсправленияКорректировочногоСчетаФактуры,
| NULL КАК ДатаИсправленияКорректировочногоСчетаФактуры,
| NULL КАК ИндексСтроки,
| &ВалютаСчетаФактуры КАК Валюта,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуре) КАК СуммаПоСчетуФактуре,
| СУММА(ТаблицаДанных.СуммаНДС) КАК СуммаНДС,
| NULL КАК СуммаПоСчетуФактуреРазницаУменьшение,
| NULL КАК СуммаПоСчетуФактуреРазницаУвеличение,
| NULL КАК СуммаНДСРазницаУменьшение,
| NULL КАК СуммаНДСРазницаУвеличение,
| МИНИМУМ(ТаблицаДанных.ПоСтавкеБезНДС) КАК ПоСтавкеБезНДС,
| ЛОЖЬ КАК СчетФактураНеВыставляется,
| ВЫБОР
| КОГДА НЕ ДанныеПодразделений.РегистрацияВНалоговомОргане.Ссылка ЕСТЬ NULL
| ТОГДА ДанныеПодразделений.РегистрацияВНалоговомОргане.КПП
| ИНАЧЕ &ОрганизацияКПП
| КОНЕЦ,
| &ИННКонтрагента КАК ИННКонтрагента,
| NULL КАК Посредник,
| NULL КАК СчетФактураВыданныйПокупателю,
|
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреКомиссия) КАК СуммаПоСчетуФактуреКомиссия,
| СУММА(ТаблицаДанных.СуммаНДСКомиссия) КАК СуммаНДСКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| 0 КАК СуммаНДСРазницаУменьшениеКомиссия,
| 0 КАК СуммаНДСРазницаУвеличениеКомиссия,
| ВЫБОР
| КОГДА СУММА(ТаблицаДанных.СуммаПоСчетуФактуреКомиссия) <> 0
| ТОГДА &КодВидаОперации
| ИНАЧЕ """"
| КОНЕЦ КАК КодВидаОперацииКомиссия,
| NULL КАК Субкомиссионер,
| NULL КАК КодВидаСделки,
| NULL КАК НомерСчетаФактурыПродавца,
| NULL КАК ДатаСчетаФактурыПродавца,
| NULL КАК ИННПродавца,
| NULL КАК КПППродавца,
| NULL КАК ИННСубкомиссионера,
| NULL КАК КППСубкомиссионера,
| ЛОЖЬ КАК Сторно,
| NULL КАК ИсправленныйСчетФактура,
| NULL КАК СчетФактураПолученныйОтПродавца,
| NULL КАК ИсправлениеСобственнойОшибки,
| NULL КАК Продавец
|ИЗ
| ВтТаблицаДанныхДляЖурнала КАК ТаблицаДанных
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданный
| ПО ТаблицаДанных.Ссылка = СчетФактураВыданный.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних КАК ДанныеПодразделений
| ПО ДанныеПодразделений.Организация = СчетФактураВыданный.Организация
| И ДанныеПодразделений.Подразделение = ЕСТЬNULL(СчетФактураВыданный.Склад.Подразделение, СчетФактураВыданный.Подразделение)
| И ДанныеПодразделений.Подразделение <> ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
|ГДЕ
| НЕ &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя)
| И НЕ &РучнаяКорректировкаЖурналаСФ
| И &ДокументИнтеркампани
| И &ДатаВыставления <> ДАТАВРЕМЯ(1,1,1)
| И &Контрагент <> &Организация
| И НЕ &Корректировочный
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА НЕ ДанныеПодразделений.РегистрацияВНалоговомОргане.Ссылка ЕСТЬ NULL
| ТОГДА ДанныеПодразделений.РегистрацияВНалоговомОргане.КПП
| ИНАЧЕ &ОрганизацияКПП
| КОНЕЦ";
#КонецОбласти
#Область ТекстПолученныеСчетаФактурыКорректировочный
ТекстЗапросаПолученныеСчетаФактурыКорректировочный = "
|ВЫБРАТЬ
| &Период,
| &Контрагент,
| &Организация,
| &Ссылка,
| ЗНАЧЕНИЕ(Перечисление.ЧастиЖурналаУчетаСчетовФактур.ПолученныеСчетаФактуры),
| &ДатаВыставления,
| &ВыставленВЭлектронномВиде,
| &КодВидаОперацииНаУменьшение,
| ТаблицаДанных.НомерИсходногоДокумента,
| ТаблицаДанных.ДатаИсходногоДокумента,
| &НомерНаПечать,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &ДатаСчетаФактурыОснования
| ИНАЧЕ &Период
| КОНЕЦ,
| ТаблицаДанных.НомерИсправленияИсходногоДокумента,
| ТаблицаДанных.ДатаИсправленияИсходногоДокумента,
| &НомерИсправления,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &Период
| КОНЕЦ,
| ТаблицаДанных.ИндексСтроки,
| &ВалютаСчетаФактуры,
| NULL,
| NULL,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУменьшение),
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУвеличение),
| СУММА(ТаблицаДанных.СуммаНДСРазницаУменьшение),
| СУММА(ТаблицаДанных.СуммаНДСРазницаУвеличение),
| МИНИМУМ(ТаблицаДанных.ПоСтавкеБезНДС),
| ЛОЖЬ,
| ВЫБОР
| КОГДА НЕ ДанныеПодразделений.РегистрацияВНалоговомОргане.Ссылка ЕСТЬ NULL
| ТОГДА ДанныеПодразделений.РегистрацияВНалоговомОргане.КПП
| ИНАЧЕ &ОрганизацияКПП
| КОНЕЦ,
| &ИННКонтрагента,
| NULL,
| NULL,
|
| 0 КАК СуммаПоСчетуФактуреКомиссия,
| 0 КАК СуммаНДСКомиссия,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУменьшениеКомиссия) КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУвеличениеКомиссия) КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| СУММА(ТаблицаДанных.СуммаНДСРазницаУменьшениеКомиссия) КАК СуммаНДСРазницаУменьшениеКомиссия,
| СУММА(ТаблицаДанных.СуммаНДСРазницаУвеличениеКомиссия) КАК СуммаНДСРазницаУвеличениеКомиссия,
| ВЫБОР
| КОГДА СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУменьшениеКомиссия) <> 0
| ИЛИ СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУвеличениеКомиссия) <> 0
| ТОГДА &КодВидаОперацииНаУменьшение
| ИНАЧЕ """"
| КОНЕЦ КАК КодВидаОперацииКомиссия,
| NULL КАК Субкомиссионер,
| NULL КАК КодВидаСделки,
| NULL КАК НомерСчетаФактурыПродавца,
| NULL КАК ДатаСчетаФактурыПродавца,
| NULL КАК ИННПродавца,
| NULL КАК КПППродавца,
| NULL КАК ИННСубкомиссионера,
| NULL КАК КППСубкомиссионера,
| ЛОЖЬ КАК Сторно,
| NULL КАК ИсправленныйСчетФактура,
| NULL КАК СчетФактураПолученныйОтПродавца,
| NULL КАК ИсправлениеСобственнойОшибки,
| NULL КАК Продавец
|
|ИЗ
| ВтТаблицаДанныхДляЖурнала КАК ТаблицаДанных
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданный
| ПО ТаблицаДанных.Ссылка = СчетФактураВыданный.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних КАК ДанныеПодразделений
| ПО ДанныеПодразделений.Организация = СчетФактураВыданный.Организация
| И ДанныеПодразделений.Подразделение = ЕСТЬNULL(СчетФактураВыданный.Склад.Подразделение, СчетФактураВыданный.Подразделение)
| И ДанныеПодразделений.Подразделение <> ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
|
|ГДЕ
| НЕ &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя)
| И НЕ &РучнаяКорректировкаЖурналаСФ
| И &ДокументИнтеркампани
| И &ДатаВыставления <> ДАТАВРЕМЯ(1,1,1)
| И &Контрагент <> &Организация
| И &Корректировочный
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА НЕ ДанныеПодразделений.РегистрацияВНалоговомОргане.Ссылка ЕСТЬ NULL
| ТОГДА ДанныеПодразделений.РегистрацияВНалоговомОргане.КПП
| ИНАЧЕ &ОрганизацияКПП
| КОНЕЦ,
| ТаблицаДанных.НомерИсходногоДокумента,
| ТаблицаДанных.ДатаИсходногоДокумента,
| ТаблицаДанных.НомерИсправленияИсходногоДокумента,
| ТаблицаДанных.ДатаИсправленияИсходногоДокумента,
| ТаблицаДанных.ИндексСтроки";
#КонецОбласти
#Область ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеру
ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеру = "
|ВЫБРАТЬ
| &Период КАК Период,
| &Организация КАК Организация,
| Покупатели.Покупатель КАК Контрагент,
| &Ссылка КАК СчетФактура,
| ЗНАЧЕНИЕ(Перечисление.ЧастиЖурналаУчетаСчетовФактур.ВыставленныеСчетаФактуры) КАК ЧастьЖурнала,
| &ДатаВыставления КАК ДатаВыставленияПолучения,
| &ВыставленВЭлектронномВиде КАК КодСпособаВыставленияПолучения,
| &КодВидаОперации КАК КодВидаОперации,
| &НомерНаПечать КАК НомерСчетаФактуры,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &ДатаСчетаФактурыОснования
| ИНАЧЕ &Период
| КОНЕЦ КАК ДатаСчетаФактуры,
| NULL КАК НомерКорректировочногоСчетаФактуры,
| NULL КАК ДатаКорректировочногоСчетаФактуры,
| ВЫБОР КОГДА &Исправление
| ТОГДА &НомерИсправления
| КОНЕЦ КАК НомерИсправления,
| ВЫБОР КОГДА &Исправление
| ТОГДА &Период
| КОНЕЦ КАК ДатаИсправления,
| NULL КАК НомерИсправленияКорректировочногоСчетаФактуры,
| NULL КАК ДатаИсправленияКорректировочногоСчетаФактуры,
| Покупатели.НомерСтроки КАК ИндексСтроки,
| &ВалютаСчетаФактуры КАК Валюта,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуре) КАК СуммаПоСчетуФактуре,
| СУММА(ТаблицаДанных.СуммаНДС) КАК СуммаНДС,
| NULL КАК СуммаПоСчетуФактуреРазницаУменьшение,
| NULL КАК СуммаПоСчетуФактуреРазницаУвеличение,
| NULL КАК СуммаНДСРазницаУменьшение,
| NULL КАК СуммаНДСРазницаУвеличение,
| МИНИМУМ(ТаблицаДанных.ПоСтавкеБезНДС) КАК ПоСтавкеБезНДС,
| ЛОЖЬ КАК СчетФактураНеВыставляется,
| Покупатели.КПППокупателя КАК КППКонтрагента,
| Покупатели.ИННПокупателя КАК ИННКонтрагента,
| &Контрагент КАК Посредник,
| NULL КАК СчетФактураВыданныйПокупателю,
|
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреКомиссия) КАК СуммаПоСчетуФактуреКомиссия,
| СУММА(ТаблицаДанных.СуммаНДСКомиссия) КАК СуммаНДСКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| 0 КАК СуммаНДСРазницаУменьшениеКомиссия,
| 0 КАК СуммаНДСРазницаУвеличениеКомиссия,
| ВЫБОР
| КОГДА СУММА(ТаблицаДанных.СуммаПоСчетуФактуреКомиссия) <> 0
| ТОГДА &КодВидаОперации
| ИНАЧЕ """"
| КОНЕЦ КАК КодВидаОперацииКомиссия,
| NULL КАК Субкомиссионер,
| NULL КАК КодВидаСделки,
| ТаблицаДанных.НомерСчетаФактурыПродавца КАК НомерСчетаФактурыПродавца,
| ТаблицаДанных.ДатаСчетаФактурыПродавца КАК ДатаСчетаФактурыПродавца,
| ТаблицаДанных.ИННПродавца КАК ИННПродавца,
| ТаблицаДанных.КПППродавца КАК КПППродавца,
| NULL КАК ИННСубкомиссионера,
| NULL КАК КППСубкомиссионера,
| ЛОЖЬ КАК Сторно,
| NULL КАК ИсправленныйСчетФактура,
| NULL КАК СчетФактураПолученныйОтПродавца,
| NULL КАК ИсправлениеСобственнойОшибки,
| ТаблицаДанных.Продавец КАК Продавец
|ИЗ
| ВтТаблицаДанныхДляЖурнала КАК ТаблицаДанных
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаПокупатели КАК Покупатели
| ПО Покупатели.ДокументОснование = ТаблицаДанных.ДокументОснование
|ГДЕ
| НЕ &Корректировочный
| И НЕ &Исправление
| И НЕ &РучнаяКорректировкаЖурналаСФ
| И &РеализацияЧерезКомиссионера
| И НЕ &ДокументОснованиеОтчетКомиссионера
|СГРУППИРОВАТЬ ПО
| ТаблицаДанных.НомерСчетаФактурыПродавца,
| ТаблицаДанных.ДатаСчетаФактурыПродавца,
| ТаблицаДанных.ИННПродавца,
| ТаблицаДанных.КПППродавца,
| Покупатели.НомерСтроки,
| ТаблицаДанных.Продавец,
| Покупатели.Покупатель,
| Покупатели.КПППокупателя,
| Покупатели.ИННПокупателя";
#КонецОбласти
#Область ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеруКорректировочный
ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеруКорректировочный = "
|ВЫБРАТЬ
| &Период,
| &Организация,
| Покупатели.Покупатель,
| &Ссылка,
| ЗНАЧЕНИЕ(Перечисление.ЧастиЖурналаУчетаСчетовФактур.ВыставленныеСчетаФактуры),
| &ДатаВыставления,
| &ВыставленВЭлектронномВиде,
| &КодВидаОперации,
| ТаблицаДанных.НомерИсходногоДокумента,
| ТаблицаДанных.ДатаИсходногоДокумента,
| &НомерНаПечать,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &ДатаСчетаФактурыОснования
| ИНАЧЕ &Период
| КОНЕЦ,
| ТаблицаДанных.НомерИсправленияИсходногоДокумента,
| ТаблицаДанных.ДатаИсправленияИсходногоДокумента,
| &НомерИсправления,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &Период
| КОНЕЦ,
| ТаблицаДанных.ИндексСтроки,
| &ВалютаСчетаФактуры,
| NULL,
| NULL,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУменьшение),
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУвеличение),
| СУММА(ТаблицаДанных.СуммаНДСРазницаУменьшение),
| СУММА(ТаблицаДанных.СуммаНДСРазницаУвеличение),
| МИНИМУМ(ТаблицаДанных.ПоСтавкеБезНДС),
| ЛОЖЬ,
| Покупатели.КПППокупателя,
| Покупатели.ИННПокупателя,
| &Контрагент КАК Посредник,
| NULL,
|
| 0 КАК СуммаПоСчетуФактуреКомиссия,
| 0 КАК СуммаНДСКомиссия,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУменьшениеКомиссия) КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУвеличениеКомиссия) КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| СУММА(ТаблицаДанных.СуммаНДСРазницаУменьшениеКомиссия) КАК СуммаНДСРазницаУменьшениеКомиссия,
| СУММА(ТаблицаДанных.СуммаНДСРазницаУвеличениеКомиссия) КАК СуммаНДСРазницаУвеличениеКомиссия,
| ВЫБОР
| КОГДА СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУменьшениеКомиссия) <> 0
| ИЛИ СУММА(ТаблицаДанных.СуммаПоСчетуФактуреРазницаУвеличениеКомиссия) <> 0
| ТОГДА &КодВидаОперации
| ИНАЧЕ """"
| КОНЕЦ КАК КодВидаОперацииКомиссия,
| NULL КАК Субкомиссионер,
| NULL КАК КодВидаСделки,
| ТаблицаДанных.НомерСчетаФактурыПродавца КАК НомерСчетаФактурыПродавца,
| ТаблицаДанных.ДатаСчетаФактурыПродавца КАК ДатаСчетаФактурыПродавца,
| ТаблицаДанных.ИННПродавца КАК ИННПродавца,
| ТаблицаДанных.КПППродавца КАК КПППродавца,
| NULL КАК ИННСубкомиссионера,
| NULL КАК КППСубкомиссионера,
| ЛОЖЬ КАК Сторно,
| NULL КАК ИсправленныйСчетФактура,
| NULL КАК СчетФактураПолученныйОтПродавца,
| NULL КАК ИсправлениеСобственнойОшибки,
| ТаблицаДанных.Продавец КАК Продавец
|
|ИЗ
| ВтТаблицаДанныхДляЖурнала КАК ТаблицаДанных
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаПокупатели КАК Покупатели
| ПО ИСТИНА
|
|ГДЕ
| &Корректировочный
| И НЕ &РучнаяКорректировкаЖурналаСФ
| И &РеализацияЧерезКомиссионера
| И НЕ &ДокументОснованиеОтчетКомиссионера
|
|СГРУППИРОВАТЬ ПО
| ТаблицаДанных.НомерИсходногоДокумента,
| ТаблицаДанных.ДатаИсходногоДокумента,
| ТаблицаДанных.НомерИсправленияИсходногоДокумента,
| ТаблицаДанных.ДатаИсправленияИсходногоДокумента,
| ТаблицаДанных.НомерСчетаФактурыПродавца,
| ТаблицаДанных.ДатаСчетаФактурыПродавца,
| ТаблицаДанных.ИННПродавца,
| ТаблицаДанных.КПППродавца,
| ТаблицаДанных.Продавец,
| ТаблицаДанных.ИндексСтроки,
| Покупатели.Покупатель,
| Покупатели.КПППокупателя,
| Покупатели.ИННПокупателя";
#КонецОбласти
#Область ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеруИсправление
ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеруИсправление = "
|ВЫБРАТЬ
| &Период КАК Период,
| &Организация КАК Организация,
| Покупатели.Покупатель КАК Контрагент,
| &Ссылка КАК СчетФактура,
| ЗНАЧЕНИЕ(Перечисление.ЧастиЖурналаУчетаСчетовФактур.ВыставленныеСчетаФактуры) КАК ЧастьЖурнала,
| &ДатаВыставления КАК ДатаВыставленияПолучения,
| &ВыставленВЭлектронномВиде КАК КодСпособаВыставленияПолучения,
| &КодВидаОперации КАК КодВидаОперации,
| &НомерНаПечать КАК НомерСчетаФактуры,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &ДатаСчетаФактурыОснования
| ИНАЧЕ &Период
| КОНЕЦ КАК ДатаСчетаФактуры,
| NULL КАК НомерКорректировочногоСчетаФактуры,
| NULL КАК ДатаКорректировочногоСчетаФактуры,
| ВЫБОР КОГДА &Исправление
| ТОГДА &НомерИсправления
| КОНЕЦ КАК НомерИсправления,
| ВЫБОР КОГДА &Исправление
| ТОГДА &Период
| КОНЕЦ КАК ДатаИсправления,
| NULL КАК НомерИсправленияКорректировочногоСчетаФактуры,
| NULL КАК ДатаИсправленияКорректировочногоСчетаФактуры,
| Покупатели.НомерСтроки КАК ИндексСтроки,
| &ВалютаСчетаФактуры КАК Валюта,
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуре) КАК СуммаПоСчетуФактуре,
| СУММА(ТаблицаДанных.СуммаНДС) КАК СуммаНДС,
| NULL КАК СуммаПоСчетуФактуреРазницаУменьшение,
| NULL КАК СуммаПоСчетуФактуреРазницаУвеличение,
| NULL КАК СуммаНДСРазницаУменьшение,
| NULL КАК СуммаНДСРазницаУвеличение,
| МИНИМУМ(ТаблицаДанных.ПоСтавкеБезНДС) КАК ПоСтавкеБезНДС,
| ЛОЖЬ КАК СчетФактураНеВыставляется,
| Покупатели.КПППокупателя КАК КППКонтрагента,
| Покупатели.ИННПокупателя КАК ИННКонтрагента,
| &Контрагент КАК Посредник,
| NULL КАК СчетФактураВыданныйПокупателю,
|
| СУММА(ТаблицаДанных.СуммаПоСчетуФактуреКомиссия) КАК СуммаПоСчетуФактуреКомиссия,
| СУММА(ТаблицаДанных.СуммаНДСКомиссия) КАК СуммаНДСКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| 0 КАК СуммаНДСРазницаУменьшениеКомиссия,
| 0 КАК СуммаНДСРазницаУвеличениеКомиссия,
| ВЫБОР
| КОГДА СУММА(ТаблицаДанных.СуммаПоСчетуФактуреКомиссия) <> 0
| ТОГДА &КодВидаОперации
| ИНАЧЕ """"
| КОНЕЦ КАК КодВидаОперацииКомиссия,
| NULL КАК Субкомиссионер,
| NULL КАК КодВидаСделки,
| ТаблицаДанных.НомерСчетаФактурыПродавца КАК НомерСчетаФактурыПродавца,
| ТаблицаДанных.ДатаСчетаФактурыПродавца КАК ДатаСчетаФактурыПродавца,
| ТаблицаДанных.ИННПродавца КАК ИННПродавца,
| ТаблицаДанных.КПППродавца КАК КПППродавца,
| NULL КАК ИННСубкомиссионера,
| NULL КАК КППСубкомиссионера,
| ЛОЖЬ КАК Сторно,
| NULL КАК ИсправленныйСчетФактура,
| NULL КАК СчетФактураПолученныйОтПродавца,
| NULL КАК ИсправлениеСобственнойОшибки,
| ТаблицаДанных.Продавец КАК Продавец
|ИЗ
| ВтТаблицаДанныхДляЖурнала КАК ТаблицаДанных
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаПокупатели КАК Покупатели
| ПО ИСТИНА
|ГДЕ
| НЕ &Корректировочный И &Исправление
| И НЕ &РучнаяКорректировкаЖурналаСФ
| И &РеализацияЧерезКомиссионера
| И НЕ &ДокументОснованиеОтчетКомиссионера
|СГРУППИРОВАТЬ ПО
| ТаблицаДанных.НомерСчетаФактурыПродавца,
| ТаблицаДанных.ДатаСчетаФактурыПродавца,
| ТаблицаДанных.ИННПродавца,
| ТаблицаДанных.КПППродавца,
| Покупатели.НомерСтроки,
| ТаблицаДанных.Продавец,
| Покупатели.Покупатель,
| Покупатели.КПППокупателя,
| Покупатели.ИННПокупателя";
#КонецОбласти
#Область ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеруПоОтчетуКомиссионера
ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеруПоОтчетуКомиссионера = "
|ВЫБРАТЬ
| &Период КАК Период,
| &Организация КАК Организация,
| Покупатели.Покупатель КАК Контрагент,
| Покупатели.Ссылка КАК СчетФактура,
| ЗНАЧЕНИЕ(Перечисление.ЧастиЖурналаУчетаСчетовФактур.ВыставленныеСчетаФактуры) КАК ЧастьЖурнала,
| &ДатаВыставления КАК ДатаВыставленияПолучения,
| &ВыставленВЭлектронномВиде КАК КодСпособаВыставленияПолучения,
| &КодВидаОперации КАК КодВидаОперации,
| &НомерНаПечать КАК НомерСчетаФактуры,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &ДатаСчетаФактурыОснования
| ИНАЧЕ &Период
| КОНЕЦ КАК ДатаСчетаФактуры,
| NULL КАК НомерКорректировочногоСчетаФактуры,
| NULL КАК ДатаКорректировочногоСчетаФактуры,
| ВЫБОР КОГДА &Исправление
| ТОГДА &НомерИсправления
| КОНЕЦ КАК НомерИсправления,
| ВЫБОР КОГДА &Исправление
| ТОГДА &Период
| КОНЕЦ КАК ДатаИсправления,
| NULL КАК НомерИсправленияКорректировочногоСчетаФактуры,
| NULL КАК ДатаИсправленияКорректировочногоСчетаФактуры,
| Покупатели.НомерСтроки КАК ИндексСтроки,
| &ВалютаСчетаФактуры КАК Валюта,
| СУММА(ТаблицаСуммДокументов.СуммаПоСчетуФактуреЖурнал) КАК СуммаПоСчетуФактуре,
| СУММА(ТаблицаСуммДокументов.СуммаНДСЖурнал) КАК СуммаНДС,
| 0 КАК СуммаПоСчетуФактуреРазницаУменьшение,
| 0 КАК СуммаПоСчетуФактуреРазницаУвеличение,
| 0 КАК СуммаНДСРазницаУменьшение,
| 0 КАК СуммаНДСРазницаУвеличение,
| МИНИМУМ(ВЫБОР
| КОГДА ТаблицаСуммДокументов.СтавкаНДС.Ставка = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ПоСтавкеБезНДС,
| ЛОЖЬ КАК СчетФактураНеВыставляется,
| Покупатели.КПППокупателя КАК КППКонтрагента,
| Покупатели.ИННПокупателя КАК ИННКонтрагента,
| &Контрагент КАК Посредник,
| NULL КАК СчетФактураВыданныйПокупателю,
|
| СУММА(ВЫБОР
| КОГДА ТаблицаСуммДокументов.ТипЗапасов В (&ТипыЗапасовСобственные)
| ТОГДА 0
| ИНАЧЕ ТаблицаСуммДокументов.СуммаПоСчетуФактуреЖурнал
| КОНЕЦ) КАК СуммаПоСчетуФактуреКомиссия,
| СУММА(ВЫБОР
| КОГДА ТаблицаСуммДокументов.ТипЗапасов В (&ТипыЗапасовСобственные)
| ТОГДА 0
| ИНАЧЕ ТаблицаСуммДокументов.СуммаНДСЖурнал
| КОНЕЦ) КАК СуммаНДСКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУменьшениеКомиссия,
| 0 КАК СуммаПоСчетуФактуреРазницаУвеличениеКомиссия,
| 0 КАК СуммаНДСРазницаУменьшениеКомиссия,
| 0 КАК СуммаНДСРазницаУвеличениеКомиссия,
| МАКСИМУМ(ВЫБОР
| КОГДА ТаблицаСуммДокументов.ТипЗапасов В (&ТипыЗапасовСобственные)
| ТОГДА """"
| ИНАЧЕ &КодВидаОперации
| КОНЕЦ) КАК КодВидаОперацииКомиссия,
| NULL КАК Субкомиссионер,
| """" КАК КодВидаСделки,
| NULL КАК НомерСчетаФактурыПродавца,
| NULL КАК ДатаСчетаФактурыПродавца,
| NULL КАК ИННПродавца,
| NULL КАК КПППродавца,
| NULL КАК ИННСубкомиссионера,
| NULL КАК КППСубкомиссионера,
| ЛОЖЬ КАК Сторно,
| NULL КАК ИсправленныйСчетФактура,
| NULL КАК СчетФактураПолученныйОтПродавца,
| NULL КАК ИсправлениеСобственнойОшибки,
| NULL КАК Продавец
|
|ИЗ
| Документ.СчетФактураВыданный.Покупатели КАК Покупатели
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ВтТаблицаСуммДокументов КАК ТаблицаСуммДокументов
| ПО
| Покупатели.Покупатель = ТаблицаСуммДокументов.Покупатель
| И (Покупатели.НомерСчетаФактуры = ТаблицаСуммДокументов.НомерСчетаФактурыКомиссионера)
| И (НАЧАЛОПЕРИОДА(ТаблицаСуммДокументов.ДатаСчетаФактурыКомиссионера, ДЕНЬ) = НАЧАЛОПЕРИОДА(&ДатаКомиссионера, ДЕНЬ)
| ИЛИ НАЧАЛОПЕРИОДА(ТаблицаСуммДокументов.ДатаСчетаФактурыКомиссионера, ДЕНЬ) = НАЧАЛОПЕРИОДА(&Период, ДЕНЬ)
| ИЛИ ТаблицаСуммДокументов.ДатаСчетаФактурыКомиссионера = ДАТАВРЕМЯ(1,1,1))
|ГДЕ
| Покупатели.Ссылка = &Ссылка
| И &РеализацияЧерезКомиссионера
| И &ДокументОснованиеОтчетКомиссионера
|
|СГРУППИРОВАТЬ ПО
| Покупатели.Ссылка,
| ВЫБОР
| КОГДА ТаблицаСуммДокументов.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ,
| Покупатели.НомерСтроки,
| Покупатели.Покупатель,
| Покупатели.КПППокупателя,
| Покупатели.ИННПокупателя
|";
#КонецОбласти
МассивТекстов = Новый Массив;
МассивТекстов.Добавить(ТекстЗапросаРучнаяКорректировка);
МассивТекстов.Добавить(ТекстЗапросаСторноИсправление);
МассивТекстов.Добавить(ТекстЗапросаВыставленныеСчетаФактурыНаРеализацию);
МассивТекстов.Добавить(ТекстЗапросаВыставленныеСчетаФактурыНаРеализациюКорректировочный);
МассивТекстов.Добавить(ТекстЗапросаПолученныеСчетаФактуры);
МассивТекстов.Добавить(ТекстЗапросаПолученныеСчетаФактурыКорректировочный);
МассивТекстов.Добавить(ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеру);
МассивТекстов.Добавить(ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеруКорректировочный);
МассивТекстов.Добавить(ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеруИсправление);
МассивТекстов.Добавить(ТекстЗапросаВыставленныеСчетаФактурыВыставляемыйКомиссионеруПоОтчетуКомиссионера);
ТекстЗапроса = СтрСоединить(МассивТекстов, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса
КонецФункции
Функция ТекстЗапросаВтТаблицаКорректировки(Запрос, ТекстыЗапроса, ПрошлыеКорректировки = Ложь)
ИмяРегистра = "ВтТаблицаКорректировки";
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВТТаблицаТоваров", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаТоваров(Запрос, ТекстыЗапроса);
КонецЕсли;
ИнициализироватьКурсыВалют(Запрос, Запрос.Параметры.Ссылка);
ТекстЗапроса =
"ВЫБРАТЬ
| СчетФактураТовары.ВидЦенности КАК ВидЦенности,
| СчетФактураТовары.СтавкаНДС КАК СтавкаНДС,
| СУММА(ВЫБОР
| КОГДА &Корректировочный
| ТОГДА ВЫБОР
| КОГДА &НДССМежценовойРазницы
| ТОГДА &КоэффициентПересчетаВВалютуРегл * СчетФактураТовары.МежценоваяРазницаУвеличение
| ИНАЧЕ
| &КоэффициентПересчетаВВалютуРегл * СчетФактураТовары.СуммаУвеличение
| КОНЕЦ
| КОГДА &НДССМежценовойРазницы
| ТОГДА &КоэффициентПересчетаВВалютуРегл * СчетФактураТовары.МежценоваяРазница
| КОГДА &НачислениеНДСПриОтгрузке
| ТОГДА СчетФактураТовары.СуммаРегл + СчетФактураТовары.СуммаНДСРегл
| ИНАЧЕ &КоэффициентПересчетаВВалютуРегл * СчетФактураТовары.Сумма
| КОНЕЦ) КАК Сумма,
| СУММА(ВЫБОР
| КОГДА &Корректировочный
| ТОГДА &КоэффициентПересчетаВВалютуРегл * СчетФактураТовары.СуммаНДСУвеличение
| КОГДА &НачислениеНДСПриОтгрузке
| ТОГДА СчетФактураТовары.СуммаНДСРегл
| ИНАЧЕ &КоэффициентПересчетаВВалютуРегл * СчетФактураТовары.СуммаНДС
| КОНЕЦ) КАК СуммаНДС,
| СУММА(ВЫБОР
| КОГДА &НДССМежценовойРазницы
| ТОГДА &КоэффициентПересчетаВВалютуРегл * СчетФактураТовары.МежценоваяРазницаУменьшение
| ИНАЧЕ &КоэффициентПересчетаВВалютуРегл * СчетФактураТовары.СуммаУменьшение
| КОНЕЦ) КАК СуммаУменьшение,
| СУММА(&КоэффициентПересчетаВВалютуРегл * СчетФактураТовары.СуммаНДСУменьшение) КАК СуммаНДСУменьшение,
| ВЫБОР
| КОГДА СчетФактураТовары.ТипЗапасов В (&ТипыЗапасовСобственные)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК Комиссия,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА ЕСТЬNULL(СчетФактураТовары.СчетФактураОснование.Дата, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ &Период
| КОНЕЦ КАК ПериодКорректировки,
| СчетФактураТовары.СчетФактураСОсобымОтражением КАК СчетФактураСОсобымОтражением
|ПОМЕСТИТЬ ВтТаблицаКорректировки
|ИЗ
| ВТТаблицаТоваров КАК СчетФактураТовары
|
|СГРУППИРОВАТЬ ПО
| СчетФактураТовары.ВидЦенности,
| СчетФактураТовары.СтавкаНДС,
| ВЫБОР
| КОГДА СчетФактураТовары.ТипЗапасов В (&ТипыЗапасовСобственные)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА ЕСТЬNULL(СчетФактураТовары.СчетФактураОснование.Дата, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ &Период
| КОНЕЦ,
| СчетФактураТовары.СчетФактураСОсобымОтражением
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтТаблицаПодтвержденияСтавки0(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтТаблицаПодтвержденияСтавки0";
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВТТаблицаТоваров", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаТоваров(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| МАКСИМУМ(ВложенныйЗапрос.ДокументРеализации) КАК ДокументРеализации,
| МАКСИМУМ(ВложенныйЗапрос.Состояние) КАК Состояние,
| МАКСИМУМ(ВложенныйЗапрос.ДатаПодтверждения) КАК ДатаПодтверждения
|ПОМЕСТИТЬ ВтТаблицаПодтвержденияСтавки0
|ИЗ
| (ВЫБРАТЬ
| НДССостояниеРеализации0.ДокументРеализации КАК ДокументРеализации,
| НДССостояниеРеализации0.Состояние КАК Состояние,
| НДССостояниеРеализации0.ДатаПодтверждения КАК ДатаПодтверждения
| ИЗ
| ВТТаблицаТоваров КАК СчетФактураТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ДокументыОснования
| ПО
| СчетФактураТовары.ИсходныйСчетФактура = ДокументыОснования.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| РегистрСведений.НДССостояниеРеализации0 КАК НДССостояниеРеализации0
| ПО
| ДокументыОснования.ДокументОснование = НДССостояниеРеализации0.ДокументРеализации
| ГДЕ
| &НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| НДССостояниеРеализации0.ДокументРеализации,
| НДССостояниеРеализации0.Состояние,
| НДССостояниеРеализации0.ДатаПодтверждения
| ИЗ
| РегистрСведений.НДССостояниеРеализации0 КАК НДССостояниеРеализации0
| ГДЕ
| &НачислениеНДСПриОтгрузке И НЕ &Исправление И НЕ &Корректировочный
| И НДССостояниеРеализации0.ДокументРеализации = &ДокументОснование
| И &НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров))) КАК ВложенныйЗапрос
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтНДСЗаписиКнигиПродажДокументаОснования(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтНДСЗаписиКнигиПродажДокументаОснования";
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВТДокументыОснования", ТекстыЗапроса) Тогда
ТекстЗапросаВтДокументыОснования(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаКорректировки", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаКорректировки(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаПодтвержденияСтавки0", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаПодтвержденияСтавки0(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапросаНДСЗаписиКнигиПродажДокументаОснования =
"ВЫБРАТЬ ПЕРВЫЕ 1
| НДСЗаписиКнигиПродаж.Период,
| НДСЗаписиКнигиПродаж.Организация,
| НДСЗаписиКнигиПродаж.Покупатель,
| НДСЗаписиКнигиПродаж.СчетФактура,
| НДСЗаписиКнигиПродаж.ВидЦенности,
| НДСЗаписиКнигиПродаж.СтавкаНДС,
| НДСЗаписиКнигиПродаж.ДатаОплаты,
| НДСЗаписиКнигиПродаж.ДокументОплаты,
| НДСЗаписиКнигиПродаж.Событие,
| НДСЗаписиКнигиПродаж.ДатаСобытия,
| НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста,
| НДСЗаписиКнигиПродаж.КорректируемыйПериод,
| НДСЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста,
| НДСЗаписиКнигиПродаж.ДоговорКонтрагента,
| НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура,
| НДСЗаписиКнигиПродаж.Исправление,
| НДСЗаписиКнигиПродаж.ДатаСчетаФактурыКомиссионера
|ПОМЕСТИТЬ ВтНДСЗаписиКнигиПродажДокументаОснования
|ИЗ
| РегистрНакопления.НДСЗаписиКнигиПродаж КАК НДСЗаписиКнигиПродаж
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументыОснования КАК ДокументыОснования
| ПО НДСЗаписиКнигиПродаж.Регистратор = ДокументыОснования.ДокументОснование
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ЕСТЬNULL(ПодтверждениеСтавки0.ДатаПодтверждения, &Период),
| &Организация,
| &Контрагент,
| ВЫБОР
| КОГДА &НачислениеНДСПриОтгрузке
| И НЕ &Корректировочный
| ТОГДА &ДокументОтгрузки
| КОГДА &Исправление
| ТОГДА &СчетФактураОснование
| КОГДА &ВозвратПоЭкспорту
| ТОГДА ПодтверждениеСтавки0.ДокументРеализации
| ИНАЧЕ
| &Ссылка
| КОНЕЦ,
| ВЫБОР
| КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.РеализацияРаботУслугНаЭкспорт)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.УслугиНеНаТерриторииРФ)
| ИНАЧЕ
| ТаблицаДанных.ВидЦенности
| КОНЕЦ КАК ВидЦенности,
| ТаблицаДанных.СтавкаНДС,
| NULL,
| NULL,
| ВЫБОР КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| КОГДА &НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт))
| И ТаблицаДанных.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.ПодтвержденаСтавка0)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.Реализация)
| КОНЕЦ КАК Событие,
| ЕСТЬNULL(ПодтверждениеСтавки0.ДатаПодтверждения, &Период),
| ВЫБОР
| КОГДА &Исправление
| И НАЧАЛОПЕРИОДА(ЕСТЬNULL(ПодтверждениеСтавки0.ДатаПодтверждения,ТаблицаДанных.ПериодКорректировки), КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(ЕСТЬNULL(ПодтверждениеСтавки0.ДатаПодтверждения,&Период), КВАРТАЛ)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА &Исправление
| И НАЧАЛОПЕРИОДА(ЕСТЬNULL(ПодтверждениеСтавки0.ДатаПодтверждения,ТаблицаДанных.ПериодКорректировки), КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(ЕСТЬNULL(ПодтверждениеСтавки0.ДатаПодтверждения,&Период), КВАРТАЛ)
| ТОГДА
| ТаблицаДанных.ПериодКорректировки
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ,
| ЛОЖЬ,
| NULL,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &Ссылка
| КОНЕЦ,
| (&Исправление ИЛИ &ВозвратПоЭкспорту),
| NULL
|ИЗ
| ВтТаблицаКорректировки КАК ТаблицаДанных
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаПодтвержденияСтавки0 КАК ПодтверждениеСтавки0
| ПО ПодтверждениеСтавки0.Состояние = ЗНАЧЕНИЕ(Перечисление.НДССостоянияРеализация0.ПодтвержденаРеализация0)
|ГДЕ
| ТаблицаДанных.Сумма + ТаблицаДанных.СуммаУменьшение > 0
| И НЕ ТаблицаДанных.Комиссия
| И &НачислениеНДСПриОтгрузке
| И &Организация <> ЗНАЧЕНИЕ(Справочник.Организации.УправленческаяОрганизация)
| И (НЕ &НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт))
| ИЛИ ТаблицаДанных.СтавкаНДС <> ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0)
| ИЛИ НЕ ПодтверждениеСтавки0.Состояние ЕСТЬ NULL)
| И НЕ ТаблицаДанных.СчетФактураСОсобымОтражением";
ТекстыЗапроса.Добавить(ТекстЗапросаНДСЗаписиКнигиПродажДокументаОснования, ИмяРегистра);
Возврат ТекстЗапросаНДСЗаписиКнигиПродажДокументаОснования;
КонецФункции
Функция ТекстЗапросаВтТаблицаПокупатели(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтТаблицаПокупатели";
ТекстЗапроса =
"ВЫБРАТЬ
| Покупатели.Покупатель КАК Покупатель,
| Покупатели.ДокументОснование КАК ДокументОснование,
| Покупатели.НомерСтроки КАК НомерСтроки,
| Покупатели.НомерСчетаФактуры КАК НомерСчетаФактуры,
| Покупатели.КПППокупателя КАК КПППокупателя,
| Покупатели.ИННПокупателя КАК ИННПокупателя
|ПОМЕСТИТЬ ВтТаблицаПокупатели
|ИЗ
| Документ.СчетФактураВыданный.Покупатели КАК Покупатели
|ГДЕ
| Покупатели.Ссылка = &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтТаблицаСуммДокументов(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтТаблицаСуммДокументов";
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеОснованийСчетовФактур.ТипСчетаФактуры КАК ТипСчетаФактуры,
| ДанныеОснованийСчетовФактур.Организация КАК Организация,
| ДанныеОснованийСчетовФактур.Контрагент КАК Контрагент,
| ДанныеОснованийСчетовФактур.ВидЦенности КАК ВидЦенностиПродажи,
| ДанныеОснованийСчетовФактур.СтавкаНДС КАК СтавкаНДС,
| СУММА(ДанныеОснованийСчетовФактур.БазаНДСРегл) КАК СуммаБезНДС,
| СУММА(ДанныеОснованийСчетовФактур.СуммаНДСРегл) КАК СуммаНДС,
| СУММА(ВЫБОР
| КОГДА &ВалютаСчетаФактуры = ДанныеОснованийСчетовФактур.Валюта
| ТОГДА ДанныеОснованийСчетовФактур.СуммаБезНДС + ДанныеОснованийСчетовФактур.СуммаНДС
| ИНАЧЕ ДанныеОснованийСчетовФактур.БазаНДСРегл + ДанныеОснованийСчетовФактур.СуммаНДСРегл
| КОНЕЦ) КАК СуммаПоСчетуФактуреЖурнал,
| СУММА(ВЫБОР
| КОГДА &ВалютаСчетаФактуры = ДанныеОснованийСчетовФактур.Валюта
| ТОГДА ДанныеОснованийСчетовФактур.СуммаНДС
| ИНАЧЕ ДанныеОснованийСчетовФактур.СуммаНДСРегл
| КОНЕЦ) КАК СуммаНДСЖурнал,
| ДанныеОснованийСчетовФактур.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеОснованийСчетовФактур.ДатаСчетаФактурыКомиссионера КАК ДатаСчетаФактурыКомиссионера,
| ДанныеОснованийСчетовФактур.НомерСчетаФактурыКомиссионера КАК НомерСчетаФактурыКомиссионера,
| ДанныеОснованийСчетовФактур.ПокупательКомиссионногоТовара КАК Покупатель,
| ДанныеОснованийСчетовФактур.СчетФактураВыданныйКомиссионером КАК СчетФактураВыданныйКомиссионером,
| ДанныеОснованийСчетовФактур.ТипЗапасов КАК ТипЗапасов
|ПОМЕСТИТЬ ВтТаблицаСуммДокументов
|ИЗ
| РегистрСведений.ДанныеОснованийСчетовФактур КАК ДанныеОснованийСчетовФактур
|ГДЕ
| ДанныеОснованийСчетовФактур.Регистратор = &ДокументОснование
| И ТИПЗНАЧЕНИЯ(ДанныеОснованийСчетовФактур.Регистратор) = ТИП(Документ.ОтчетКомиссионера)
| И ДанныеОснованийСчетовФактур.Организация = &Организация
| И НЕ ДанныеОснованийСчетовФактур.ИсправлениеОшибок
|
|СГРУППИРОВАТЬ ПО
| ДанныеОснованийСчетовФактур.ТипСчетаФактуры,
| ДанныеОснованийСчетовФактур.Организация,
| ДанныеОснованийСчетовФактур.Контрагент,
| ДанныеОснованийСчетовФактур.ВидЦенности,
| ДанныеОснованийСчетовФактур.СтавкаНДС,
| ДанныеОснованийСчетовФактур.НалогообложениеНДС,
| ДанныеОснованийСчетовФактур.ДатаСчетаФактурыКомиссионера,
| ДанныеОснованийСчетовФактур.НомерСчетаФактурыКомиссионера,
| ДанныеОснованийСчетовФактур.ПокупательКомиссионногоТовара,
| ДанныеОснованийСчетовФактур.СчетФактураВыданныйКомиссионером,
| ДанныеОснованийСчетовФактур.ТипЗапасов
|
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаНДСЗаписиКнигиПокупок(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "НДСЗаписиКнигиПокупок";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
УстановитьПараметрЗапросаСчетФактураПредыдущееИсправление(Запрос);
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтСчетаФактурыИсправления", ТекстыЗапроса) Тогда
ТекстЗапросаВтСчетаФактурыИсправления(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаКорректировки", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаКорректировки(Запрос, ТекстыЗапроса);
КонецЕсли;
#Область ТекстСторноИсправление
ТекстЗапросаСторноИсправление = "
|
|ВЫБРАТЬ
| &Период КАК Период,
| НДСЗаписиКнигиПокупок.Организация КАК Организация,
| НДСЗаписиКнигиПокупок.Поставщик КАК Поставщик,
| НДСЗаписиКнигиПокупок.СчетФактура КАК СчетФактура,
| НДСЗаписиКнигиПокупок.ВидЦенности КАК ВидЦенности,
| НДСЗаписиКнигиПокупок.СтавкаНДС КАК СтавкаНДС,
| НДСЗаписиКнигиПокупок.СчетУчетаНДС КАК СчетУчетаНДС,
| НДСЗаписиКнигиПокупок.Событие КАК Событие,
| &Период КАК ДатаСобытия,
| &Исправление КАК Исправление,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.ЗаписьДополнительногоЛиста
| ТОГДА ИСТИНА
| КОГДА НАЧАЛОПЕРИОДА(НДСЗаписиКнигиПокупок.Период,КВАРТАЛ) < НАЧАЛОПЕРИОДА(&Период, КВАРТАЛ)
| ТОГДА ИСТИНА
| КОНЕЦ КАК ЗаписьДополнительногоЛиста,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПокупок.КорректируемыйПериод <> ДАТАВРЕМЯ(1,1,1)
| ТОГДА НДСЗаписиКнигиПокупок.КорректируемыйПериод
| КОГДА НАЧАЛОПЕРИОДА(НДСЗаписиКнигиПокупок.Период,КВАРТАЛ) < НАЧАЛОПЕРИОДА(&Период,КВАРТАЛ)
| ТОГДА НДСЗаписиКнигиПокупок.Период
| КОНЕЦ КАК КорректируемыйПериод,
| НДСЗаписиКнигиПокупок.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| -НДСЗаписиКнигиПокупок.СуммаБезНДСОборот КАК СуммаБезНДС,
| -НДСЗаписиКнигиПокупок.НДСОборот КАК НДС,
| &КодВидаОперацииНаУменьшение КАК КодВидаОперации
|ИЗ
| РегистрНакопления.НДСЗаписиКнигиПокупок.Обороты(
| ,
| ,
| Регистратор,
| Организация В (&Организация, &Контрагент)
| И СчетФактура В (ВЫБРАТЬ Т.СчетФактура ИЗ ВтСчетаФактурыИсправления КАК Т)
| И ИсправленныйСчетФактура = &СчетФактураПредыдущееИсправление) КАК НДСЗаписиКнигиПокупок
|
|ГДЕ
| &Исправление
| И НДСЗаписиКнигиПокупок.Регистратор <> &Ссылка
| И НДСЗаписиКнигиПокупок.Регистратор ССЫЛКА Документ.СчетФактураВыданный
| И (НДСЗаписиКнигиПокупок.СуммаБезНДСОборот > 0
| ИЛИ НДСЗаписиКнигиПокупок.НДСОборот > 0)
|";
#КонецОбласти
#Область ТекстКорректировка
ТекстЗапросаКорректировка = "
|
|ВЫБРАТЬ
| &Период КАК Период,
| &Организация КАК Организация,
| &Контрагент КАК Поставщик,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &СчетФактураОснование
| ИНАЧЕ
| &Ссылка
| КОНЕЦ КАК СчетФактура,
| ТаблицаДанных.ВидЦенности КАК ВидЦенности,
| ТаблицаДанных.СтавкаНДС КАК СтавкаНДС,
| NULL КАК СчетУчетаНДС,
| ВЫБОР КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПокупки.НалогИсчисляетПокупатель)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПокупки.ПредъявленНДСКВычету)
| КОНЕЦ КАК Событие,
| &Период КАК ДатаСобытия,
| ЛОЖЬ КАК ЗаписьДополнительногоЛиста,
| NULL КАК КорректируемыйПериод,
| &Исправление КАК Исправление,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &Ссылка
| КОНЕЦ КАК ИсправленныйСчетФактура,
| СУММА(ВЫБОР
| КОГДА &НДССМежценовойРазницы
| ТОГДА ТаблицаДанных.СуммаУменьшение
| ИНАЧЕ
| ТаблицаДанных.СуммаУменьшение - ТаблицаДанных.СуммаНДСУменьшение
| КОНЕЦ) КАК СуммаБезНДС,
| СУММА(ТаблицаДанных.СуммаНДСУменьшение) КАК НДС,
| &КодВидаОперацииНаУменьшение КАК КодВидаОперации
|ИЗ
| ВтТаблицаКорректировки КАК ТаблицаДанных
|
|ГДЕ
| &Корректировочный
| И (ТаблицаДанных.СуммаНДСУменьшение > 0
| ИЛИ &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя))
| И НЕ ТаблицаДанных.Комиссия
| И &Организация <> ЗНАЧЕНИЕ(Справочник.Организации.УправленческаяОрганизация)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаДанных.ВидЦенности,
| ТаблицаДанных.СтавкаНДС
|";
#КонецОбласти
ТекстЗапроса =
ТекстЗапросаСторноИсправление
+ " ОБЪЕДИНИТЬ ВСЕ " + ТекстЗапросаКорректировка;
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса
КонецФункции
Функция ТекстЗапросаТаблицаНДСЗаписиКнигиПродаж(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "НДСЗаписиКнигиПродаж";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
УстановитьПараметрЗапросаСчетФактураПредыдущееИсправление(Запрос);
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтСчетаФактурыИсправления", ТекстыЗапроса) Тогда
ТекстЗапросаВтСчетаФактурыИсправления(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаКорректировки", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаКорректировки(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтНДСЗаписиКнигиПродажДокументаОснования", ТекстыЗапроса) Тогда
ТекстЗапросаВтНДСЗаписиКнигиПродажДокументаОснования(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаПодтвержденияСтавки0", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаПодтвержденияСтавки0(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаПокупатели", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаПокупатели(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаСуммДокументов", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаСуммДокументов(Запрос, ТекстыЗапроса);
КонецЕсли;
#Область ТекстСторноИсправление
ТекстЗапросаСторноИсправление = "
|
|ВЫБРАТЬ
| &Период КАК Период,
| &Организация КАК Организация,
| НДСЗаписиКнигиПродаж.Покупатель КАК Покупатель,
| НДСЗаписиКнигиПродаж.СчетФактура КАК СчетФактура,
| НДСЗаписиКнигиПродаж.ВидЦенности КАК ВидЦенности,
| НДСЗаписиКнигиПродаж.СтавкаНДС КАК СтавкаНДС,
| НДСЗаписиКнигиПродаж.ДатаОплаты КАК ДатаОплаты,
| НДСЗаписиКнигиПродаж.ДокументОплаты КАК ДокументОплаты,
| НДСЗаписиКнигиПродаж.Событие КАК Событие,
| &Период КАК ДатаСобытия,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| ТОГДА ИСТИНА
| КОГДА НАЧАЛОПЕРИОДА(НДСЗаписиКнигиПродаж.Период,КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(&Период,КВАРТАЛ)
| ТОГДА ИСТИНА
| КОНЕЦ КАК ЗаписьДополнительногоЛиста,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.КорректируемыйПериод <> ДАТАВРЕМЯ(1,1,1)
| ТОГДА НДСЗаписиКнигиПродаж.КорректируемыйПериод
| КОГДА НАЧАЛОПЕРИОДА(НДСЗаписиКнигиПродаж.Период,КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(&Период,КВАРТАЛ)
| ТОГДА НДСЗаписиКнигиПродаж.Период
| КОНЕЦ КАК КорректируемыйПериод,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| ТОГДА ИСТИНА
| КОГДА НАЧАЛОПЕРИОДА(НДСЗаписиКнигиПродаж.Период,КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(&Период,КВАРТАЛ)
| ТОГДА ИСТИНА
| КОНЕЦ КАК СторнирующаяЗаписьДопЛиста,
| НДСЗаписиКнигиПродаж.ДоговорКонтрагента КАК ДоговорКонтрагента,
| НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| ИСТИНА КАК Исправление,
| НДСЗаписиКнигиПродаж.ДатаСчетаФактурыКомиссионера КАК ДатаСчетаФактурыКомиссионера,
| -СУММА(НДСЗаписиКнигиПродаж.СуммаБезНДС) КАК СуммаБезНДС,
| -СУММА(НДСЗаписиКнигиПродаж.НДС) КАК НДС,
| NULL КАК НомерДокументаОплаты,
| NULL КАК ДатаДокументаОплаты,
| -СУММА(НДСЗаписиКнигиПродаж.НДСУпр) КАК НДСУпр
|ИЗ
| РегистрНакопления.НДСЗаписиКнигиПродаж КАК НДСЗаписиКнигиПродаж
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаПодтвержденияСтавки0 КАК ПодтверждениеСтавки0
| ПО ПодтверждениеСтавки0.Состояние = ЗНАЧЕНИЕ(Перечисление.НДССостоянияРеализация0.ПодтвержденаРеализация0)
|ГДЕ
| НДСЗаписиКнигиПродаж.Активность
| И Организация В (&Организация)
| И СчетФактура В (ВЫБРАТЬ Т.СчетФактура ИЗ ВтСчетаФактурыИсправления КАК Т)
| И ИсправленныйСчетФактура = &СчетФактураПредыдущееИсправление
| И &Исправление
| И НДСЗаписиКнигиПродаж.Регистратор <> &Ссылка
| И (ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.Регистратор ССЫЛКА Документ.ЗаписьКнигиПродаж
| И (ВЫРАЗИТЬ(НДСЗаписиКнигиПродаж.Регистратор КАК Документ.ЗаписьКнигиПродаж).ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПрочееНачислениеНДС))
| ТОГДА ЛОЖЬ
| КОГДА НДСЗаписиКнигиПродаж.Регистратор ССЫЛКА Документ.ЗаписьКнигиПродаж
| И ВЫРАЗИТЬ(НДСЗаписиКнигиПродаж.Регистратор КАК Документ.ЗаписьКнигиПродаж).ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПрочееНачислениеНДС)
| ТОГДА ИСТИНА
| КОГДА НДСЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.Реализация)
| ТОГДА ИСТИНА
| КОГДА НДСЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.ПодтвержденаСтавка0)
| ТОГДА ИСТИНА
| КОГДА НДСЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| ТОГДА ИСТИНА
| КОГДА НДСЗаписиКнигиПродаж.Событие = ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.ВосстановлениеНДС)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ)
| И ПодтверждениеСтавки0.ДатаПодтверждения ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| &Период,
| &Организация,
| НДСЗаписиКнигиПродаж.Покупатель,
| НДСЗаписиКнигиПродаж.СчетФактура,
| НДСЗаписиКнигиПродаж.ВидЦенности,
| НДСЗаписиКнигиПродаж.СтавкаНДС,
| НДСЗаписиКнигиПродаж.ДатаОплаты,
| НДСЗаписиКнигиПродаж.ДокументОплаты,
| НДСЗаписиКнигиПродаж.Событие,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста
| ТОГДА ИСТИНА
| КОГДА НАЧАЛОПЕРИОДА(НДСЗаписиКнигиПродаж.Период,КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(&Период,КВАРТАЛ)
| ТОГДА ИСТИНА
| КОНЕЦ,
| ВЫБОР
| КОГДА НДСЗаписиКнигиПродаж.КорректируемыйПериод <> ДАТАВРЕМЯ(1,1,1)
| ТОГДА НДСЗаписиКнигиПродаж.КорректируемыйПериод
| КОГДА НАЧАЛОПЕРИОДА(НДСЗаписиКнигиПродаж.Период,КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(&Период,КВАРТАЛ)
| ТОГДА НДСЗаписиКнигиПродаж.Период
| КОНЕЦ,
| НДСЗаписиКнигиПродаж.ДоговорКонтрагента,
| НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура,
| НДСЗаписиКнигиПродаж.ДатаСчетаФактурыКомиссионера
|
|ИМЕЮЩИЕ
| СУММА(НДСЗаписиКнигиПродаж.СуммаБезНДС) > 0
| ИЛИ СУММА(НДСЗаписиКнигиПродаж.НДС) > 0
|";
#КонецОбласти
#Область ТекстКорректировка
ТекстЗапросаКорректировка = "
|
|ВЫБРАТЬ
| &Период,
| &Организация,
| ВЫБОР
| КОГДА &РеализацияЧерезКомиссионера
| ТОГДА Покупатели.Покупатель
| ИНАЧЕ
| &Контрагент
| КОНЕЦ,
| ВЫБОР
| КОГДА &НачислениеНДСПриОтгрузке
| И НЕ &Корректировочный
| ТОГДА &ДокументОтгрузки
| КОГДА &Исправление
| ТОГДА &СчетФактураОснование
| КОГДА &ВозвратПоЭкспорту
| ТОГДА ДанныеРеализации.ДокументРеализации
| ИНАЧЕ
| &Ссылка
| КОНЕЦ КАК СчетФактура,
| ВЫБОР
| КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.РеализацияРаботУслугНаЭкспорт)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.УслугиНеНаТерриторииРФ)
| ИНАЧЕ
| ТаблицаДанных.ВидЦенности
| КОНЕЦ КАК ВидЦенности,
| ТаблицаДанных.СтавкаНДС,
| NULL,
| NULL,
| ВЫБОР КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.НалогИсчисляетПокупатель)
| КОГДА &НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт))
| И ТаблицаДанных.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.ПодтвержденаСтавка0)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.Реализация)
| КОНЕЦ КАК Событие,
| &Период,
| ВЫБОР
| КОГДА &Исправление
| И НАЧАЛОПЕРИОДА(ТаблицаДанных.ПериодКорректировки, КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(&Период, КВАРТАЛ)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА &Исправление
| И НАЧАЛОПЕРИОДА(ТаблицаДанных.ПериодКорректировки, КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(&Период, КВАРТАЛ)
| ТОГДА
| ТаблицаДанных.ПериодКорректировки
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ,
| ЛОЖЬ,
| NULL,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &Ссылка
| КОНЕЦ,
| (&Исправление ИЛИ &ВозвратПоЭкспорту),
| NULL,
| СУММА(ВЫБОР
| КОГДА &ВозвратПоЭкспорту
| ТОГДА -ТаблицаДанных.СуммаУменьшение
| КОГДА &НДССМежценовойРазницы
| ТОГДА ТаблицаДанных.Сумма
| ИНАЧЕ
| ТаблицаДанных.Сумма - ТаблицаДанных.СуммаНДС
| КОНЕЦ) КАК СуммаБезНДС,
| СУММА(ТаблицаДанных.СуммаНДС) КАК НДС,
| NULL,
| NULL,
| СУММА(ТаблицаДанных.СуммаНДС * &КоэффициентПересчетаВВалютуУпрРегл) КАК НДСУпр
|ИЗ
| ВтТаблицаКорректировки КАК ТаблицаДанных
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаПодтвержденияСтавки0 КАК ПодтверждениеСтавки0
| ПО ПодтверждениеСтавки0.Состояние = ЗНАЧЕНИЕ(Перечисление.НДССостоянияРеализация0.ПодтвержденаРеализация0)
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаПодтвержденияСтавки0 КАК ДанныеРеализации
| ПО ИСТИНА
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаПокупатели КАК Покупатели
| ПО ИСТИНА
|ГДЕ
| ТаблицаДанных.Сумма + ТаблицаДанных.СуммаУменьшение > 0
| И НЕ ТаблицаДанных.Комиссия
| И (&Корректировочный ИЛИ &Исправление ИЛИ &НДССМежценовойРазницы ИЛИ &НачислениеНДСПриОтгрузке)
| И &Организация <> ЗНАЧЕНИЕ(Справочник.Организации.УправленческаяОрганизация)
| И (НЕ &НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт))
| ИЛИ ТаблицаДанных.СтавкаНДС <> ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0)
| ИЛИ НЕ ПодтверждениеСтавки0.Состояние ЕСТЬ NULL)
| И НЕ ТаблицаДанных.СчетФактураСОсобымОтражением
| И ПодтверждениеСтавки0.ДатаПодтверждения ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| &Период,
| ВЫБОР
| КОГДА &РеализацияЧерезКомиссионера
| ТОГДА Покупатели.Покупатель
| ИНАЧЕ
| &Контрагент
| КОНЕЦ,
| ВЫБОР
| КОГДА &НачислениеНДСПриОтгрузке
| И НЕ &Корректировочный
| ТОГДА &ДокументОтгрузки
| КОГДА &Исправление
| ТОГДА &СчетФактураОснование
| КОГДА &ВозвратПоЭкспорту
| ТОГДА ДанныеРеализации.ДокументРеализации
| ИНАЧЕ
| &Ссылка
| КОНЕЦ,
| ВЫБОР
| КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.РеализацияРаботУслугНаЭкспорт)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.УслугиНеНаТерриторииРФ)
| ИНАЧЕ
| ТаблицаДанных.ВидЦенности
| КОНЕЦ,
| ТаблицаДанных.СтавкаНДС,
| ВЫБОР
| КОГДА &Исправление
| И НАЧАЛОПЕРИОДА(ТаблицаДанных.ПериодКорректировки, КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(&Период, КВАРТАЛ)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ,
| ВЫБОР
| КОГДА &Исправление
| И НАЧАЛОПЕРИОДА(ТаблицаДанных.ПериодКорректировки, КВАРТАЛ)
| < НАЧАЛОПЕРИОДА(&Период, КВАРТАЛ)
| ТОГДА
| ТаблицаДанных.ПериодКорректировки
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ
|
|ИМЕЮЩИЕ
| СУММА(ТаблицаДанных.Сумма) <> 0
| ИЛИ СУММА(ТаблицаДанных.СуммаНДС) <> 0
| ИЛИ &ВозвратПоЭкспорту
|";
#КонецОбласти
#Область ТекстДатаИНомерДокументаОплаты
ТекстЗапросаДатаИНомерДокументаОплаты = "
|
|ВЫБРАТЬ
| НДСЗаписиКнигиПродаж.Период КАК Период,
| НДСЗаписиКнигиПродаж.Организация КАК Организация,
| НДСЗаписиКнигиПродаж.Покупатель КАК Покупатель,
| НДСЗаписиКнигиПродаж.СчетФактура КАК СчетФактура,
| НДСЗаписиКнигиПродаж.ВидЦенности КАК ВидЦенности,
| НДСЗаписиКнигиПродаж.СтавкаНДС КАК СтавкаНДС,
| НДСЗаписиКнигиПродаж.ДатаОплаты КАК ДатаОплаты,
| НДСЗаписиКнигиПродаж.ДокументОплаты КАК ДокументОплаты,
| НДСЗаписиКнигиПродаж.Событие КАК Событие,
| НДСЗаписиКнигиПродаж.ДатаСобытия КАК ДатаСобытия,
| НДСЗаписиКнигиПродаж.ЗаписьДополнительногоЛиста,
| НДСЗаписиКнигиПродаж.КорректируемыйПериод,
| НДСЗаписиКнигиПродаж.СторнирующаяЗаписьДопЛиста,
| НДСЗаписиКнигиПродаж.ДоговорКонтрагента КАК ДоговорКонтрагента,
| НДСЗаписиКнигиПродаж.ИсправленныйСчетФактура КАК ИсправленныйСчетФактура,
| НДСЗаписиКнигиПродаж.Исправление,
| НДСЗаписиКнигиПродаж.ДатаСчетаФактурыКомиссионера КАК ДатаСчетаФактурыКомиссионера,
| 0 КАК СуммаБезНДС,
| 0 КАК НДС,
| ПлатежноРасчетныеДокументы.НомерПлатежноРасчетногоДокумента,
| ПлатежноРасчетныеДокументы.ДатаПлатежноРасчетногоДокумента,
| 0 КАК НДСУпр
|ИЗ
| ВтНДСЗаписиКнигиПродажДокументаОснования КАК НДСЗаписиКнигиПродаж
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.СчетФактураВыданный.ПлатежноРасчетныеДокументы КАК ПлатежноРасчетныеДокументы
| ПО
| ПлатежноРасчетныеДокументы.Ссылка = &Ссылка";
#КонецОбласти
#Область ТекстЗапросаВыставляемыйКомиссионеру
ТекстЗапросаВыставляемыйКомиссионеру = "
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &Период
| ИНАЧЕ &ДатаКомиссионера
| КОНЕЦ КАК Период,
| &Организация КАК Организация,
| Покупатели.Покупатель КАК Покупатель,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &СчетФактураОснование
| ИНАЧЕ Покупатели.Ссылка
| КОНЕЦ КАК СчетФактура,
| ТаблицаСуммДокументов.ВидЦенностиПродажи КАК ВидЦенности,
| ТаблицаСуммДокументов.СтавкаНДС.ПеречислениеСтавкаНДС КАК СтавкаНДС,
| NULL КАК ДатаОплаты,
| NULL КАК ДокументОплаты,
| ЗНАЧЕНИЕ(Перечисление.СобытияПоНДСПродажи.Реализация) КАК Событие,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &Период
| ИНАЧЕ &ДатаКомиссионера
| КОНЕЦ КАК ДатаСобытия,
| ЛОЖЬ КАК ЗаписьДополнительногоЛиста,
| NULL КАК КорректируемыйПериод,
| ЛОЖЬ КАК СторнирующаяЗаписьДопЛиста,
| NULL КАК ДоговорКонтрагента,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА Покупатели.Ссылка
| КОНЕЦ КАК ИсправленныйСчетФактура,
| &Исправление КАК Исправление,
| ТаблицаСуммДокументов.ДатаСчетаФактурыКомиссионера,
| СУММА(ТаблицаСуммДокументов.СуммаБезНДС) КАК СуммаБезНДС,
| СУММА(ТаблицаСуммДокументов.СуммаНДС) КАК НДС,
| NULL КАК НомерДокументаОплаты,
| NULL КАК ДатаДокументаОплаты,
| 0 КАК НДСУпр
|ИЗ
| Документ.СчетФактураВыданный.Покупатели КАК Покупатели
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ВтТаблицаСуммДокументов КАК ТаблицаСуммДокументов
| ПО
| Покупатели.Покупатель = ТаблицаСуммДокументов.Покупатель
| И (Покупатели.НомерСчетаФактуры = ТаблицаСуммДокументов.НомерСчетаФактурыКомиссионера)
| И (НАЧАЛОПЕРИОДА(ТаблицаСуммДокументов.ДатаСчетаФактурыКомиссионера, ДЕНЬ) = НАЧАЛОПЕРИОДА(&ДатаКомиссионера, ДЕНЬ)
| ИЛИ НАЧАЛОПЕРИОДА(ТаблицаСуммДокументов.ДатаСчетаФактурыКомиссионера, ДЕНЬ) = НАЧАЛОПЕРИОДА(&Период, ДЕНЬ)
| ИЛИ ТаблицаСуммДокументов.ДатаСчетаФактурыКомиссионера = ДАТАВРЕМЯ(1,1,1))
| И ТИПЗНАЧЕНИЯ(Покупатели.ДокументОснование) = ТИП(Документ.ОтчетКомиссионера)
|ГДЕ
| Покупатели.Ссылка = &Ссылка
| И ТаблицаСуммДокументов.ТипЗапасов В (&ТипыЗапасовСобственные)
| И &Организация <> ЗНАЧЕНИЕ(Справочник.Организации.УправленческаяОрганизация)
| И ТаблицаСуммДокументов.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЛьготноеНалогообложениеНДСНаУСН),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС))
|
|СГРУППИРОВАТЬ ПО
| Покупатели.Ссылка,
| ТаблицаСуммДокументов.ВидЦенностиПродажи,
| Покупатели.Покупатель,
| ТаблицаСуммДокументов.СтавкаНДС.ПеречислениеСтавкаНДС,
| ТаблицаСуммДокументов.ДатаСчетаФактурыКомиссионера";
#КонецОбласти
ТекстЗапроса = ТекстЗапросаСторноИсправление
+ " ОБЪЕДИНИТЬ ВСЕ " + ТекстЗапросаКорректировка
+ " ОБЪЕДИНИТЬ ВСЕ " + ТекстЗапросаДатаИНомерДокументаОплаты
+ " ОБЪЕДИНИТЬ ВСЕ " + ТекстЗапросаВыставляемыйКомиссионеру;
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса
КонецФункции
Функция СчетФактураПредыдущееИсправление(СчетФактураОснование, НомерИсправления)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СчетФактура.Ссылка КАК ИсправленныйСчетФактура,
| СчетФактура.НомерИсправления КАК НомерИсправления
|ИЗ
| Документ.СчетФактураВыданный КАК СчетФактура
|ГДЕ
| СчетФактура.СчетФактураОснование = &СчетФактураОснование
| И СчетФактура.Проведен
| И СчетФактура.Исправление
| И СчетФактура.НомерИсправления <> &НомерИсправления
|";
Запрос.УстановитьПараметр("СчетФактураОснование", СчетФактураОснование);
Запрос.УстановитьПараметр("НомерИсправления", НомерИсправления);
ПредыдущийНомер = 0;
ИсправленныйСчетФактура = Неопределено;
НомерИсправленияЧислом = ?(ЗначениеЗаполнено(НомерИсправления),Число(НомерИсправления),1);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НомерИзВыборки = Число(Выборка.НомерИсправления);
Если НомерИзВыборки < НомерИсправленияЧислом
И НомерИзВыборки > ПредыдущийНомер Тогда
ПредыдущийНомер = НомерИзВыборки;
ИсправленныйСчетФактура = Выборка.ИсправленныйСчетФактура;
КонецЕсли;
КонецЦикла;
Возврат ИсправленныйСчетФактура
КонецФункции
Функция ДатаИсходногоДокументаОснования(СчетФактура)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(МИНИМУМ(ЕСТЬNULL(ДанныеПервичныхДокументов.ДатаРегистратора, СчетФактураВыданныйТовары.Ссылка.Дата)), ДАТАВРЕМЯ(1,1,1,0,0,0)) КАК ДатаИсходногоДокументаОснования
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК СчетФактураВыданныйТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
| ПО СчетФактураВыданныйТовары.ИсходныйСчетФактура = СчетФактураВыданныйДокументыОснования.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
| ПО (ДанныеПервичныхДокументов.Организация = СчетФактураВыданныйТовары.Ссылка.Организация)
| И (ДанныеПервичныхДокументов.Документ = СчетФактураВыданныйДокументыОснования.ДокументОснование)
|ГДЕ
| СчетФактураВыданныйТовары.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", СчетФактура);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДатаИсходногоДокументаОснования = Выборка.ДатаИсходногоДокументаОснования;
КонецЦикла;
Возврат ДатаИсходногоДокументаОснования
КонецФункции
Функция ТекстЗапросаВтТаблицаКорректировкиЗачетаАвансов(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтТаблицаКорректировкиЗачетаАвансов";
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| ЗачетыАвансовСчетамиФактурами.Ссылка КАК ИсправляемыйСчетФактура,
| ЗачетыАвансовСчетамиФактурами.ОбъектРасчетов КАК ОбъектРасчетов,
| ЗачетыАвансовСчетамиФактурами.РасчетныйДокумент КАК РасчетныйДокумент,
| СУММА(ЗачетыАвансовСчетамиФактурами.Сумма) КАК Сумма,
| СУММА(ЗачетыАвансовСчетамиФактурами.СуммаРегл) КАК СуммаРегл
|ПОМЕСТИТЬ втЗачтенныеАвансыИсправления
|ИЗ
| Документ.СчетФактураВыданный.ПлатежноРасчетныеДокументы КАК ЗачетыАвансовСчетамиФактурами
|ГДЕ
| ЗачетыАвансовСчетамиФактурами.Ссылка В (&ИсправляемыйСчетФактура)
| И ЗачетыАвансовСчетамиФактурами.Ссылка.Проведен
|
|СГРУППИРОВАТЬ ПО
| ЗачетыАвансовСчетамиФактурами.Ссылка,
| ЗачетыАвансовСчетамиФактурами.ОбъектРасчетов,
| ЗачетыАвансовСчетамиФактурами.РасчетныйДокумент
|;
|
|
|ВЫБРАТЬ
| СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка КАК Ссылка,
| СчетФактураВыданныйПлатежноРасчетныеДокументы.ОбъектРасчетов КАК ОбъектРасчетов,
| СчетФактураВыданныйПлатежноРасчетныеДокументы.РасчетныйДокумент КАК РасчетныйДокумент,
| СУММА(СчетФактураВыданныйПлатежноРасчетныеДокументы.Сумма) КАК Сумма,
| СУММА(СчетФактураВыданныйПлатежноРасчетныеДокументы.СуммаРегл) КАК СуммаРегл
|ПОМЕСТИТЬ втАвансыСчетаФактуры
|ИЗ
| Документ.СчетФактураВыданный.ПлатежноРасчетныеДокументы КАК СчетФактураВыданныйПлатежноРасчетныеДокументы
|ГДЕ
| СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка,
| СчетФактураВыданныйПлатежноРасчетныеДокументы.ОбъектРасчетов,
| СчетФактураВыданныйПлатежноРасчетныеДокументы.РасчетныйДокумент
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ЛОЖЬ КАК ЭтоРегистратор,
| СУММА(ТаблицаТовары.СуммаБезНДСВал) КАК Сумма,
| СУММА(Суммы.СуммаБезНДСРегл + Суммы.СуммаНДСРегл) КАК СуммаРегл
|ПОМЕСТИТЬ втСуммыСчетовФактур
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СуммыДокументовВВалютахУчета КАК Суммы
| ПО ТаблицаТовары.Ссылка = Суммы.Регистратор
| И ТаблицаТовары.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
|
|ГДЕ
| ТаблицаТовары.Ссылка В (&ИсправляемыйСчетФактура)
| И НЕ &Корректировочный
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ЛОЖЬ КАК ЭтоРегистратор,
| СУММА(ТаблицаТовары.СуммаБезНДСВал) КАК Сумма,
| СУММА(Суммы.СуммаБезНДСРегл + Суммы.СуммаНДСРегл) КАК СуммаРегл
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СуммыДокументовВВалютахУчета КАК Суммы
| ПО ТаблицаТовары.Ссылка = Суммы.Регистратор
| И ТаблицаТовары.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
|ГДЕ
| ТаблицаТовары.Ссылка В (&ИсходныеСчетаФактуры)
| И &Корректировочный
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ИСТИНА КАК ЭтоРегистратор,
| СУММА(ТаблицаТовары.СуммаБезНДСВалУвеличение
| - ТаблицаТовары.СуммаБезНДСВалУменьшение
| + ТаблицаТовары.СуммаБезНДСВал
| * ВЫБОР
| КОГДА &Корректировочный
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ) КАК Сумма,
| СУММА(Суммы.СуммаБезНДСРегл + Суммы.СуммаНДСРегл) КАК СуммаРегл
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтСуммыДокументовВВалютахУчета КАК Суммы
| ПО ТаблицаТовары.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
|ГДЕ
| ТаблицаТовары.Ссылка В (&Ссылка)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка
|;
|
|
|ВЫБРАТЬ
| втЗачтенныеАвансыИсправления.Ссылка КАК Ссылка,
| втЗачтенныеАвансыИсправления.ИсправляемыйСчетФактура КАК ИсправляемыйСчетФактура,
| СУММА(втЗачтенныеАвансыИсправления.Сумма) КАК Сумма,
| СУММА(втЗачтенныеАвансыИсправления.СуммаРегл) КАК СуммаРегл
|ПОМЕСТИТЬ втЗачтенныеАвансыИсправленияПоДокументу
|ИЗ
| втЗачтенныеАвансыИсправления КАК втЗачтенныеАвансыИсправления
|
|СГРУППИРОВАТЬ ПО
| втЗачтенныеАвансыИсправления.Ссылка,
| втЗачтенныеАвансыИсправления.ИсправляемыйСчетФактура
|;
|
|
|ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| ЗачетыАвансовСчетамиФактурами.Регистратор КАК ИсходныйСчетФактура,
| СУММА(ЗачетыАвансовСчетамиФактурами.Сумма) КАК Сумма,
| СУММА(ЗачетыАвансовСчетамиФактурами.СуммаРегл) КАК СуммаРегл
|ПОМЕСТИТЬ втЗачтенныеАвансыИсходныхСчетовФактурПоДокументу
|ИЗ
| РегистрНакопления.ЗачетыАвансовСчетамиФактурами КАК ЗачетыАвансовСчетамиФактурами
|ГДЕ
| ЗачетыАвансовСчетамиФактурами.Регистратор В (&ИсходныеСчетаФактуры)
| И &Корректировочный
| И ЗачетыАвансовСчетамиФактурами.Активность
|
|СГРУППИРОВАТЬ ПО
| ЗачетыАвансовСчетамиФактурами.Регистратор
|;
|
|
|ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| СУММА(втАвансыСчетаФактуры.Сумма) КАК Сумма,
| СУММА(втАвансыСчетаФактуры.СуммаРегл) КАК СуммаРегл
|ПОМЕСТИТЬ втАвансыСчетаФактурыПоДокументу
|ИЗ
| втАвансыСчетаФактуры КАК втАвансыСчетаФактуры
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ВложенныйЗапрос.ОбъектРасчетов КАК ОбъектРасчетов
|ПОМЕСТИТЬ втОбъектРасчетовДляВосстановленияАванса
|ИЗ
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ОбъектыРасчетов.Ссылка КАК ОбъектРасчетов,
| ОбъектыРасчетов.Дата КАК ДатаОбъектаРасчетов,
| ИСТИНА КАК ОтборПоОбъекту
| ИЗ
| Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
| ГДЕ
| ОбъектыРасчетов.Объект = &Договор
| И ОбъектыРасчетов.Организация = &Организация
| И ОбъектыРасчетов.Контрагент = &Контрагент
| И ОбъектыРасчетов.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ ПЕРВЫЕ 1
| ОбъектыРасчетов.Ссылка,
| ОбъектыРасчетов.Дата,
| ЛОЖЬ
| ИЗ
| Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
| ГДЕ
| ОбъектыРасчетов.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетовСПартнерами.РасчетыСКлиентом)
| И ОбъектыРасчетов.Организация = &Организация
| И ОбъектыРасчетов.Контрагент = &Контрагент
| И ОбъектыРасчетов.Договор = &Договор
|
| УПОРЯДОЧИТЬ ПО
| ОтборПоОбъекту УБЫВ,
| Дата УБЫВ) КАК ВложенныйЗапрос
|;
|
|
|ВЫБРАТЬ
| втАвансыСчетаФактуры.Ссылка КАК Ссылка,
| втАвансыСчетаФактуры.ОбъектРасчетов КАК ОбъектРасчетов,
| втАвансыСчетаФактуры.РасчетныйДокумент КАК РасчетныйДокумент,
| втАвансыСчетаФактуры.Сумма - ЕСТЬNULL(втЗачтенныеАвансы.Сумма, 0) КАК Сумма,
| втАвансыСчетаФактуры.СуммаРегл - ЕСТЬNULL(втЗачтенныеАвансы.СуммаРегл, 0) КАК СуммаРегл,
| ЛОЖЬ КАК КорректировкаНаУменьшение
|ПОМЕСТИТЬ ВтТаблицаКорректировкиЗачетаАвансов
|ИЗ
| втАвансыСчетаФактуры КАК втАвансыСчетаФактуры
| ЛЕВОЕ СОЕДИНЕНИЕ втЗачтенныеАвансыИсправления КАК втЗачтенныеАвансы
| ПО втАвансыСчетаФактуры.Ссылка = втЗачтенныеАвансы.ссылка
| И втАвансыСчетаФактуры.ОбъектРасчетов = втЗачтенныеАвансы.ОбъектРасчетов
| И втАвансыСчетаФактуры.РасчетныйДокумент = втЗачтенныеАвансы.РасчетныйДокумент
|ГДЕ
| втАвансыСчетаФактуры.Сумма - ЕСТЬNULL(втЗачтенныеАвансы.Сумма, 0) > 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Ссылка,
| втЗачтенныеАвансы.ОбъектРасчетов,
| втЗачтенныеАвансы.РасчетныйДокумент,
| -(втЗачтенныеАвансы.Сумма - ЕСТЬNULL(втАвансыСчетаФактуры.Сумма, 0)),
| -(втЗачтенныеАвансы.Сумма - ЕСТЬNULL(втАвансыСчетаФактуры.Сумма, 0)) * &КоэффициентПересчетаВВалютуВзаиморасчетовРегл,
| ИСТИНА
|ИЗ
| втЗачтенныеАвансыИсправления КАК втЗачтенныеАвансы
| ЛЕВОЕ СОЕДИНЕНИЕ втАвансыСчетаФактуры КАК втАвансыСчетаФактуры
| ПО втЗачтенныеАвансы.Ссылка = втАвансыСчетаФактуры.ссылка
| И втЗачтенныеАвансы.ОбъектРасчетов = втАвансыСчетаФактуры.ОбъектРасчетов
| И втЗачтенныеАвансы.РасчетныйДокумент = втАвансыСчетаФактуры.РасчетныйДокумент
| ЛЕВОЕ СОЕДИНЕНИЕ втОбъектРасчетовДляВосстановленияАванса КАК втОбъектРасчетовДляВосстановленияАванса
| ПО ИСТИНА
|
|ГДЕ
| втЗачтенныеАвансы.Сумма - ЕСТЬNULL(втАвансыСчетаФактуры.Сумма, 0) > 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Ссылка,
| втОбъектРасчетовДляВосстановленияАванса.ОбъектРасчетов,
| &Ссылка,
| втСуммыСчетовФактурОснований.Сумма - втЗачтенныеАвансыИсходныхСчетовФактурПоДокументу.Сумма + втСуммыСчетовФактур.Сумма,
| (втСуммыСчетовФактурОснований.Сумма - втЗачтенныеАвансыИсходныхСчетовФактурПоДокументу.Сумма + втСуммыСчетовФактур.Сумма) * &КоэффициентПересчетаВВалютуВзаиморасчетовРегл,
| ИСТИНА
|ИЗ
| втСуммыСчетовФактур КАК втСуммыСчетовФактурОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗачтенныеАвансыИсходныхСчетовФактурПоДокументу КАК втЗачтенныеАвансыИсходныхСчетовФактурПоДокументу
| ПО втСуммыСчетовФактурОснований.Ссылка = втЗачтенныеАвансыИсходныхСчетовФактурПоДокументу.ИсходныйСчетФактура
| И НЕ втСуммыСчетовФактурОснований.ЭтоРегистратор
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втСуммыСчетовФактур КАК втСуммыСчетовФактур
| ПО втСуммыСчетовФактур.Ссылка = втЗачтенныеАвансыИсходныхСчетовФактурПоДокументу.Ссылка
| И втСуммыСчетовФактур.ЭтоРегистратор
| ЛЕВОЕ СОЕДИНЕНИЕ втОбъектРасчетовДляВосстановленияАванса КАК втОбъектРасчетовДляВосстановленияАванса
| ПО ИСТИНА
|
|ГДЕ
| (втСуммыСчетовФактурОснований.Сумма - втЗачтенныеАвансыИсходныхСчетовФактурПоДокументу.Сумма + втСуммыСчетовФактур.Сумма) < 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Ссылка,
| втОбъектРасчетовДляВосстановленияАванса.ОбъектРасчетов,
| &Ссылка,
| -Операция.СуммаРучногоВосстановленияАванса,
| -Операция.СуммаРучногоВосстановленияАванса * &КоэффициентПересчетаВВалютуВзаиморасчетовРегл,
| ИСТИНА
|ИЗ
| Документ.СчетФактураВыданный КАК Операция
| ЛЕВОЕ СОЕДИНЕНИЕ втОбъектРасчетовДляВосстановленияАванса КАК втОбъектРасчетовДляВосстановленияАванса
| ПО ИСТИНА
|
|ГДЕ
| Операция.Ссылка = &Ссылка
| И Операция.СуммаРучногоВосстановленияАванса > 0
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ВтТаблицаКорректировки.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВтЕстьИзменениеЗачетаАвансов
|ИЗ
| ВтТаблицаКорректировкиЗачетаАвансов КАК ВтТаблицаКорректировки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаЗачетыАвансов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗачетыАвансовСчетамиФактурами";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не Запрос.Параметры.НачислениеНДСПриОтгрузке Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаКорректировкиЗачетаАвансов", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаКорректировкиЗачетаАвансов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| ВтТаблицаКорректировкиЗачетаАвансов.ОбъектРасчетов КАК ОбъектРасчетов,
| ВЫБОР
| КОГДА ВтТаблицаКорректировкиЗачетаАвансов.КорректировкаНаУменьшение
| ТОГДА &Ссылка
| ИНАЧЕ
| ВтТаблицаКорректировкиЗачетаАвансов.РасчетныйДокумент
| КОНЕЦ КАК РасчетныйДокумент,
| СУММА(ВтТаблицаКорректировкиЗачетаАвансов.Сумма) КАК Сумма,
| СУММА(ВтТаблицаКорректировкиЗачетаАвансов.СуммаРегл) КАК СуммаРегл,
| ВтТаблицаКорректировкиЗачетаАвансов.КорректировкаНаУменьшение КАК КорректировкаНаУменьшение
|ИЗ
| ВтТаблицаКорректировкиЗачетаАвансов КАК ВтТаблицаКорректировкиЗачетаАвансов
|ГДЕ
| НЕ &ВводОстатков
|
|СГРУППИРОВАТЬ ПО
| ВтТаблицаКорректировкиЗачетаАвансов.ОбъектРасчетов,
| ВЫБОР
| КОГДА ВтТаблицаКорректировкиЗачетаАвансов.КорректировкаНаУменьшение
| ТОГДА &Ссылка
| ИНАЧЕ
| ВтТаблицаКорректировкиЗачетаАвансов.РасчетныйДокумент
| КОНЕЦ,
| ВтТаблицаКорректировкиЗачетаАвансов.КорректировкаНаУменьшение";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не Запрос.Параметры.НачислениеНДСПриОтгрузке Тогда
Возврат "";
КонецЕсли;
УстановитьПараметрЗапросаСчетФактураПредыдущееИсправление(Запрос);
УстановитьПараметрЗапросаИсправляемыйСчетФактура(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| РаспоряженияНаОтгрузкуСторно.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| РаспоряженияНаОтгрузкуСторно.Распоряжение КАК Распоряжение,
| РаспоряженияНаОтгрузкуСторно.Номенклатура КАК Номенклатура,
| РаспоряженияНаОтгрузкуСторно.Характеристика КАК Характеристика,
| РаспоряженияНаОтгрузкуСторно.КодСтроки КАК КодСтроки,
| ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОформленоСчетовФактур) КАК Показатель,
| -РаспоряженияНаОтгрузкуСторно.Количество КАК Количество,
| -РаспоряженияНаОтгрузкуСторно.СуммаНДС КАК СуммаНДС,
| -РаспоряженияНаОтгрузкуСторно.СуммаНДСУпр КАК СуммаНДСУпр,
| -РаспоряженияНаОтгрузкуСторно.СуммаНДСРегл КАК СуммаНДСРегл,
| -РаспоряженияНаОтгрузкуСторно.Сумма КАК Сумма,
| ИСТИНА КАК Сторно
|ИЗ
| РегистрНакопления.РаспоряженияНаОтгрузкуИВозврат КАК РаспоряженияНаОтгрузкуСторно
|ГДЕ
| РаспоряженияНаОтгрузкуСторно.Регистратор = &ИсправляемыйСчетФактура
| И &Исправление
| И НЕ &ВводОстатков
| И НЕ РаспоряженияНаОтгрузкуСторно.Сторно
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| ТаблицаТовары.Распоряжение КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОформленоСчетовФактур) КАК Показатель,
| ТаблицаТовары.КоличествоУвеличение
| - ТаблицаТовары.КоличествоУменьшение
| + ТаблицаТовары.Количество
| * ВЫБОР
| КОГДА &Корректировочный
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ КАК Количество,
| ЕСТЬNULL(Суммы.СуммаНДС, 0) КАК СуммаНДС,
| ЕСТЬNULL(Суммы.СуммаНДСУпр, 0) КАК СуммаНДСУпр,
| ЕСТЬNULL(Суммы.СуммаНДСРегл, 0) КАК СуммаНДСРегл,
| ТаблицаТовары.СуммаБезНДСВалУвеличение
| - ТаблицаТовары.СуммаБезНДСВалУменьшение
| + ТаблицаТовары.СуммаБезНДСВал
| * ВЫБОР
| КОГДА &Корректировочный
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ КАК Сумма,
| ЛОЖЬ КАК Сторно
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ВтСуммыДокументовВВалютахУчета КАК Суммы
| ПО ТаблицаТовары.Ссылка = Суммы.Ссылка
| И ТаблицаТовары.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ ТаблицаТовары.Распоряжение = НЕОПРЕДЕЛЕНО
| И НЕ &ВводОстатков
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Показатель";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура РассчитатьСуммуНДСРеглПриОтгрузке(ТаблицаТовары, ДополнительныеПараметры) Экспорт
ВалютаРегламентированногоУчета = ДополнительныеПараметры.ВалютаРегламентированногоУчета;
ЭтоКорректировочный = ДополнительныеПараметры.ЭтоКорректировочный;
Если ДополнительныеПараметры.ВалютаВзаиморасчетов = ВалютаРегламентированногоУчета
Или ДополнительныеПараметры.ВалютаВзаиморасчетов = ДополнительныеПараметры.ВалютаСчетаФактуры Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнения = Новый Структура("ДокументОснование, Исправление, Корректировочный",
ДополнительныеПараметры.ДокументОснование, ДополнительныеПараметры.ЭтоИсправление, ДополнительныеПараметры.ЭтоКорректировочный);
ПараметрыЗаполнения.Вставить("СчетФактураОснование", ?(ДополнительныеПараметры.Свойство("СчетФактураОснование"), ДополнительныеПараметры.СчетФактураОснование, Неопределено));
ПараметрыЗаполнения.Вставить("Период", ДополнительныеПараметры.Период);
ДатаОтгрузки = ОпределитьДатуОтгрузки(ПараметрыЗаполнения, Истина);
Если Не ДополнительныеПараметры.ОплатаВВалюте Тогда
Если ДополнительныеПараметры.ЭтоКорректировочный Тогда
РазницаСНДСВал = 0;
СуммаСНДСВалУвеличение = 0;
МассивКоэффициентов = Новый Массив;
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
РазницаСНДСВал = РазницаСНДСВал + СтрокаТовары.СуммаБезНДСВалУвеличение - СтрокаТовары.СуммаБезНДСВалУменьшение;
СуммаСНДСВалУвеличение = СуммаСНДСВалУвеличение + СтрокаТовары.СуммаБезНДСВалУвеличение;
МассивКоэффициентов.Добавить(СтрокаТовары.СуммаБезНДСВалУвеличение);
КонецЦикла;
СуммаАвансаРегл = ?(РазницаСНДСВал < 0, 0, ?(ДополнительныеПараметры.ПлатежноРасчетныеДокументы = Неопределено, 0, ДополнительныеПараметры.ПлатежноРасчетныеДокументы.Итог("СуммаРегл")));
СуммаАвансаВал = ?(РазницаСНДСВал < 0, 0, ?(ДополнительныеПараметры.ПлатежноРасчетныеДокументы = Неопределено, 0, ДополнительныеПараметры.ПлатежноРасчетныеДокументы.Итог("Сумма")));
СуммаЗадолженностиВал = СуммаСНДСВалУвеличение - СуммаАвансаВал;
СуммаСНДСУвеличениеРегл = СуммаАвансаРегл + РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(
СуммаЗадолженностиВал,
ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ВалютаВзаиморасчетов,
ВалютаРегламентированногоУчета,
ДатаОтгрузки);
МассивСуммСНДСРегл = ОбщегоНазначенияКлиентСервер.РаспределитьСуммуПропорциональноКоэффициентам(СуммаСНДСУвеличениеРегл, МассивКоэффициентов);
СтруктураПоиска = Новый Структура("Распоряжение, Номенклатура, КодСтроки");
Если МассивСуммСНДСРегл <> Неопределено Тогда
ИндексМассиваСумм = 0;
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
ЗначениеСтавкиНДС = УчетНДСУПКлиентСервер.ЗначениеСтавкиНДС(СтрокаТовары.СтавкаНДС);
СтрокаТовары.СуммаНДСУвеличение = МассивСуммСНДСРегл[ИндексМассиваСумм] * ЗначениеСтавкиНДС / (ЗначениеСтавкиНДС + 100);
СтрокаТовары.СуммаУвеличение = МассивСуммСНДСРегл[ИндексМассиваСумм];
ИндексМассиваСумм = ИндексМассиваСумм + 1;
СтрокаТовары.СуммаУменьшение = РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(
СтрокаТовары.СуммаБезНДСВалУменьшение,
ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ВалютаВзаиморасчетов,
ВалютаРегламентированногоУчета,
ДатаОтгрузки);
СтрокаТовары.СуммаНДСУменьшение = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СтрокаТовары.СуммаУменьшение, СтрокаТовары.СтавкаНДС);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТовары);
НайденныеСтроки = СтрокаТовары.ПредыдущийСчетФактура.Товары.НайтиСтроки(СтруктураПоиска);
СтрокаТовары.Сумма = ?(НайденныеСтроки.Количество() = 0, 0, НайденныеСтроки[0].Сумма) + СтрокаТовары.СуммаУвеличение - СтрокаТовары.СуммаУменьшение;
СтрокаТовары.СуммаНДС = ?(НайденныеСтроки.Количество() = 0, 0, НайденныеСтроки[0].СуммаНДС) + СтрокаТовары.СуммаНДСУвеличение - СтрокаТовары.СуммаНДСУменьшение;
КонецЦикла;
Иначе
РассчитатьСуммуНДСРеглПриОтгрузкеБезАвансов(ТаблицаТовары, Новый Структура("ДатаОтгрузки, ВалютаСчетаФактуры, ВалютаРегламентированногоУчета, ВалютаВзаиморасчетов, ОплатаВВалюте", ДатаОтгрузки, ДополнительныеПараметры.ВалютаСчетаФактуры, ВалютаРегламентированногоУчета, ДополнительныеПараметры.ВалютаВзаиморасчетов, Ложь));
КонецЕсли;
Иначе
СуммаСНДСВал = 0;
МассивКоэффициентов = Новый Массив;
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
СуммаСНДСВал = СуммаСНДСВал + СтрокаТовары.СуммаБезНДСВал;
МассивКоэффициентов.Добавить(СтрокаТовары.СуммаБезНДСВал);
КонецЦикла;
СуммаАвансаРегл = ?(ДополнительныеПараметры.ПлатежноРасчетныеДокументы = Неопределено, 0, ДополнительныеПараметры.ПлатежноРасчетныеДокументы.Итог("СуммаРегл"));
СуммаАвансаВал = ?(ДополнительныеПараметры.ПлатежноРасчетныеДокументы = Неопределено, 0, ДополнительныеПараметры.ПлатежноРасчетныеДокументы.Итог("Сумма"));
СуммаЗадолженностиВал = СуммаСНДСВал - СуммаАвансаВал;
СуммаСНДСРегл = СуммаАвансаРегл + РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(
СуммаЗадолженностиВал,
ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ВалютаВзаиморасчетов,
ВалютаРегламентированногоУчета,
ДатаОтгрузки);
МассивСуммСНДСРегл = ОбщегоНазначенияКлиентСервер.РаспределитьСуммуПропорциональноКоэффициентам(СуммаСНДСРегл, МассивКоэффициентов);
СтруктураПоиска = Новый Структура("Распоряжение, Номенклатура, КодСтроки");
Если МассивСуммСНДСРегл <> Неопределено Тогда
ИндексМассиваСумм = 0;
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
ЗначениеСтавкиНДС = УчетНДСУПКлиентСервер.ЗначениеСтавкиНДС(СтрокаТовары.СтавкаНДС);
СтрокаТовары.СуммаНДС = МассивСуммСНДСРегл[ИндексМассиваСумм] * ЗначениеСтавкиНДС / (ЗначениеСтавкиНДС + 100);
СтрокаТовары.Сумма = МассивСуммСНДСРегл[ИндексМассиваСумм];
ИндексМассиваСумм = ИндексМассиваСумм + 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Иначе
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
Если ДополнительныеПараметры.ЭтоКорректировочный Тогда
РассчитатьСуммуНДСРеглПриОтгрузкеБезАвансов(ТаблицаТовары, Новый Структура("ДатаОтгрузки, ВалютаСчетаФактуры, ВалютаРегламентированногоУчета, ВалютаВзаиморасчетов, ОплатаВВалюте", ДатаОтгрузки, ДополнительныеПараметры.ВалютаСчетаФактуры, ВалютаРегламентированногоУчета, ДополнительныеПараметры.ВалютаВзаиморасчетов, Истина));
Иначе
СуммаНДСВал = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СтрокаТовары.СуммаБезНДСВал, СтрокаТовары.СтавкаНДС);
СуммаБезНДСВал = Окр(СтрокаТовары.СуммаБезНДСВал - СуммаНДСВал, 2, РежимОкругления.Окр15как20);
СуммаБезНДСРегл = РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(
СуммаБезНДСВал,
ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ВалютаВзаиморасчетов,
ВалютаРегламентированногоУчета,
ДатаОтгрузки);
СтрокаТовары.СуммаНДС = ?(ДополнительныеПараметры.ВалютаСчетаФактуры = ВалютаРегламентированногоУчета,
УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СуммаБезНДСРегл, СтрокаТовары.СтавкаНДС, Ложь),
УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СуммаБезНДСВал, СтрокаТовары.СтавкаНДС, Ложь));
СтрокаТовары.Сумма = ?(ДополнительныеПараметры.ВалютаСчетаФактуры = ВалютаРегламентированногоУчета, СуммаБезНДСРегл + СтрокаТовары.СуммаНДС, СтрокаТовары.СуммаБезНДСВал);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура РассчитатьСуммуНДСРеглПриОтгрузкеБезАвансов(ТаблицаТовары, ДополнительныеПараметры)
СтруктураПоиска = Новый Структура("Распоряжение, Номенклатура, КодСтроки");
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
Если ДополнительныеПараметры.ОплатаВВалюте Тогда
СуммаНДСВалУвеличение = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СтрокаТовары.СуммаБезНДСВалУвеличение, СтрокаТовары.СтавкаНДС);
СуммаБезНДСВалУвеличение = Окр(СтрокаТовары.СуммаБезНДСВалУвеличение - СуммаНДСВалУвеличение, 2, РежимОкругления.Окр15как20);
СуммаБезНДСРеглУвеличение = РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(
СуммаБезНДСВалУвеличение,
ДополнительныеПараметры.ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ВалютаВзаиморасчетов,
ДополнительныеПараметры.ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ДатаОтгрузки);
СтрокаТовары.СуммаНДСУвеличение = ?(ДополнительныеПараметры.ВалютаСчетаФактуры = ДополнительныеПараметры.ВалютаРегламентированногоУчета,
УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СуммаБезНДСРеглУвеличение, СтрокаТовары.СтавкаНДС, Ложь),
УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СуммаБезНДСВалУвеличение, СтрокаТовары.СтавкаНДС, Ложь));
СтрокаТовары.СуммаУвеличение = ?(ДополнительныеПараметры.ВалютаСчетаФактуры = ДополнительныеПараметры.ВалютаРегламентированногоУчета, СуммаБезНДСРеглУвеличение + СтрокаТовары.СуммаНДСУвеличение, СтрокаТовары.СуммаБезНДСВалУвеличение);
СуммаНДСВалУменьшение = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СтрокаТовары.СуммаБезНДСВалУменьшение, СтрокаТовары.СтавкаНДС);
СуммаБезНДСВалУменьшение = Окр(СтрокаТовары.СуммаБезНДСВалУменьшение - СуммаНДСВалУменьшение, 2, РежимОкругления.Окр15как20);
СуммаБезНДСРеглУменьшение = РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(
СуммаБезНДСВалУменьшение,
ДополнительныеПараметры.ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ВалютаВзаиморасчетов,
ДополнительныеПараметры.ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ДатаОтгрузки);
СтрокаТовары.СуммаНДСУменьшение = ?(ДополнительныеПараметры.ВалютаСчетаФактуры = ДополнительныеПараметры.ВалютаРегламентированногоУчета,
УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СуммаБезНДСРеглУменьшение, СтрокаТовары.СтавкаНДС, Ложь),
УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СуммаБезНДСВалУменьшение, СтрокаТовары.СтавкаНДС, Ложь));
СтрокаТовары.СуммаУменьшение = ?(ДополнительныеПараметры.ВалютаСчетаФактуры = ДополнительныеПараметры.ВалютаРегламентированногоУчета, СуммаБезНДСРеглУменьшение + СтрокаТовары.СуммаНДСУменьшение, СтрокаТовары.СуммаБезНДСВалУменьшение);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТовары);
НайденныеСтроки = СтрокаТовары.ПредыдущийСчетФактура.Товары.НайтиСтроки(СтруктураПоиска);
СтрокаТовары.Сумма = ?(НайденныеСтроки.Количество() = 0, 0, НайденныеСтроки[0].Сумма) + СтрокаТовары.СуммаУвеличение - СтрокаТовары.СуммаУменьшение;
СтрокаТовары.СуммаНДС = ?(НайденныеСтроки.Количество() = 0, 0, НайденныеСтроки[0].СуммаНДС) + СтрокаТовары.СуммаНДСУвеличение - СтрокаТовары.СуммаНДСУменьшение;
Иначе
СуммаСНДСРеглУвеличение = РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(
СтрокаТовары.СуммаБезНДСВалУвеличение,
ДополнительныеПараметры.ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ВалютаВзаиморасчетов,
ДополнительныеПараметры.ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ДатаОтгрузки);
СтрокаТовары.СуммаНДСУвеличение = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СуммаСНДСРеглУвеличение, СтрокаТовары.СтавкаНДС);
СтрокаТовары.СуммаУвеличение = ?(ДополнительныеПараметры.ВалютаСчетаФактуры = ДополнительныеПараметры.ВалютаРегламентированногоУчета, СуммаСНДСРеглУвеличение, СтрокаТовары.СуммаБезНДСВалУвеличение);
СуммаСНДСРеглУменьшение = РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(
СтрокаТовары.СуммаБезНДСВалУменьшение,
ДополнительныеПараметры.ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ВалютаВзаиморасчетов,
ДополнительныеПараметры.ВалютаРегламентированногоУчета,
ДополнительныеПараметры.ДатаОтгрузки);
СтрокаТовары.СуммаНДСУменьшение = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(СуммаСНДСРеглУменьшение, СтрокаТовары.СтавкаНДС);
СтрокаТовары.СуммаУменьшение = ?(ДополнительныеПараметры.ВалютаСчетаФактуры = ДополнительныеПараметры.ВалютаРегламентированногоУчета, СуммаСНДСРеглУменьшение, СтрокаТовары.СуммаБезНДСВалУменьшение);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТовары);
НайденныеСтроки = СтрокаТовары.ПредыдущийСчетФактура.Товары.НайтиСтроки(СтруктураПоиска);
СтрокаТовары.Сумма = ?(НайденныеСтроки.Количество() = 0, 0, НайденныеСтроки[0].Сумма) + СтрокаТовары.СуммаУвеличение - СтрокаТовары.СуммаУменьшение;
СтрокаТовары.СуммаНДС = ?(НайденныеСтроки.Количество() = 0, 0, НайденныеСтроки[0].СуммаНДС) + СтрокаТовары.СуммаНДСУвеличение - СтрокаТовары.СуммаНДСУменьшение;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ТекстЗапросаВтНДСПоОтгрузкеТоваров(Запрос, ТекстыЗапроса) Экспорт
ИмяРегистра = "ВтНДСПоОтгрузкеТоваров";
Если ПроведениеДокументов.ЕстьТаблицаЗапроса(ИмяРегистра, ТекстыЗапроса) Тогда
Возврат;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Контрагент КАК Аналитика,
| ТаблицаТовары.Распоряжение КАК СчетФактура,
|
| ТаблицаТовары.СтавкаНДС КАК СтавкаНДС,
| ЕСТЬNULL(Суммы.СуммаНДСРегл, 0) КАК СуммаНДСРегл,
| ЕСТЬNULL(Суммы.СуммаНДСУпр, 0) КАК СуммаНДСУпр,
| ЕСТЬNULL(Суммы.СуммаБезНДС, 0) + ЕСТЬNULL(Суммы.СуммаНДС, 0) КАК СуммаСНДС,
| ЕСТЬNULL(Суммы.СуммаБезНДСУпр, 0) КАК СуммаБезНДСУпр,
| ЕСТЬNULL(Суммы.СуммаСНДСУпр, 0) КАК СуммаСНДСУпр,
| ЕСТЬNULL(Суммы.СуммаБезНДС, 0) КАК СуммаБезНДС,
| ЕСТЬNULL(Суммы.СуммаБезНДСРегл, 0) КАК СуммаБезНДСРегл,
|
| ТаблицаТовары.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.НачислениеНДСпоОтгрузкеТоваровВПути) КАК НастройкаХозяйственнойОперации
|ПОМЕСТИТЬ ВтНДСПоОтгрузкеТоваров
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ВтСуммыДокументовВВалютахУчета КАК Суммы
| ПО ТаблицаТовары.Ссылка = Суммы.Ссылка
| И ТаблицаТовары.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
|
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &НачислениеНДСПриОтгрузке
| И ТаблицаТовары.ТипЗапасов В (&ТипыЗапасовСобственные)
| И ЕСТЬNULL(Суммы.СуммаНДСРегл, 0) <> 0
| И НЕ &ВводОстатков
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Период КАК Период,
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Контрагент КАК Аналитика,
| ТаблицаТовары.Распоряжение КАК СчетФактура,
|
| ТаблицаТовары.СтавкаНДС КАК СтавкаНДС,
| -ЕСТЬNULL(Суммы.СуммаНДСРегл, 0) КАК СуммаНДСРегл,
| -ЕСТЬNULL(Суммы.СуммаНДСУпр, 0) КАК СуммаНДСУпр,
| -(ЕСТЬNULL(Суммы.СуммаБезНДС, 0) + ЕСТЬNULL(Суммы.СуммаНДС, 0)) КАК СуммаСНДС,
| -ЕСТЬNULL(Суммы.СуммаБезНДСУпр, 0) КАК СуммаБезНДСУпр,
| -(ЕСТЬNULL(Суммы.СуммаБезНДСУпр, 0) + ЕСТЬNULL(Суммы.СуммаНДСУпр, 0)) КАК СуммаСНДСУпр,
| -ЕСТЬNULL(Суммы.СуммаБезНДС, 0) КАК СуммаБезНДС,
| -ЕСТЬNULL(Суммы.СуммаБезНДСРегл, 0) КАК СуммаБезНДСРегл,
|
| ТаблицаТовары.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.НачислениеНДСпоОтгрузкеТоваровВПути) КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СуммыДокументовВВалютахУчета КАК Суммы
| ПО ТаблицаТовары.Ссылка = Суммы.Регистратор
| И ТаблицаТовары.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
|
|ГДЕ
| ТаблицаТовары.Ссылка = &СчетФактураОснование
| И &НачислениеНДСПриОтгрузке
| И ТаблицаТовары.ТипЗапасов В (&ТипыЗапасовСобственные)
| И &Исправление
| И ЕСТЬNULL(Суммы.СуммаНДСРегл, 0) <> 0
| И НЕ &ВводОстатков";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
КонецПроцедуры
Функция ТекстЗапросаТаблицаДвиженияПоПрочимАктивамПассивам(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияПоПрочимАктивамПассивам";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не Запрос.Параметры.НачислениеНДСПриОтгрузке Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтНДСПоОтгрузкеТоваров", ТекстыЗапроса) Тогда
ТекстЗапросаВтНДСПоОтгрузкеТоваров(Запрос, ТекстыЗапроса)
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| НДСПоОтгрузкеТоваров.Период КАК Период,
| НДСПоОтгрузкеТоваров.Организация КАК Организация,
| НДСПоОтгрузкеТоваров.Подразделение КАК Подразделение,
| НДСПоОтгрузкеТоваров.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ЗНАЧЕНИЕ(ПланВидовХарактеристик.СтатьиАктивовПассивов.НДСПоОтгрузкамБезПереходаПраваСобственности) КАК Статья,
| НДСПоОтгрузкеТоваров.Аналитика КАК Аналитика,
| ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПрочихАктивовПассивов.Дебет) КАК ДебетКредит,
|
| НДСПоОтгрузкеТоваров.СуммаНДСРегл КАК СуммаРегл,
| НДСПоОтгрузкеТоваров.СуммаНДСУпр КАК СуммаУпр,
| НДСПоОтгрузкеТоваров.СуммаСНДСУпр КАК СуммаСНДС,
| НДСПоОтгрузкеТоваров.СуммаБезНДСУпр КАК СуммаБезНДС,
|
| НЕОПРЕДЕЛЕНО КАК ОбъектРасчетов,
| НДСПоОтгрузкеТоваров.ИдентификаторФинЗаписи КАК ИдентификаторФинЗаписи,
| НДСПоОтгрузкеТоваров.НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|ИЗ
| ВтНДСПоОтгрузкеТоваров КАК НДСПоОтгрузкеТоваров";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияПоНДС(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияПоНДС";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не Запрос.Параметры.НачислениеНДСПриОтгрузке Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтНДСПоОтгрузкеТоваров", ТекстыЗапроса) Тогда
ТекстЗапросаВтНДСПоОтгрузкеТоваров(Запрос, ТекстыЗапроса)
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| НДСПоОтгрузкеТоваров.Период КАК Период,
| НДСПоОтгрузкеТоваров.Организация КАК Организация,
| ЗНАЧЕНИЕ(Перечисление.ТипыЗаписейДвиженийПоНДС.Исходящий) КАК ТипЗаписи,
| НДСПоОтгрузкеТоваров.Аналитика КАК Контрагент,
| НДСПоОтгрузкеТоваров.СчетФактура КАК СчетФактура,
| НДСПоОтгрузкеТоваров.СтавкаНДС КАК СтавкаНДС,
| ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.Товары) КАК ВидЦенности,
| НДСПоОтгрузкеТоваров.СуммаБезНДСРегл КАК СуммаБезНДС,
| НДСПоОтгрузкеТоваров.СуммаНДСРегл КАК НДС,
| НДСПоОтгрузкеТоваров.СуммаНДСУпр КАК НДСУпр,
| ЛОЖЬ КАК РегламентнаяОперация,
| НДСПоОтгрузкеТоваров.ИдентификаторФинЗаписи КАК ИдентификаторФинЗаписи,
| НДСПоОтгрузкеТоваров.НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации,
| ЛОЖЬ КАК Сторно
|ИЗ
| ВтНДСПоОтгрузкеТоваров КАК НДСПоОтгрузкеТоваров";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаНДССостояниеРеализации0(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "НДССостояниеРеализации0";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВТТаблицаТоваров", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаТоваров(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| &Период КАК Период,
| &Ссылка КАК Регистратор,
| &ДатаОтгрузки КАК ДатаРеализации,
| &Организация КАК Организация,
| &Контрагент КАК Контрагент,
| &ДокументОснование КАК ДокументРеализации,
| ЕСТЬNULL(НДССостояниеРеализации0.Состояние, ЗНАЧЕНИЕ(Перечисление.НДССостоянияРеализация0.ОжидаетсяПодтверждение)) КАК Состояние,
| СчетФактураТовары.СпрСтавкаНДС КАК СтавкаНДС,
| НДССостояниеРеализации0.ДатаПодтверждения КАК ДатаПодтверждения,
| ВЫРАЗИТЬ(НДССостояниеРеализации0.Комментарий КАК СТРОКА(500)) КАК Комментарий
|ИЗ
| ВТТаблицаТоваров КАК СчетФактураТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НДССостояниеРеализации0 КАК НДССостояниеРеализации0
| ПО НДССостояниеРеализации0.ДокументРеализации = &ДокументОснование
| И НЕ НДССостояниеРеализации0.Регистратор ССЫЛКА Документ.ПодтверждениеНулевойСтавкиНДС
|ГДЕ
| &Организация <> ЗНАЧЕНИЕ(Справочник.Организации.УправленческаяОрганизация)
| И НЕ &Исправление
| И НЕ &Корректировочный
| И &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| И СчетФактураТовары.СпрСтавкаНДС = &СтавкаНДСНаЭкспорт
| И &НачислениеНДСПриОтгрузке
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ТекстЗапросаВтОбъектыРасчетов(Запрос, ТекстыЗапроса)
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ОбъектыРасчетов.Ссылка КАК ОбъектРасчетов
|ПОМЕСТИТЬ ВтОбъектыРасчетов
|ИЗ
| Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
|ГДЕ
| ОбъектыРасчетов.Договор = &Договор
| И НЕ ОбъектыРасчетов.ПометкаУдаления";
Запрос.Текст = ТекстЗапроса;
Запрос.Выполнить();
КонецПроцедуры
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.СчетФактураВыданный";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ТекстыЗапросаВременныхТаблиц = Новый Соответствие();
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", "ДанныеДокумента.ПредставлениеНомера");
ПереопределениеРасчетаПараметров.Вставить("ВалютаСчетаФактуры", "ДанныеДокумента.Ссылка.Валюта");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоИсправлению", """""");
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ТекстыЗапросаВременныхТаблиц.Вставить("ВтОснований", ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса));
СинонимТаблицыДокумента = "ДанныеДокумента";
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
#КонецОбласти
#Область Заполнение
Процедура ПодготовитьДанныеЗаполненияТаблицыТоваров(ПараметрыЗаполнения, АдресХранилища) Экспорт
ОписаниеЗамера = ОценкаПроизводительности.НачатьЗамерДлительнойОперации(
"Документ.СчетФактураВыданный.Форма.ФормаДокумента.Команда.ОбновитьТаблицуТоваров");
Данные = ТаблицаТоваров(ПараметрыЗаполнения);
ПоместитьВоВременноеХранилище(Данные, АдресХранилища);
ОценкаПроизводительности.ЗакончитьЗамерДлительнойОперации(ОписаниеЗамера, Данные.Количество() / 100);
КонецПроцедуры
Функция ТаблицаТоваров(ПараметрыЗаполнения) Экспорт
ЭтоКорректировочный = ПараметрыЗаполнения.Корректировочный;
ЭтоИсправление = ПараметрыЗаполнения.Исправление;
ЭтоПеревыставление = ПараметрыЗаполнения.Перевыставленный;
ВалютаСчетаФактуры = ПараметрыЗаполнения.Валюта;
РеализацияЧерезКомиссионера = ПараметрыЗаполнения.РеализацияЧерезКомиссионера;
НДССМежценовойРазницы = ?(ПараметрыЗаполнения.Свойство("НДССМежценовойРазницы"), ПараметрыЗаполнения.НДССМежценовойРазницы, Ложь);
НалогообложениеНДС = ?(ПараметрыЗаполнения.Свойство("НалогообложениеНДС"), ПараметрыЗаполнения.НалогообложениеНДС, Перечисления.ТипыНалогообложенияНДС.ПустаяСсылка());
СчетФактураОтбора = ?(ТипЗнч(ПараметрыЗаполнения) = Тип("Структура") И ПараметрыЗаполнения.Свойство("СчетФактураОтбора"), ПараметрыЗаполнения.СчетФактураОтбора, Неопределено);
ЭтоВводИсправленияНаОснованииСФ = ?(ТипЗнч(ПараметрыЗаполнения) = Тип("Структура") И ПараметрыЗаполнения.Свойство("ЭтоИсправлениеНаОснованииСФ"), ПараметрыЗаполнения.ЭтоИсправлениеНаОснованииСФ, Ложь);
ЭтоКорректировкаНаОснованииСФ = Ложь;
ЭтоНачислениеНДСПриОтгрузке = ПараметрыЗаполнения.НачислениеНДСПриОтгрузке;
Результат = Новый Структура("СчетФактураОснование,Корректировочный,Товары");
Результат.СчетФактураОснование = Документы.СчетФактураВыданный.ПустаяСсылка();
Результат.Корректировочный = ПараметрыЗаполнения.Корректировочный;
Результат.Товары = Документы.СчетФактураВыданный.СоздатьДокумент().Товары.Выгрузить();
Если НЕ ЭтоКорректировочный И НЕ ЭтоИсправление И НЕ ЭтоПеревыставление
И НЕ НДССМежценовойРазницы И Не ЭтоНачислениеНДСПриОтгрузке Тогда
Возврат Результат;
КонецЕсли;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭтоКорректировочный", ЭтоКорректировочный);
ДополнительныеПараметры.Вставить("ВалютаСчетаФактуры", ВалютаСчетаФактуры);
ДополнительныеПараметры.Вставить("ЭтоПеревыставление", ЭтоПеревыставление);
ДополнительныеПараметры.Вставить("РеализацияЧерезКомиссионера", РеализацияЧерезКомиссионера);
ДополнительныеПараметры.Вставить("НДССМежценовойРазницы", НДССМежценовойРазницы);
ДополнительныеПараметры.Вставить("НачислениеНДСПриОтгрузке", ЭтоНачислениеНДСПриОтгрузке);
ТаблицаТорговыхДокументов = ПараметрыЗаполнения.ДокументыОснования.Скопировать();
Если ЭтоПеревыставление Тогда
ДополнительныеПараметры.Вставить("СчетаФактурыПолученные", ТаблицаТорговыхДокументов.ВыгрузитьКолонку("СчетФактураПолученныйОтПродавца"));
КонецЕсли;
ТаблицаТорговыхДокументов.Свернуть("ДокументОснование");
Если ТаблицаТорговыхДокументов.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
ДополнительныеПараметры.Вставить("ДокументОснование", ТаблицаТорговыхДокументов[0].ДокументОснование);
ПоместитьТаблицуТоваровТорговыхДокументов(ТаблицаТорговыхДокументов.ВыгрузитьКолонку("ДокументОснование"),
МенеджерВременныхТаблиц, "вт_ТаблицаТоваровДокументовОснований", ДополнительныеПараметры);
ЭтоВводОстатковПоОтгрузке = ЭтоНачислениеНДСПриОтгрузке И ТипЗнч(ДополнительныеПараметры.ДокументОснование) = Тип("ДокументСсылка.ПервичныйДокумент");
Если ЭтоНачислениеНДСПриОтгрузке
И Не ЭтоВводОстатковПоОтгрузке
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДополнительныеПараметры.ДокументОснование, "Исправление") Тогда
МассивСторнируемыхДокументовОснований = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДополнительныеПараметры.ДокументОснование, "СторнируемыйДокумент"));
Иначе
МассивСторнируемыхДокументовОснований = Новый Массив;
КонецЕсли;
ДополнительныеПараметры.Вставить("ЭтоИсправлениеОтгрузки", МассивСторнируемыхДокументовОснований.Количество()>0);
ПоместитьТаблицуТоваровТорговыхДокументов(МассивСторнируемыхДокументовОснований,
МенеджерВременныхТаблиц, "вт_ТаблицаТоваровСторнируемыхДокументовОснований", ДополнительныеПараметры);
Если ЭтоПеревыставление И Не ЭтоКорректировочный И Не ЭтоИсправление Тогда
Результат.Товары = ТаблицаТоваровДокументовОснований(МенеджерВременныхТаблиц);
Возврат Результат;
ИначеЕсли ТипЗнч(ДополнительныеПараметры.ДокументОснование) = Тип("ДокументСсылка.ВозвратТоваровОтКлиента")
И Документы.ВозвратТоваровОтКлиента.ЭтоВозвратПослеПереходаПраваСобственности(ДополнительныеПараметры.ДокументОснование) Тогда
Результат.Товары = ТаблицаТоваровВозвратовПослеПереходаПраваСобственности(МенеджерВременныхТаблиц);
Возврат Результат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ТаблицаТорговыхДокументов", ТаблицаТорговыхДокументов);
Запрос.УстановитьПараметр("НДССМежценовойРазницы", НДССМежценовойРазницы);
Запрос.УстановитьПараметр("НачислениеНДСПриОтгрузке", ЭтоНачислениеНДСПриОтгрузке);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТорговыхДокументов.ДокументОснование КАК ДокументОснование
|ПОМЕСТИТЬ вт_ТорговыеДокументыОснования
|ИЗ
| &ТаблицаТорговыхДокументов КАК ТаблицаТорговыхДокументов
|
|ИНДЕКСИРОВАТЬ ПО
| ДокументОснование
|;
|
|
|ВЫБРАТЬ
| ВложенныйЗапрос.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ВложенныйЗапрос.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ВложенныйЗапрос.ДокументРеализации КАК ДокументРеализации,
| ВложенныйЗапрос.Распоряжение КАК Распоряжение,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.Характеристика КАК Характеристика,
| ВложенныйЗапрос.Серия КАК Серия,
| ВложенныйЗапрос.НоменклатураНабора КАК НоменклатураНабора,
| ВложенныйЗапрос.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВложенныйЗапрос.Содержание КАК Содержание,
| ВложенныйЗапрос.ТипЗапасов КАК ТипЗапасов,
| ВложенныйЗапрос.КодТНВЭД КАК КодТНВЭД,
| ВложенныйЗапрос.НомерГТД КАК НомерГТД,
| ВложенныйЗапрос.КодСтроки КАК КодСтроки,
| ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС,
| ВложенныйЗапрос.НоменклатураПартнера КАК НоменклатураПартнера,
| МАКСИМУМ(ВложенныйЗапрос.НомерСтрокиПриПечати) КАК НомерСтрокиПриПечати,
| СУММА(ВложенныйЗапрос.Количество) КАК Количество,
| СУММА(ВложенныйЗапрос.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| СУММА(ВложенныйЗапрос.Сумма) КАК Сумма,
| СУММА(ВложенныйЗапрос.СуммаНДС) КАК СуммаНДС,
| СУММА(ВложенныйЗапрос.СуммаБезНДСВал) КАК СуммаБезНДСВал
|ПОМЕСТИТЬ вт_ТаблицаТоваровДокументовОснованийСИсправлениями
|ИЗ
| (ВЫБРАТЬ
| ТаблицаТоваровДО.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваровДО.ДокументРеализации КАК ДокументРеализации,
| ТаблицаТоваровДО.Распоряжение КАК Распоряжение,
| ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровДО.Номенклатура КАК Номенклатура,
| ТаблицаТоваровДО.Характеристика КАК Характеристика,
| ТаблицаТоваровДО.Серия КАК Серия,
| ТаблицаТоваровДО.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровДО.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровДО.Содержание КАК Содержание,
| ТаблицаТоваровДО.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровДО.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровДО.НомерГТД КАК НомерГТД,
| ТаблицаТоваровДО.КодСтроки КАК КодСтроки,
| ТаблицаТоваровДО.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровДО.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваровДО.НоменклатураПартнера КАК НоменклатураПартнера,
|
| ТаблицаТоваровДО.НомерСтрокиПриПечати КАК НомерСтрокиПриПечати,
| ТаблицаТоваровДО.Количество КАК Количество,
| ТаблицаТоваровДО.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваровДО.Сумма КАК Сумма,
| ТаблицаТоваровДО.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваровДО.СуммаБезНДСВал КАК СуммаБезНДСВал
| ИЗ
| вт_ТаблицаТоваровДокументовОснований КАК ТаблицаТоваровДО
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаТоваровДО.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваровДО.ДокументРеализации КАК ДокументРеализации,
| ТаблицаТоваровДО.Распоряжение КАК Распоряжение,
| ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровДО.Номенклатура КАК Номенклатура,
| ТаблицаТоваровДО.Характеристика КАК Характеристика,
| ТаблицаТоваровДО.Серия КАК Серия,
| ТаблицаТоваровДО.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровДО.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровДО.Содержание КАК Содержание,
| ТаблицаТоваровДО.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровДО.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровДО.НомерГТД КАК НомерГТД,
| ТаблицаТоваровДО.КодСтроки КАК КодСтроки,
| ТаблицаТоваровДО.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровДО.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваровДО.НоменклатураПартнера КАК НоменклатураПартнера,
|
| ТаблицаТоваровДО.НомерСтрокиПриПечати КАК НомерСтрокиПриПечати,
| -ТаблицаТоваровДО.Количество КАК Количество,
| -ТаблицаТоваровДО.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| -ТаблицаТоваровДО.Сумма КАК Сумма,
| -ТаблицаТоваровДО.СуммаНДС КАК СуммаНДС,
| -ТаблицаТоваровДО.СуммаБезНДСВал КАК СуммаБезНДСВал
| ИЗ
| вт_ТаблицаТоваровСторнируемыхДокументовОснований КАК ТаблицаТоваровДО
| ГДЕ
| &НачислениеНДСПриОтгрузке) КАК ВложенныйЗапрос
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.ИсходныйСчетФактура,
| ВложенныйЗапрос.СчетФактураПолученныйОтПродавца,
| ВложенныйЗапрос.ДокументРеализации,
| ВложенныйЗапрос.Распоряжение,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.Характеристика,
| ВложенныйЗапрос.Серия,
| ВложенныйЗапрос.НоменклатураНабора,
| ВложенныйЗапрос.ХарактеристикаНабора,
| ВложенныйЗапрос.Содержание,
| ВложенныйЗапрос.ТипЗапасов,
| ВложенныйЗапрос.КодТНВЭД,
| ВложенныйЗапрос.НомерГТД,
| ВложенныйЗапрос.КодСтроки,
| ВложенныйЗапрос.ЕдиницаИзмерения,
| ВложенныйЗапрос.СтавкаНДС,
| ВложенныйЗапрос.НоменклатураПартнера
|
|ИМЕЮЩИЕ
| СУММА(ВложенныйЗапрос.Количество) <> 0
| ИЛИ СУММА(ВложенныйЗапрос.КоличествоПоРНПТ) <> 0
| ИЛИ СУММА(ВложенныйЗапрос.Сумма) <> 0
| ИЛИ СУММА(ВложенныйЗапрос.СуммаБезНДСВал) <> 0
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| вт_ТаблицаТоваров.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| вт_ТаблицаТоваров.Номенклатура КАК Номенклатура,
| вт_ТаблицаТоваров.Характеристика КАК Характеристика,
| вт_ТаблицаТоваров.Серия КАК Серия,
| вт_ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера,
| вт_ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| вт_ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| вт_ТаблицаТоваров.Содержание КАК Содержание,
| вт_ТаблицаТоваров.ТипЗапасов КАК ТипЗапасов,
| вт_ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| вт_ТаблицаТоваров.НомерГТД КАК НомерГТД,
| вт_ТаблицаТоваров.КодСтроки КАК КодСтроки,
| вт_ТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| вт_ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| МАКСИМУМ(СчетФактураВыданныйТовары.Ссылка.Дата) КАК ПредыдущийСчетФактураДата
|ПОМЕСТИТЬ вт_КрайниеПериоды
|ИЗ
| вт_ТаблицаТоваровДокументовОснованийСИсправлениями КАК вт_ТаблицаТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК СчетФактураВыданныйТовары
| ПО вт_ТаблицаТоваров.ИсходныйСчетФактура = СчетФактураВыданныйТовары.ИсходныйСчетФактура
| И вт_ТаблицаТоваров.ИсходныйСчетФактура <> ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка)
| И вт_ТаблицаТоваров.Номенклатура = СчетФактураВыданныйТовары.Номенклатура
| И вт_ТаблицаТоваров.Характеристика = СчетФактураВыданныйТовары.Характеристика
| И вт_ТаблицаТоваров.Серия = СчетФактураВыданныйТовары.Серия
| И вт_ТаблицаТоваров.НоменклатураПартнера = СчетФактураВыданныйТовары.НоменклатураПартнера
| И вт_ТаблицаТоваров.НоменклатураНабора = СчетФактураВыданныйТовары.НоменклатураНабора
| И вт_ТаблицаТоваров.ХарактеристикаНабора = СчетФактураВыданныйТовары.ХарактеристикаНабора
| И вт_ТаблицаТоваров.Содержание = СчетФактураВыданныйТовары.Содержание
| И вт_ТаблицаТоваров.ТипЗапасов = СчетФактураВыданныйТовары.ТипЗапасов
| И вт_ТаблицаТоваров.КодТНВЭД = СчетФактураВыданныйТовары.КодТНВЭД
| И вт_ТаблицаТоваров.НомерГТД = СчетФактураВыданныйТовары.НомерГТД
| И вт_ТаблицаТоваров.КодСтроки = СчетФактураВыданныйТовары.КодСтроки
| И вт_ТаблицаТоваров.ЕдиницаИзмерения = СчетФактураВыданныйТовары.ЕдиницаИзмерения
| И вт_ТаблицаТоваров.СтавкаНДС = СчетФактураВыданныйТовары.СтавкаНДС
| И (СчетФактураВыданныйТовары.Ссылка.Проведен)
|ГДЕ
| СчетФактураВыданныйТовары.Ссылка.МоментВремени < &МоментВремени
| И СчетФактураВыданныйТовары.Ссылка <> &Ссылка
| И НЕ &НДССМежценовойРазницы
| И НЕ &НачислениеНДСПриОтгрузке
|
|СГРУППИРОВАТЬ ПО
| вт_ТаблицаТоваров.ИсходныйСчетФактура,
| вт_ТаблицаТоваров.Номенклатура,
| вт_ТаблицаТоваров.Характеристика,
| вт_ТаблицаТоваров.Серия,
| вт_ТаблицаТоваров.НоменклатураПартнера,
| вт_ТаблицаТоваров.НоменклатураНабора,
| вт_ТаблицаТоваров.ХарактеристикаНабора,
| вт_ТаблицаТоваров.Содержание,
| вт_ТаблицаТоваров.ТипЗапасов,
| вт_ТаблицаТоваров.КодТНВЭД,
| вт_ТаблицаТоваров.НомерГТД,
| вт_ТаблицаТоваров.КодСтроки,
| вт_ТаблицаТоваров.ЕдиницаИзмерения,
| вт_ТаблицаТоваров.СтавкаНДС
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| вт_ТаблицаТоваров.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| вт_ТаблицаТоваров.Номенклатура КАК Номенклатура,
| вт_ТаблицаТоваров.Характеристика КАК Характеристика,
| вт_ТаблицаТоваров.Серия КАК Серия,
| вт_ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера,
| вт_ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| вт_ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| вт_ТаблицаТоваров.Содержание КАК Содержание,
| вт_ТаблицаТоваров.ТипЗапасов КАК ТипЗапасов,
| вт_ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| вт_ТаблицаТоваров.НомерГТД КАК НомерГТД,
| вт_ТаблицаТоваров.КодСтроки КАК КодСтроки,
| вт_ТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| СчетФактураВыданныйТовары.СтавкаНДС КАК СтавкаНДС,
| МАКСИМУМ(СчетФактураВыданныйТовары.Ссылка.Дата) КАК ПредыдущийСчетФактураДата
|ИЗ
| вт_ТаблицаТоваровДокументовОснованийСИсправлениями КАК вт_ТаблицаТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК СчетФактураВыданныйТовары
| ПО вт_ТаблицаТоваров.ИсходныйСчетФактура = СчетФактураВыданныйТовары.ИсходныйСчетФактура
| И вт_ТаблицаТоваров.ИсходныйСчетФактура <> ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка)
| И вт_ТаблицаТоваров.Номенклатура = СчетФактураВыданныйТовары.Номенклатура
| И вт_ТаблицаТоваров.Характеристика = СчетФактураВыданныйТовары.Характеристика
| И вт_ТаблицаТоваров.Серия = СчетФактураВыданныйТовары.Серия
| И вт_ТаблицаТоваров.НоменклатураПартнера = СчетФактураВыданныйТовары.НоменклатураПартнера
| И вт_ТаблицаТоваров.НоменклатураНабора = СчетФактураВыданныйТовары.НоменклатураНабора
| И вт_ТаблицаТоваров.ХарактеристикаНабора = СчетФактураВыданныйТовары.ХарактеристикаНабора
| И вт_ТаблицаТоваров.Содержание = СчетФактураВыданныйТовары.Содержание
| И вт_ТаблицаТоваров.ТипЗапасов = СчетФактураВыданныйТовары.ТипЗапасов
| И вт_ТаблицаТоваров.КодТНВЭД = СчетФактураВыданныйТовары.КодТНВЭД
| И вт_ТаблицаТоваров.НомерГТД = СчетФактураВыданныйТовары.НомерГТД
| И вт_ТаблицаТоваров.КодСтроки = СчетФактураВыданныйТовары.КодСтроки
| И вт_ТаблицаТоваров.ЕдиницаИзмерения = СчетФактураВыданныйТовары.ЕдиницаИзмерения
| И (СчетФактураВыданныйТовары.Ссылка.Проведен)
|ГДЕ
| СчетФактураВыданныйТовары.Ссылка.МоментВремени < &МоментВремени
| И СчетФактураВыданныйТовары.Ссылка <> &Ссылка
| И (&НДССМежценовойРазницы ИЛИ &НачислениеНДСПриОтгрузке)
|
|СГРУППИРОВАТЬ ПО
| вт_ТаблицаТоваров.ИсходныйСчетФактура,
| вт_ТаблицаТоваров.Номенклатура,
| вт_ТаблицаТоваров.Характеристика,
| вт_ТаблицаТоваров.Серия,
| вт_ТаблицаТоваров.НоменклатураПартнера,
| вт_ТаблицаТоваров.НоменклатураНабора,
| вт_ТаблицаТоваров.ХарактеристикаНабора,
| вт_ТаблицаТоваров.Содержание,
| вт_ТаблицаТоваров.ТипЗапасов,
| вт_ТаблицаТоваров.КодТНВЭД,
| вт_ТаблицаТоваров.НомерГТД,
| вт_ТаблицаТоваров.КодСтроки,
| вт_ТаблицаТоваров.ЕдиницаИзмерения,
| СчетФактураВыданныйТовары.СтавкаНДС
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| вт_КрайниеПериоды.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| вт_КрайниеПериоды.Номенклатура КАК Номенклатура,
| вт_КрайниеПериоды.Характеристика КАК Характеристика,
| вт_КрайниеПериоды.Серия КАК Серия,
| вт_КрайниеПериоды.НоменклатураПартнера КАК НоменклатураПартнера,
| вт_КрайниеПериоды.НоменклатураНабора КАК НоменклатураНабора,
| вт_КрайниеПериоды.ХарактеристикаНабора КАК ХарактеристикаНабора,
| вт_КрайниеПериоды.Содержание КАК Содержание,
| вт_КрайниеПериоды.ТипЗапасов КАК ТипЗапасов,
| вт_КрайниеПериоды.КодТНВЭД КАК КодТНВЭД,
| вт_КрайниеПериоды.НомерГТД КАК НомерГТД,
| вт_КрайниеПериоды.КодСтроки КАК КодСтроки,
| вт_КрайниеПериоды.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| вт_КрайниеПериоды.СтавкаНДС КАК СтавкаНДС,
| МАКСИМУМ(СчетФактураВыданныйТовары.Ссылка) КАК ПредыдущийСчетФактура
|ПОМЕСТИТЬ вт_КрайниеСчетаФактуры
|ИЗ
| вт_КрайниеПериоды КАК вт_КрайниеПериоды
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК СчетФактураВыданныйТовары
| ПО вт_КрайниеПериоды.ИсходныйСчетФактура = СчетФактураВыданныйТовары.ИсходныйСчетФактура
| И вт_КрайниеПериоды.Номенклатура = СчетФактураВыданныйТовары.Номенклатура
| И вт_КрайниеПериоды.Характеристика = СчетФактураВыданныйТовары.Характеристика
| И вт_КрайниеПериоды.Серия = СчетФактураВыданныйТовары.Серия
| И вт_КрайниеПериоды.НоменклатураПартнера = СчетФактураВыданныйТовары.НоменклатураПартнера
| И вт_КрайниеПериоды.НоменклатураНабора = СчетФактураВыданныйТовары.НоменклатураНабора
| И вт_КрайниеПериоды.ХарактеристикаНабора = СчетФактураВыданныйТовары.ХарактеристикаНабора
| И вт_КрайниеПериоды.Содержание = СчетФактураВыданныйТовары.Содержание
| И вт_КрайниеПериоды.ТипЗапасов = СчетФактураВыданныйТовары.ТипЗапасов
| И вт_КрайниеПериоды.КодТНВЭД = СчетФактураВыданныйТовары.КодТНВЭД
| И вт_КрайниеПериоды.НомерГТД = СчетФактураВыданныйТовары.НомерГТД
| И вт_КрайниеПериоды.КодСтроки = СчетФактураВыданныйТовары.КодСтроки
| И вт_КрайниеПериоды.ЕдиницаИзмерения = СчетФактураВыданныйТовары.ЕдиницаИзмерения
| И вт_КрайниеПериоды.СтавкаНДС = СчетФактураВыданныйТовары.СтавкаНДС
| И вт_КрайниеПериоды.ПредыдущийСчетФактураДата = СчетФактураВыданныйТовары.Ссылка.Дата
| И (СчетФактураВыданныйТовары.Ссылка.Проведен)
|
|СГРУППИРОВАТЬ ПО
| вт_КрайниеПериоды.ИсходныйСчетФактура,
| вт_КрайниеПериоды.Номенклатура,
| вт_КрайниеПериоды.Характеристика,
| вт_КрайниеПериоды.Серия,
| вт_КрайниеПериоды.НоменклатураПартнера,
| вт_КрайниеПериоды.НоменклатураНабора,
| вт_КрайниеПериоды.ХарактеристикаНабора,
| вт_КрайниеПериоды.Содержание,
| вт_КрайниеПериоды.ТипЗапасов,
| вт_КрайниеПериоды.КодТНВЭД,
| вт_КрайниеПериоды.НомерГТД,
| вт_КрайниеПериоды.КодСтроки,
| вт_КрайниеПериоды.ЕдиницаИзмерения,
| вт_КрайниеПериоды.СтавкаНДС
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| вт_ТаблицаТоваров.ДокументРеализации КАК ДокументРеализации,
| вт_ТаблицаТоваров.Распоряжение КАК Распоряжение,
| вт_ТаблицаТоваров.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ЕСТЬNULL(СчетФактураВыданныйОснование.Ссылка, ЕСТЬNULL(вт_КрайниеСчетаФактуры.ПредыдущийСчетФактура, вт_ТаблицаТоваров.ИсходныйСчетФактура)) КАК ПредыдущийСчетФактура,
| ЕСТЬNULL(СчетФактураВыданныйОснование.Корректировочный, ЕСТЬNULL(вт_КрайниеСчетаФактуры.ПредыдущийСчетФактура.Корректировочный, ЛОЖЬ)) КАК Корректировочный,
| ЕСТЬNULL(СчетФактураВыданныйОснование.Исправление, ЕСТЬNULL(вт_КрайниеСчетаФактуры.ПредыдущийСчетФактура.Исправление, ЛОЖЬ)) КАК Исправление,
| вт_ТаблицаТоваров.Номенклатура КАК Номенклатура,
| вт_ТаблицаТоваров.Характеристика КАК Характеристика,
| вт_ТаблицаТоваров.Серия КАК Серия,
| вт_ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера,
| вт_ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| вт_ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| вт_ТаблицаТоваров.Содержание КАК Содержание,
| вт_ТаблицаТоваров.ТипЗапасов КАК ТипЗапасов,
| вт_ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| вт_ТаблицаТоваров.НомерГТД КАК НомерГТД,
| вт_ТаблицаТоваров.КодСтроки КАК КодСтроки,
| вт_ТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| вт_ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС
|ПОМЕСТИТЬ вт_ТаблицаТоваровПредварительная
|ИЗ
| вт_ТаблицаТоваровДокументовОснованийСИсправлениями КАК вт_ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ вт_КрайниеСчетаФактуры КАК вт_КрайниеСчетаФактуры
| ПО вт_ТаблицаТоваров.ИсходныйСчетФактура = вт_КрайниеСчетаФактуры.ИсходныйСчетФактура
| И вт_ТаблицаТоваров.Номенклатура = вт_КрайниеСчетаФактуры.Номенклатура
| И вт_ТаблицаТоваров.Характеристика = вт_КрайниеСчетаФактуры.Характеристика
| И вт_ТаблицаТоваров.Серия = вт_КрайниеСчетаФактуры.Серия
| И вт_ТаблицаТоваров.НоменклатураПартнера = вт_КрайниеСчетаФактуры.НоменклатураПартнера
| И вт_ТаблицаТоваров.НоменклатураНабора = вт_КрайниеСчетаФактуры.НоменклатураНабора
| И вт_ТаблицаТоваров.ХарактеристикаНабора = вт_КрайниеСчетаФактуры.ХарактеристикаНабора
| И вт_ТаблицаТоваров.Содержание = вт_КрайниеСчетаФактуры.Содержание
| И вт_ТаблицаТоваров.ТипЗапасов = вт_КрайниеСчетаФактуры.ТипЗапасов
| И вт_ТаблицаТоваров.КодТНВЭД = вт_КрайниеСчетаФактуры.КодТНВЭД
| И вт_ТаблицаТоваров.НомерГТД = вт_КрайниеСчетаФактуры.НомерГТД
| И вт_ТаблицаТоваров.КодСтроки = вт_КрайниеСчетаФактуры.КодСтроки
| И вт_ТаблицаТоваров.ЕдиницаИзмерения = вт_КрайниеСчетаФактуры.ЕдиницаИзмерения
| И вт_ТаблицаТоваров.СтавкаНДС = вт_КрайниеСчетаФактуры.СтавкаНДС
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданныйОснование
| ПО СчетФактураВыданныйОснование.Ссылка = &СчетФактураОтбора
| И &ЭтоВводИсправленияНаОснованииСФ
|
|ГДЕ
| НЕ &НДССМежценовойРазницы
| И НЕ &НачислениеНДСПриОтгрузке
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| вт_ТаблицаТоваров.ДокументРеализации КАК ДокументРеализации,
| вт_ТаблицаТоваров.Распоряжение КАК Распоряжение,
| вт_ТаблицаТоваров.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ЕСТЬNULL(СчетФактураВыданныйОснование.Ссылка, ЕСТЬNULL(вт_КрайниеСчетаФактуры.ПредыдущийСчетФактура, вт_ТаблицаТоваров.ИсходныйСчетФактура)) КАК ПредыдущийСчетФактура,
| ЕСТЬNULL(СчетФактураВыданныйОснование.Корректировочный, ЕСТЬNULL(вт_КрайниеСчетаФактуры.ПредыдущийСчетФактура.Корректировочный, ЛОЖЬ)) КАК Корректировочный,
| ЕСТЬNULL(СчетФактураВыданныйОснование.Исправление, ЕСТЬNULL(вт_КрайниеСчетаФактуры.ПредыдущийСчетФактура.Исправление, ЛОЖЬ)) КАК Исправление,
| вт_ТаблицаТоваров.Номенклатура КАК Номенклатура,
| вт_ТаблицаТоваров.Характеристика КАК Характеристика,
| вт_ТаблицаТоваров.Серия КАК Серия,
| вт_ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера,
| вт_ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| вт_ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| вт_ТаблицаТоваров.Содержание КАК Содержание,
| вт_ТаблицаТоваров.ТипЗапасов КАК ТипЗапасов,
| вт_ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| вт_ТаблицаТоваров.НомерГТД КАК НомерГТД,
| вт_ТаблицаТоваров.КодСтроки КАК КодСтроки,
| вт_ТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| вт_КрайниеСчетаФактуры.СтавкаНДС КАК СтавкаНДС
|ИЗ
| вт_ТаблицаТоваровДокументовОснованийСИсправлениями КАК вт_ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ вт_КрайниеСчетаФактуры КАК вт_КрайниеСчетаФактуры
| ПО вт_ТаблицаТоваров.ИсходныйСчетФактура = вт_КрайниеСчетаФактуры.ИсходныйСчетФактура
| И вт_ТаблицаТоваров.Номенклатура = вт_КрайниеСчетаФактуры.Номенклатура
| И вт_ТаблицаТоваров.Характеристика = вт_КрайниеСчетаФактуры.Характеристика
| И вт_ТаблицаТоваров.Серия = вт_КрайниеСчетаФактуры.Серия
| И вт_ТаблицаТоваров.НоменклатураПартнера = вт_КрайниеСчетаФактуры.НоменклатураПартнера
| И вт_ТаблицаТоваров.НоменклатураНабора = вт_КрайниеСчетаФактуры.НоменклатураНабора
| И вт_ТаблицаТоваров.ХарактеристикаНабора = вт_КрайниеСчетаФактуры.ХарактеристикаНабора
| И вт_ТаблицаТоваров.Содержание = вт_КрайниеСчетаФактуры.Содержание
| И вт_ТаблицаТоваров.ТипЗапасов = вт_КрайниеСчетаФактуры.ТипЗапасов
| И вт_ТаблицаТоваров.КодТНВЭД = вт_КрайниеСчетаФактуры.КодТНВЭД
| И вт_ТаблицаТоваров.НомерГТД = вт_КрайниеСчетаФактуры.НомерГТД
| И вт_ТаблицаТоваров.КодСтроки = вт_КрайниеСчетаФактуры.КодСтроки
| И вт_ТаблицаТоваров.ЕдиницаИзмерения = вт_КрайниеСчетаФактуры.ЕдиницаИзмерения
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданныйОснование
| ПО СчетФактураВыданныйОснование.Ссылка = &СчетФактураОтбора
| И &ЭтоВводИсправленияНаОснованииСФ
|
|ГДЕ
| &НДССМежценовойРазницы ИЛИ &НачислениеНДСПриОтгрузке
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВЫБОР
| КОГДА вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура.Исправление
| ТОГДА вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура.СчетФактураОснование
| ИНАЧЕ вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура
| КОНЕЦ КАК СчетФактура,
| ВЫБОР
| КОГДА вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура.Исправление
| ТОГДА вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура.СчетФактураОснование.Корректировочный
| ИНАЧЕ вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура.Корректировочный
| КОНЕЦ КАК Корректировочный
|ИЗ
| вт_ТаблицаТоваровПредварительная КАК вт_ТаблицаТоваровПредварительная
|;
|
|
|ВЫБРАТЬ
| вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура КАК СчетФактура,
| вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура.Корректировочный КАК Корректировочный,
| вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура.Исправление КАК Исправление,
| МИНИМУМ(ЕСТЬNULL(ДокументыОснования.ДокументОснование = вт_ТорговыеДокументыОснования.ДокументОснование
| И НЕ ДокументыОснования.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОЗакупках, ЛОЖЬ)) КАК ИсправлениеНаОснованииСФ
|ИЗ
| вт_ТаблицаТоваровПредварительная КАК вт_ТаблицаТоваровПредварительная
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК ДокументыОснования
| ПО ДокументыОснования.Ссылка = вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТорговыеДокументыОснования КАК вт_ТорговыеДокументыОснования
| ПО ДокументыОснования.ДокументОснование = вт_ТорговыеДокументыОснования.ДокументОснование
|СГРУППИРОВАТЬ ПО
| вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура
|УПОРЯДОЧИТЬ ПО
| вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура УБЫВ
|АВТОУПОРЯДОЧИВАНИЕ
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| вт_ТаблицаТоваровПредварительная.ДокументРеализации КАК ДокументРеализации
|ИЗ
| вт_ТаблицаТоваровПредварительная КАК вт_ТаблицаТоваровПредварительная
|ГДЕ
| НЕ вт_ТаблицаТоваровПредварительная.Корректировочный
| И НЕ вт_ТаблицаТоваровПредварительная.Исправление
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументыОснования.ДокументОснование КАК ДокументРеализации
|ИЗ
| вт_ТаблицаТоваровПредварительная КАК вт_ТаблицаТоваровПредварительная
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК ДокументыОснования
| ПО ДокументыОснования.Ссылка = вт_ТаблицаТоваровПредварительная.ПредыдущийСчетФактура
|ГДЕ
| НЕ вт_ТаблицаТоваровПредварительная.Корректировочный
| И НЕ вт_ТаблицаТоваровПредварительная.Исправление
| И НЕ &РеализацияЧерезКомиссионера
|;
|
|
|УНИЧТОЖИТЬ вт_КрайниеПериоды
|;
|
|
|УНИЧТОЖИТЬ вт_КрайниеСчетаФактуры
|";
Запрос.УстановитьПараметр("МоментВремени", ПараметрыЗаполнения.МоментВремени);
Запрос.УстановитьПараметр("Ссылка", ПараметрыЗаполнения.МоментВремени.Ссылка);
Запрос.УстановитьПараметр("РеализацияЧерезКомиссионера", РеализацияЧерезКомиссионера);
Запрос.УстановитьПараметр("ЭтоВводИсправленияНаОснованииСФ", ЭтоВводИсправленияНаОснованииСФ);
Запрос.УстановитьПараметр("СчетФактураОтбора", СчетФактураОтбора);
МассивРезультатов = Запрос.ВыполнитьПакет();
ТаблицаСчетаФактурыОснования = МассивРезультатов[5].Выгрузить();
Если ТаблицаСчетаФактурыОснования.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Если ЭтоИсправление И ТаблицаСчетаФактурыОснования.Количество() > 1 Тогда
ТекстСообщения = НСтр("ru = 'По выбранным документам-основаниям необходимо выставить несколько исправленных счетов-фактур.'") + Символы.ПС
+ НСтр("ru = 'Необходимо зарегистрировать по документам-основаниям отдельные счета-фактуры.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
ВызватьИсключение ТекстСообщения;
КонецЕсли;
ТаблицаПредыдущиеСчетаФактуры = МассивРезультатов[6].Выгрузить();
Если ЭтоПеревыставление Тогда
ДокументыРеализации = Новый Массив;
Иначе
ДокументыРеализации = МассивРезультатов[7].Выгрузить().ВыгрузитьКолонку("ДокументРеализации");
КонецЕсли;
ЭтоИсправлениеНаОснованииСФ = Ложь;
Если ЭтоИсправление И ТаблицаПредыдущиеСчетаФактуры.Количество() > 0 Тогда
ДанныеПредыдущегоСчетаФактуры = ТаблицаПредыдущиеСчетаФактуры[0];
ПредыдущиеСчетаФактуры = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДанныеПредыдущегоСчетаФактуры.СчетФактура);
Если ДанныеПредыдущегоСчетаФактуры.Корректировочный Или ДанныеПредыдущегоСчетаФактуры.Исправление Тогда
ДокументыРеализации = Новый Массив;
КонецЕсли;
Если ДанныеПредыдущегоСчетаФактуры.ИсправлениеНаОснованииСФ
Или ЭтоВводИсправленияНаОснованииСФ Тогда
ЭтоИсправлениеНаОснованииСФ = Истина;
КонецЕсли;
Иначе
ПредыдущиеСчетаФактуры = ТаблицаПредыдущиеСчетаФактуры.ВыгрузитьКолонку("СчетФактура");
Если ЭтоНачислениеНДСПриОтгрузке Тогда
ПредыдущиеДокументыОснования = Новый Массив;
СоответствиеДокументовОснованийПредыдущихСчетовФактур = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(ПредыдущиеСчетаФактуры, "ДокументОснование");
Для Каждого КлючИЗначение Из СоответствиеДокументовОснованийПредыдущихСчетовФактур Цикл
Если ПредыдущиеДокументыОснования.Найти(КлючИЗначение.Значение.ДокументОснование) = Неопределено Тогда
ПредыдущиеДокументыОснования.Добавить(КлючИЗначение.Значение.ДокументОснование);
КонецЕсли;
КонецЦикла;
ЭтоКорректировкаНаОснованииСФ = ПараметрыЗаполнения.Корректировочный
И ПредыдущиеДокументыОснования.Найти(ДополнительныеПараметры.ДокументОснование) <> Неопределено;
КонецЕсли;
КонецЕсли;
ДополнительныеПараметры.Вставить("ЭтоКорректировочный", Результат.Корректировочный);
ДополнительныеПараметры.Вставить("ЭтоИсправление", ЭтоИсправление);
ДополнительныеПараметры.Вставить("ЭтоИсправлениеНаОснованииСФ", ЭтоИсправлениеНаОснованииСФ);
ДополнительныеПараметры.Вставить("ЭтоКорректировкаНаОснованииСФ", ЭтоКорректировкаНаОснованииСФ);
ПоместитьТаблицуТоваровТорговыхДокументов(ДокументыРеализации, МенеджерВременныхТаблиц, "вт_ТаблицаТоваровИсходныхТорговыхДокументов", ДополнительныеПараметры);
ПоместитьТаблицуТоваровСчетовФактур(ПредыдущиеСчетаФактуры, МенеджерВременныхТаблиц, "вт_ТаблицаТоваровПредыдущихСчетовФактур", ДополнительныеПараметры);
СвернутьТаблицуТоваровТорговыхДокументов(МенеджерВременныхТаблиц, ДополнительныеПараметры);
Если ЭтоИсправление Тогда
Результат.СчетФактураОснование = ТаблицаСчетаФактурыОснования[0].СчетФактура;
Результат.Корректировочный = ТаблицаСчетаФактурыОснования[0].Корректировочный;
Если ЭтоНачислениеНДСПриОтгрузке
И Результат.Корректировочный Тогда
ДополнительныеПараметры.Вставить("ЭтоКорректировочный", Результат.Корректировочный);
КонецЕсли;
Результат.Товары = ТаблицаТоваровИсправление(МенеджерВременныхТаблиц, ДополнительныеПараметры);
Если Результат.Корректировочный <> NULL И Не Результат.Корректировочный Тогда
Результат.Вставить("ТаблицаТоваровДокументовОснований",ТаблицаТоваровДокументовОснований(МенеджерВременныхТаблиц));
КонецЕсли;
Иначе
Результат.Товары = ТаблицаТоваровКорректировка(МенеджерВременныхТаблиц, ДополнительныеПараметры);
КонецЕсли;
Если НДССМежценовойРазницы Тогда
РассчитатьМежценовуюРазницу(Результат.Товары, ПараметрыЗаполнения);
КонецЕсли;
Если ЭтоНачислениеНДСПриОтгрузке
И Результат.Товары.Количество() Тогда
ДополнительныеПараметры.Вставить("ВалютаВзаиморасчетов", ПараметрыЗаполнения.ВалютаВзаиморасчетов);
ДополнительныеПараметры.Вставить("Ссылка", ПараметрыЗаполнения.МоментВремени.Ссылка);
ДополнительныеПараметры.Вставить("Период", ПараметрыЗаполнения.МоментВремени.Дата);
ДополнительныеПараметры.Вставить("ВалютаРегламентированногоУчета", ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДополнительныеПараметры.ДокументОснование, "Организация")));
ДополнительныеПараметры.Вставить("ВалютаУправленческогоУчета", ЗначениеНастроекПовтИсп.ВалютаУправленческогоУчета());
ДополнительныеПараметры.Вставить("ОплатаВВалюте", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДополнительныеПараметры.ДокументОснование, "Договор.ОплатаВВалюте"));
ДополнительныеПараметры.Вставить("ПлатежноРасчетныеДокументы", ?(ПараметрыЗаполнения.Свойство("ПлатежноРасчетныеДокументы"), ПараметрыЗаполнения.ПлатежноРасчетныеДокументы, Неопределено));
РассчитатьСуммуНДСПриОтгрузке(Результат.Товары, ДополнительныеПараметры);
РассчитатьСуммуНДСРеглПриОтгрузке(Результат.Товары, ДополнительныеПараметры);
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура ПоместитьТаблицуТоваровТорговыхДокументов(МассивТорговыхДокументов, МенеджерВременныхТаблиц, ИмяВременнойТаблицы, ДополнительныеПараметры) Экспорт
ТаблицаТоваров = Документы.СчетФактураВыданный.СоздатьДокумент().Товары.ВыгрузитьКолонки();
ТаблицаТоваров.Колонки.Добавить("ДокументРеализации", Документы.ТипВсеСсылки());
ТаблицаТоваров.Колонки.Добавить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
ТаблицаТоваров.Колонки.Добавить("СуммаРегл", Новый ОписаниеТипов("Число"));
ТаблицаТоваров.Колонки.Добавить("СуммаНДСРегл", Новый ОписаниеТипов("Число"));
Если ДополнительныеПараметры.ЭтоПеревыставление Тогда
ИмяТаблицыСФ = "ЗаполнениеТоваровСФВыданныйПеревыставление";
Иначе
ИмяТаблицыСФ = "ЗаполнениеТоваровСФВыданный";
КонецЕсли;
Для Каждого Основание Из МассивТорговыхДокументов Цикл
Если Не ЗначениеЗаполнено(Основание) Тогда
Продолжить;
ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ПервичныйДокумент") Тогда
Если ТипЗнч(ДополнительныеПараметры.ДокументОснование) = Тип("ДокументСсылка.КорректировкаРеализации") Тогда
ДанныеКорректировки = Документы.КорректировкаРеализации.ДанныеКорректировкиДоВводаОстатков(ДополнительныеПараметры.ДокументОснование);
РеквизитыПервичногоДокумента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Основание, "Организация,Валюта,СуммаДокумента,СуммаРегл");
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(
РеквизитыПервичногоДокумента.Организация);
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ДанныеКорректировки", ДанныеКорректировки);
Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", ВалютаРегламентированногоУчета);
Запрос.УстановитьПараметр("ПервичныйДокумент", Основание);
Запрос.УстановитьПараметр("ВыводитьБазовыеЕдиницыИзмерения", Константы.ВыводитьБазовыеЕдиницыИзмерения.Получить());
Запрос.УстановитьПараметр("ТипыНоменклатурыТовар", УчетНДСУПСлужебный.ТипыНоменклатурыТовар());
Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(&ПервичныйДокумент КАК Документ.ПервичныйДокумент) КАК ДокументРеализации,
| ДанныеКорректировки.СтавкаНДС КАК СтавкаНДС,
| ДанныеКорректировки.СуммаСНДС КАК Сумма,
| ДанныеКорректировки.СуммаНДС КАК СуммаНДС,
| ДанныеКорректировки.Количество КАК Количество,
| ДанныеКорректировки.КоличествоУпаковок КАК КоличествоУпаковок,
| ДанныеКорректировки.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ДанныеКорректировки.Упаковка КАК Упаковка,
| ДанныеКорректировки.Характеристика КАК Характеристика,
| ДанныеКорректировки.НоменклатураНабора КАК НоменклатураНабора,
| ДанныеКорректировки.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ДанныеКорректировки.Серия КАК Серия,
| ДанныеКорректировки.Содержание КАК Содержание,
| ДанныеКорректировки.КодТНВЭД КАК КодТНВЭД,
| ДанныеКорректировки.НомерГТД КАК НомерГТД,
| ДанныеКорректировки.НоменклатураПартнера КАК НоменклатураПартнера,
| ВЫРАЗИТЬ(ДанныеКорректировки.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура
|ПОМЕСТИТЬ вт_ПервичногоДокумента
|ИЗ
| &ДанныеКорректировки КАК ДанныеКорректировки
|;
|
|
|ВЫБРАТЬ
| вт_ПервичногоДокумента.ДокументРеализации КАК ДокументРеализации,
| вт_ПервичногоДокумента.ДокументРеализации.Организация КАК Организация,
| вт_ПервичногоДокумента.ДокументРеализации.Валюта КАК Валюта,
| вт_ПервичногоДокумента.СтавкаНДС КАК СтавкаНДС,
| вт_ПервичногоДокумента.Сумма КАК Сумма,
| вт_ПервичногоДокумента.СуммаНДС КАК СуммаНДС,
| ВЫБОР КОГДА вт_ПервичногоДокумента.ДокументРеализации.Валюта = &ВалютаРегламентированногоУчета
| ИЛИ вт_ПервичногоДокумента.ДокументРеализации.СуммаДокумента = 0 ТОГДА
| вт_ПервичногоДокумента.Сумма
| ИНАЧЕ
| вт_ПервичногоДокумента.Сумма *
| ВЫРАЗИТЬ(вт_ПервичногоДокумента.ДокументРеализации.СуммаРегл / вт_ПервичногоДокумента.ДокументРеализации.СуммаДокумента КАК ЧИСЛО(10, 4))
| КОНЕЦ КАК СуммаРегл,
| ВЫБОР КОГДА вт_ПервичногоДокумента.ДокументРеализации.Валюта = &ВалютаРегламентированногоУчета
| ИЛИ вт_ПервичногоДокумента.ДокументРеализации.СуммаДокумента = 0 ТОГДА
| вт_ПервичногоДокумента.СуммаНДС
| ИНАЧЕ
| вт_ПервичногоДокумента.СуммаНДС *
| ВЫРАЗИТЬ(вт_ПервичногоДокумента.ДокументРеализации.СуммаРегл / вт_ПервичногоДокумента.ДокументРеализации.СуммаДокумента КАК ЧИСЛО(10, 4))
| КОНЕЦ КАК СуммаНДСРегл,
| ВЫБОР
| КОГДА &ВыводитьБазовыеЕдиницыИзмерения
| ТОГДА вт_ПервичногоДокумента.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ &ТекстЗапросаЕдиницаИзмерения
| КОНЕЦ КАК ЕдиницаИзмерения,
| вт_ПервичногоДокумента.Номенклатура КАК Номенклатура,
| вт_ПервичногоДокумента.Характеристика КАК Характеристика,
| вт_ПервичногоДокумента.НоменклатураНабора КАК НоменклатураНабора,
| вт_ПервичногоДокумента.ХарактеристикаНабора КАК ХарактеристикаНабора,
| вт_ПервичногоДокумента.Содержание КАК Содержание,
| вт_ПервичногоДокумента.КодТНВЭД КАК КодТНВЭД,
| вт_ПервичногоДокумента.НомерГТД КАК НомерГТД,
| ВЫБОР
| КОГДА &ВыводитьБазовыеЕдиницыИзмерения ИЛИ вт_ПервичногоДокумента.КоличествоУпаковок = 0
| ТОГДА вт_ПервичногоДокумента.Количество
| ИНАЧЕ вт_ПервичногоДокумента.КоличествоУпаковок
| КОНЕЦ КАК Количество,
| вт_ПервичногоДокумента.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| вт_ПервичногоДокумента.Серия КАК Серия,
| вт_ПервичногоДокумента.НоменклатураПартнера КАК НоменклатураПартнера,
| ВЫБОР
| КОГДА СпрНоменклатура.ТипНоменклатуры ЕСТЬ NULL
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ПустаяСсылка)
| КОГДА ЕСТЬNULL(СпрНоменклатура.ТипНоменклатуры, НЕОПРЕДЕЛЕНО) В (&ТипыНоменклатурыТовар)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| КОГДА (ЕСТЬNULL(ХарактеристикиНоменклатуры.Принципал, СпрНоменклатура.Принципал) = НЕОПРЕДЕЛЕНО
| ИЛИ ЕСТЬNULL(ХарактеристикиНоменклатуры.Принципал, СпрНоменклатура.Принципал) = вт_ПервичногоДокумента.ДокументРеализации.Организация) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Услуга)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.АгентскаяУслуга)
| КОНЕЦ КАК ТипЗапасов,
| СФ.Ссылка КАК ИсходныйСчетФактура,
| 0 КАК НомерСтрокиПриПечати,
| НЕОПРЕДЕЛЕНО КАК СчетФактураПолученныйОтПродавца
|ИЗ
| вт_ПервичногоДокумента КАК вт_ПервичногоДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СФ
| ПО вт_ПервичногоДокумента.ДокументРеализации = СФ.ДокументОснование
| И (СФ.Ссылка.Проведен)
| И (СФ.НомерСтроки = 1)
| ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.Номенклатура КАК СпрНоменклатура
| ПО
| вт_ПервичногоДокумента.Номенклатура = СпрНоменклатура.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
| ПО
| вт_ПервичногоДокумента.Характеристика = ХарактеристикиНоменклатуры.Ссылка
|";
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"&ТекстЗапросаЕдиницаИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Ссылка",
"вт_ПервичногоДокумента.Упаковка",
"вт_ПервичногоДокумента.Номенклатура"));
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Запрос.Выполнить().Выгрузить(), ТаблицаТоваров);
ИначеЕсли ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Основание, "ТипПервичногоДокумента") = Перечисления.ТипыПервичныхДокументов.ОтгрузкаТоваровКлиенту Тогда
РеквизитыПервичногоДокумента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Основание, "Организация,Валюта,СуммаДокумента,СуммаРегл");
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(
РеквизитыПервичногоДокумента.Организация);
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ПервичныйДокумент", Основание);
Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", ВалютаРегламентированногоУчета);
Запрос.УстановитьПараметр("ВыводитьБазовыеЕдиницыИзмерения", Константы.ВыводитьБазовыеЕдиницыИзмерения.Получить());
Запрос.УстановитьПараметр("ТипыНоменклатурыТовар", УчетНДСУПСлужебный.ТипыНоменклатурыТовар());
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ТаблицаРегистра.Регистратор КАК ДокументВводаОстатков
|ПОМЕСТИТЬ втДокументыВводаОстатков
|ИЗ
| РегистрНакопления.РаспоряженияНаОтгрузкуИВозврат КАК ТаблицаРегистра
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВводОстатковТоваров КАК Операция
| ПО ТаблицаРегистра.Регистратор = Операция.Ссылка
|ГДЕ
| ТаблицаРегистра.Распоряжение = &ПервичныйДокумент
| И НЕ Операция.Исправление
|;
|
|
|ВЫБРАТЬ
| ВЫРАЗИТЬ(&ПервичныйДокумент КАК Документ.ПервичныйДокумент) КАК ДокументРеализации,
| ВЫРАЗИТЬ(&ПервичныйДокумент КАК Документ.ПервичныйДокумент) КАК Распоряжение,
| ВводОстатковТоваровТовары.Номенклатура КАК Номенклатура,
| ВводОстатковТоваровТовары.Характеристика КАК Характеристика,
| НЕОПРЕДЕЛЕНО КАК НоменклатураНабора,
| НЕОПРЕДЕЛЕНО КАК ХарактеристикаНабора,
| НЕОПРЕДЕЛЕНО КАК НоменклатураПартнера,
| ВводОстатковТоваровТовары.Серия КАК Серия,
| ВводОстатковТоваровТовары.СтавкаНДС КАК СтавкаНДС,
| ВводОстатковТоваровТовары.Упаковка КАК Упаковка,
| ВводОстатковТоваровТовары.НомерГТД КАК НомерГТД,
| НЕОПРЕДЕЛЕНО КАК КодТНВЭД,
| ВводОстатковТоваровТовары.КодСтроки КАК КодСтроки,
| """" КАК Содержание,
| ВводОстатковТоваровТовары.Количество КАК Количество,
| ВводОстатковТоваровТовары.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВводОстатковТоваровТовары.СуммаСНДС КАК Сумма,
| ВводОстатковТоваровТовары.СуммаНДС КАК СуммаНДС
|ПОМЕСТИТЬ вт_ПервичногоДокумента
|ИЗ
| Документ.ВводОстатковТоваров.Товары КАК ВводОстатковТоваровТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втДокументыВводаОстатков КАК втДокументыВводаОстатков
| ПО ВводОстатковТоваровТовары.Ссылка = втДокументыВводаОстатков.ДокументВводаОстатков
|;
|
|
|ВЫБРАТЬ
| вт_ПервичногоДокумента.ДокументРеализации КАК ДокументРеализации,
| вт_ПервичногоДокумента.ДокументРеализации.Организация КАК Организация,
| вт_ПервичногоДокумента.ДокументРеализации.Валюта КАК Валюта,
| вт_ПервичногоДокумента.СтавкаНДС КАК СтавкаНДС,
| вт_ПервичногоДокумента.Сумма КАК Сумма,
| вт_ПервичногоДокумента.СуммаНДС КАК СуммаНДС,
| ВЫБОР КОГДА вт_ПервичногоДокумента.ДокументРеализации.Валюта = &ВалютаРегламентированногоУчета
| ИЛИ вт_ПервичногоДокумента.ДокументРеализации.СуммаДокумента = 0 ТОГДА
| вт_ПервичногоДокумента.Сумма
| ИНАЧЕ
| вт_ПервичногоДокумента.Сумма *
| ВЫРАЗИТЬ(вт_ПервичногоДокумента.ДокументРеализации.СуммаРегл / вт_ПервичногоДокумента.ДокументРеализации.СуммаДокумента КАК ЧИСЛО(10, 4))
| КОНЕЦ КАК СуммаРегл,
| ВЫБОР КОГДА вт_ПервичногоДокумента.ДокументРеализации.Валюта = &ВалютаРегламентированногоУчета
| ИЛИ вт_ПервичногоДокумента.ДокументРеализации.СуммаДокумента = 0 ТОГДА
| вт_ПервичногоДокумента.СуммаНДС
| ИНАЧЕ
| вт_ПервичногоДокумента.СуммаНДС *
| ВЫРАЗИТЬ(вт_ПервичногоДокумента.ДокументРеализации.СуммаРегл / вт_ПервичногоДокумента.ДокументРеализации.СуммаДокумента КАК ЧИСЛО(10, 4))
| КОНЕЦ КАК СуммаНДСРегл,
| ВЫБОР
| КОГДА &ВыводитьБазовыеЕдиницыИзмерения
| ТОГДА вт_ПервичногоДокумента.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ &ТекстЗапросаЕдиницаИзмерения
| КОНЕЦ КАК ЕдиницаИзмерения,
| вт_ПервичногоДокумента.Номенклатура КАК Номенклатура,
| вт_ПервичногоДокумента.Характеристика КАК Характеристика,
| вт_ПервичногоДокумента.НоменклатураНабора КАК НоменклатураНабора,
| вт_ПервичногоДокумента.ХарактеристикаНабора КАК ХарактеристикаНабора,
| вт_ПервичногоДокумента.Содержание КАК Содержание,
| вт_ПервичногоДокумента.КодТНВЭД КАК КодТНВЭД,
| вт_ПервичногоДокумента.НомерГТД КАК НомерГТД,
| вт_ПервичногоДокумента.Количество КАК Количество,
| вт_ПервичногоДокумента.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| вт_ПервичногоДокумента.Серия КАК Серия,
| вт_ПервичногоДокумента.НоменклатураПартнера КАК НоменклатураПартнера,
| ВЫБОР
| КОГДА СпрНоменклатура.ТипНоменклатуры ЕСТЬ NULL
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ПустаяСсылка)
| КОГДА ЕСТЬNULL(СпрНоменклатура.ТипНоменклатуры, НЕОПРЕДЕЛЕНО) В (&ТипыНоменклатурыТовар)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| КОГДА (ЕСТЬNULL(ХарактеристикиНоменклатуры.Принципал, СпрНоменклатура.Принципал) = НЕОПРЕДЕЛЕНО
| ИЛИ ЕСТЬNULL(ХарактеристикиНоменклатуры.Принципал, СпрНоменклатура.Принципал) = вт_ПервичногоДокумента.ДокументРеализации.Организация) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Услуга)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.АгентскаяУслуга)
| КОНЕЦ КАК ТипЗапасов,
| СФ.Ссылка КАК ИсходныйСчетФактура,
| вт_ПервичногоДокумента.Распоряжение КАК Распоряжение,
| вт_ПервичногоДокумента.КодСтроки КАК КодСтроки,
| 0 КАК НомерСтрокиПриПечати,
| НЕОПРЕДЕЛЕНО КАК СчетФактураПолученныйОтПродавца
|ИЗ
| вт_ПервичногоДокумента КАК вт_ПервичногоДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СФ
| ПО вт_ПервичногоДокумента.ДокументРеализации = СФ.ДокументОснование
| И (СФ.Ссылка.Проведен)
| И (СФ.НомерСтроки = 1)
| ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.Номенклатура КАК СпрНоменклатура
| ПО
| вт_ПервичногоДокумента.Номенклатура = СпрНоменклатура.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
| ПО
| вт_ПервичногоДокумента.Характеристика = ХарактеристикиНоменклатуры.Ссылка
|";
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"&ТекстЗапросаЕдиницаИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Ссылка",
"вт_ПервичногоДокумента.Упаковка",
"вт_ПервичногоДокумента.Номенклатура"));
Если Не ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Истина);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Запрос.Выполнить().Выгрузить(), ТаблицаТоваров);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Иначе
УстановитьПривилегированныйРежим(Истина);
ТаблицыДляДвижений = ПроведениеДокументов.ДанныеДокументаДляПроведения(Основание, ИмяТаблицыСФ);
УстановитьПривилегированныйРежим(Ложь);
Если ТаблицыДляДвижений.Свойство("Таблица" + ИмяТаблицыСФ) Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицыДляДвижений["Таблица" + ИмяТаблицыСФ], ТаблицаТоваров);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТоваров.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваров.НомерСтрокиПриПечати КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваров.Содержание КАК Содержание,
| ТаблицаТоваров.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.КодСтроки КАК КодСтроки,
| ТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.НомерСтрокиПриПечати КАК НомерСтрокиПриПечати,
| ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера,
|
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВЫБОР
| КОГДА &ВалютаСчетаФактуры = ТаблицаТоваров.Валюта
| ТОГДА ТаблицаТоваров.Сумма
| ИНАЧЕ ТаблицаТоваров.СуммаРегл
| КОНЕЦ КАК Сумма,
| ТаблицаТоваров.Сумма КАК СуммаБезНДСВал,
| ВЫБОР
| КОГДА &ВалютаСчетаФактуры = ТаблицаТоваров.Валюта
| ТОГДА ТаблицаТоваров.СуммаНДС
| ИНАЧЕ ТаблицаТоваров.СуммаНДСРегл
| КОНЕЦ КАК СуммаНДС,
| ТаблицаТоваров.СчетФактураПолученныйОтПродавца,
| ТаблицаТоваров.ДокументРеализации,
| ВЫБОР
| КОГДА &НачислениеНДСПриОтгрузке
| ТОГДА ТаблицаТоваров.Распоряжение
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Распоряжение
|
|ИЗ
| &ТаблицаТоваров КАК ТаблицаТоваров
|";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ПОМЕСТИТЬ", "ПОМЕСТИТЬ " + ИмяВременнойТаблицы);
Если ДополнительныеПараметры.ЭтоПеревыставление Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//УСЛОВИЕ","
|ГДЕ
| ТаблицаТоваров.СчетФактураПолученныйОтПродавца В (&СчетаФактурыПолученные)");
Запрос.УстановитьПараметр("СчетаФактурыПолученные", ДополнительныеПараметры.СчетаФактурыПолученные);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Запрос.Параметры, ДополнительныеПараметры, Истина);
ТаблицаТоваров.Сортировать("ИсходныйСчетФактура,ДокументРеализации,НомерСтроки");
ГруппировкиПечати = ГруппировкиПечатиСчетаФактуры();
ГруппировкиПечати = ГруппировкиПечати + ",ИсходныйСчетФактура";
ИсходныеСФ = ТаблицаТоваров.ВыгрузитьКолонку("ИсходныйСчетФактура");
ИсходныеСФ = ОбщегоНазначенияУТ.УдалитьПовторяющиесяЭлементыМассива(ИсходныеСФ);
Если ДополнительныеПараметры.РеализацияЧерезКомиссионера Тогда
ГруппировкиПечати = ГруппировкиПечати + ",ДокументРеализации";
КонецЕсли;
ВыводитьСерии = Константы.ВыводитьСерииВПечатныхФормах.Получить();
Если ВыводитьСерии
И Не ДополнительныеПараметры.РеализацияЧерезКомиссионера
И ТипЗнч(ДополнительныеПараметры.ДокументОснование) = Тип("ДокументСсылка.ВозвратТоваровОтКлиента") Тогда
Склад = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДополнительныеПараметры.ДокументОснование, "Склад");
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(ДополнительныеПараметры.ДокументОснование, Документы.ВозвратТоваровОтКлиента);
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.СчетФактураВыданный";
Выборка = НоменклатураСервер.ВыборкаИзЗапросаРасчетаСтатусовУказанияСерий(ПараметрыУказанияСерий,
ТаблицаТоваров,
ТаблицаТоваров,
Склад);
Пока Выборка.Следующий() Цикл
СтрТабл = ТаблицаТоваров.Найти(Выборка.НомерСтроки, "НомерСтроки");
Если СтрТабл.Серия <> Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда
Если ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Количество() = 0 Тогда
Если Выборка.СтатусУказанияСерий = 0 Тогда
СтрТабл.Серия = Справочники.СерииНоменклатуры.ПустаяСсылка();
КонецЕсли;
Иначе
УдалятьСерию = Истина;
Для Каждого ИмяПоляСтатус Из ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий Цикл
Если Выборка[ИмяПоляСтатус] <> 0 Тогда
УдалятьСерию = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если УдалятьСерию Тогда
СтрТабл.Серия = Справочники.СерииНоменклатуры.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Для Каждого ИсходныйСФ Из ИсходныеСФ Цикл
ТЧСвернуто = ТаблицаТоваров.Скопировать(Новый Структура("ИсходныйСчетФактура",ИсходныйСФ),ГруппировкиПечати);
ТЧСвернуто.Свернуть(ГруппировкиПечати);
Для Каждого СтрокаПечати Из ТЧСвернуто Цикл
СтруктураОтбора = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтрокаПечати);
СтрокиТоваров = ТаблицаТоваров.НайтиСтроки(СтруктураОтбора);
Для Каждого СтрокаТоваров Из СтрокиТоваров Цикл
СтрокаТоваров.НомерСтрокиПриПечати = ТЧСвернуто.Индекс(СтрокаПечати)+1;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Запрос.УстановитьПараметр("ТаблицаТоваров", ТаблицаТоваров);
Запрос.Выполнить();
Если Не ВыводитьСерии Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТоваров.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваров.НомерСтрокиПриПечати КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваров.Содержание КАК Содержание,
| ТаблицаТоваров.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.КодСтроки КАК КодСтроки,
| ТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.НомерСтрокиПриПечати КАК НомерСтрокиПриПечати,
| ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера,
|
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.Сумма КАК Сумма,
| ТаблицаТоваров.СуммаБезНДСВал КАК СуммаБезНДСВал,
| ТаблицаТоваров.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваров.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваров.ДокументРеализации КАК ДокументРеализации,
| ТаблицаТоваров.Распоряжение КАК Распоряжение
|
|ИЗ
| &ТаблицаТоваров КАК ТаблицаТоваров
|
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваров.НомерСтрокиПриПечати КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваров.Содержание КАК Содержание,
| ТаблицаТоваров.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.КодСтроки КАК КодСтроки,
| ТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.НомерСтрокиПриПечати КАК НомерСтрокиПриПечати,
| ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера,
|
| СУММА(ТаблицаТоваров.Количество) КАК Количество,
| СУММА(ТаблицаТоваров.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| СУММА(ТаблицаТоваров.Сумма) КАК Сумма,
| СУММА(ТаблицаТоваров.СуммаБезНДСВал) КАК СуммаБезНДСВал,
| СУММА(ТаблицаТоваров.СуммаНДС) КАК СуммаНДС,
| ТаблицаТоваров.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваров.ДокументРеализации КАК ДокументРеализации,
| ТаблицаТоваров.Распоряжение КАК Распоряжение
|
|ИЗ
| &ТаблицаТоваровБезГруппировки КАК ТаблицаТоваров
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.ИсходныйСчетФактура,
| ТаблицаТоваров.НомерСтрокиПриПечати,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.НоменклатураПартнера,
| ТаблицаТоваров.НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора,
| ТаблицаТоваров.Содержание,
| ТаблицаТоваров.ТипЗапасов,
| ТаблицаТоваров.КодТНВЭД,
| ТаблицаТоваров.НомерГТД,
| ТаблицаТоваров.КодСтроки,
| ТаблицаТоваров.ЕдиницаИзмерения,
| ТаблицаТоваров.СтавкаНДС,
| ТаблицаТоваров.НомерСтрокиПриПечати,
| ТаблицаТоваров.НоменклатураПартнера,
| ТаблицаТоваров.СчетФактураПолученныйОтПродавца,
| ТаблицаТоваров.ДокументРеализации,
| ТаблицаТоваров.Распоряжение
|
|";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ПОМЕСТИТЬБЕЗГРУППИРОВКИ", "ПОМЕСТИТЬ " + ИмяВременнойТаблицы + "БезГруппировки");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ПОМЕСТИТЬ", "ПОМЕСТИТЬ " + ИмяВременнойТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаТоваров", ИмяВременнойТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаТоваровБезГруппировки", ИмяВременнойТаблицы + "БезГруппировки");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//УНИЧТОЖИТЬ", ";
|
|//////////////////////////////////////////////////////
|УНИЧТОЖИТЬ " + ИмяВременнойТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//УНИЧТОЖИТЬ", ";
|
|//////////////////////////////////////////////////////
|УНИЧТОЖИТЬ " + ИмяВременнойТаблицы + "БезГруппировки");
Запрос.Выполнить();
КонецЕсли;
КонецПроцедуры
Процедура ПоместитьТаблицуТоваровСчетовФактур(МассивСчетовФактур, МенеджерВременныхТаблиц, ИмяВременнойТаблицы, ДополнительныеПараметры)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
| СчетФактураВыданныйТовары.Ссылка КАК ТекущийСчетФактура,
| ВЫБОР
| КОГДА НЕ СчетФактураВыданныйТовары.Ссылка.Корректировочный
| И НЕ СчетФактураВыданныйТовары.Ссылка.Исправление
| И СчетФактураВыданныйТовары.Ссылка.НачислениеНДСПриОтгрузке
| ИЛИ СчетФактураВыданныйТовары.ПредыдущийСчетФактура = ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка)
| ТОГДА СчетФактураВыданныйТовары.Ссылка
| ИНАЧЕ
| СчетФактураВыданныйТовары.ПредыдущийСчетФактура
| КОНЕЦ КАК ПредыдущийСчетФактура,
|
| ВЫБОР КОГДА &РеализацияЧерезКомиссионера
| ТОГДА ЕСТЬNULL(ЦепочкиТоваровСФ.ДокументРеализации, НЕОПРЕДЕЛЕНО)
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДокументРеализации,
| СчетФактураВыданныйТовары.Распоряжение КАК Распоряжение,
|
| ВЫБОР КОГДА СчетФактураВыданныйТовары.Ссылка.Корректировочный
| И &ЭтоИсправление ТОГДА
| СчетФактураВыданныйТовары.НомерСтрокиИсходногоСФ
| ИНАЧЕ
| СчетФактураВыданныйТовары.НомерСтрокиПриПечати
| КОНЕЦ КАК НомерСтроки,
| ВЫБОР
| КОГДА НЕ СчетФактураВыданныйТовары.Ссылка.Корректировочный
| И НЕ СчетФактураВыданныйТовары.Ссылка.Исправление
| И СчетФактураВыданныйТовары.Ссылка.НачислениеНДСПриОтгрузке
| ТОГДА СчетФактураВыданныйТовары.Ссылка
| КОГДА СчетФактураВыданныйТовары.ИсходныйСчетФактура.Исправление
| ТОГДА СчетФактураВыданныйТовары.ИсходныйСчетФактура.СчетФактураОснование
| КОГДА &ЭтоПеревыставление И СчетФактураВыданныйТовары.ИсходныйСчетФактура = ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка)
| ТОГДА СчетФактураВыданныйТовары.Ссылка
| ИНАЧЕ СчетФактураВыданныйТовары.ИсходныйСчетФактура
| КОНЕЦ КАК ИсходныйСчетФактура,
| СчетФактураВыданныйТовары.Номенклатура КАК Номенклатура,
| СчетФактураВыданныйТовары.Характеристика КАК Характеристика,
| СчетФактураВыданныйТовары.Серия КАК Серия,
| СчетФактураВыданныйТовары.НоменклатураПартнера КАК НоменклатураПартнера,
| СчетФактураВыданныйТовары.НоменклатураНабора КАК НоменклатураНабора,
| СчетФактураВыданныйТовары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| СчетФактураВыданныйТовары.Содержание КАК Содержание,
| СчетФактураВыданныйТовары.ТипЗапасов КАК ТипЗапасов,
| СчетФактураВыданныйТовары.КодТНВЭД КАК КодТНВЭД,
| СчетФактураВыданныйТовары.НомерГТД КАК НомерГТД,
| СчетФактураВыданныйТовары.КодСтроки КАК КодСтроки,
| СчетФактураВыданныйТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| СчетФактураВыданныйТовары.СтавкаНДС КАК СтавкаНДС,
|
| СчетФактураВыданныйТовары.Количество КАК Количество,
| СчетФактураВыданныйТовары.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| СчетФактураВыданныйТовары.Сумма КАК Сумма,
| СчетФактураВыданныйТовары.СуммаНДС КАК СуммаНДС,
| СчетФактураВыданныйТовары.СуммаБезНДСВал КАК СуммаБезНДСВал,
|
| СчетФактураВыданныйТовары.КоличествоУменьшение КАК КоличествоУменьшение,
| СчетФактураВыданныйТовары.КоличествоУвеличение КАК КоличествоУвеличение,
| СчетФактураВыданныйТовары.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение,
| СчетФактураВыданныйТовары.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение,
| СчетФактураВыданныйТовары.СуммаУменьшение КАК СуммаУменьшение,
| СчетФактураВыданныйТовары.СуммаУвеличение КАК СуммаУвеличение,
| СчетФактураВыданныйТовары.СуммаНДСУменьшение КАК СуммаНДСУменьшение,
| СчетФактураВыданныйТовары.СуммаНДСУвеличение КАК СуммаНДСУвеличение,
| СчетФактураВыданныйТовары.СуммаБезНДСВалУменьшение КАК СуммаБезНДСВалУменьшение,
| СчетФактураВыданныйТовары.СуммаБезНДСВалУвеличение КАК СуммаБезНДСВалУвеличение,
| СчетФактураВыданныйТовары.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца
|ПОМЕСТИТЬ вт_ТаблицаТоваровСчетовФактур
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК СчетФактураВыданныйТовары
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТаблицаТоваровПредварительная КАК ЦепочкиТоваровСФ
| ПО СчетФактураВыданныйТовары.Ссылка = ЦепочкиТоваровСФ.ПредыдущийСчетФактура
| И (СчетФактураВыданныйТовары.ИсходныйСчетФактура = ЦепочкиТоваровСФ.ИсходныйСчетФактура
| ИЛИ СчетФактураВыданныйТовары.Ссылка = ЦепочкиТоваровСФ.ИсходныйСчетФактура)
| И СчетФактураВыданныйТовары.Номенклатура = ЦепочкиТоваровСФ.Номенклатура
| И СчетФактураВыданныйТовары.Характеристика = ЦепочкиТоваровСФ.Характеристика
| И СчетФактураВыданныйТовары.Серия = ЦепочкиТоваровСФ.Серия
| И СчетФактураВыданныйТовары.НоменклатураПартнера = ЦепочкиТоваровСФ.НоменклатураПартнера
| И СчетФактураВыданныйТовары.НоменклатураНабора = ЦепочкиТоваровСФ.НоменклатураНабора
| И СчетФактураВыданныйТовары.ХарактеристикаНабора = ЦепочкиТоваровСФ.ХарактеристикаНабора
| И СчетФактураВыданныйТовары.Содержание = ЦепочкиТоваровСФ.Содержание
| И СчетФактураВыданныйТовары.ТипЗапасов = ЦепочкиТоваровСФ.ТипЗапасов
| И СчетФактураВыданныйТовары.КодТНВЭД = ЦепочкиТоваровСФ.КодТНВЭД
| И СчетФактураВыданныйТовары.НомерГТД = ЦепочкиТоваровСФ.НомерГТД
| И СчетФактураВыданныйТовары.КодСтроки = ЦепочкиТоваровСФ.КодСтроки
| И СчетФактураВыданныйТовары.ЕдиницаИзмерения = ЦепочкиТоваровСФ.ЕдиницаИзмерения
| И СчетФактураВыданныйТовары.СтавкаНДС = ЦепочкиТоваровСФ.СтавкаНДС
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданныйДокумент
| ПО СчетФактураВыданныйТовары.Ссылка = СчетФактураВыданныйДокумент.Ссылка
|
|ГДЕ
| СчетФактураВыданныйТовары.Ссылка В(&Ссылка)
|
|
| И (НЕ &ЭтоКорректировочный ИЛИ НЕ ЦепочкиТоваровСФ.ПредыдущийСчетФактура ЕСТЬ NULL)
|;
|
|
|
|ВЫБРАТЬ
| ТаблицаТоваровСФ.ТекущийСчетФактура КАК ТекущийСчетФактура,
| ТаблицаТоваровСФ.ПредыдущийСчетФактура КАК ПредыдущийСчетФактура,
| ВЫБОР КОГДА &РеализацияЧерезКомиссионера
| ТОГДА ТаблицаТоваровСФ.ДокументРеализации
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДокументРеализации,
| ТаблицаТоваровСФ.Распоряжение КАК Распоряжение,
| ТаблицаТоваровСФ.НомерСтроки КАК НомерСтроки,
|
| ТаблицаТоваровСФ.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваровСФ.Номенклатура КАК Номенклатура,
| ТаблицаТоваровСФ.Характеристика КАК Характеристика,
| ТаблицаТоваровСФ.Серия КАК Серия,
| ТаблицаТоваровСФ.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваровСФ.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровСФ.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровСФ.Содержание КАК Содержание,
| ТаблицаТоваровСФ.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровСФ.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровСФ.НомерГТД КАК НомерГТД,
| ТаблицаТоваровСФ.КодСтроки КАК КодСтроки,
| ТаблицаТоваровСФ.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровСФ.СтавкаНДС КАК СтавкаНДС,
|
| ТаблицаТоваровСФ.Количество КАК Количество,
| ТаблицаТоваровСФ.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваровСФ.Сумма КАК Сумма,
| ТаблицаТоваровСФ.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваровСФ.СуммаБезНДСВал КАК СуммаБезНДСВал,
|
| ТаблицаТоваровСФ.КоличествоУменьшение КАК КоличествоУменьшение,
| ТаблицаТоваровСФ.КоличествоУвеличение КАК КоличествоУвеличение,
| ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение,
| ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение,
| ТаблицаТоваровСФ.СуммаУменьшение КАК СуммаУменьшение,
| ТаблицаТоваровСФ.СуммаУвеличение КАК СуммаУвеличение,
| ТаблицаТоваровСФ.СуммаНДСУменьшение КАК СуммаНДСУменьшение,
| ТаблицаТоваровСФ.СуммаНДСУвеличение КАК СуммаНДСУвеличение,
| ТаблицаТоваровСФ.СуммаБезНДСВалУменьшение КАК СуммаБезНДСВалУменьшение,
| ТаблицаТоваровСФ.СуммаБезНДСВалУвеличение КАК СуммаБезНДСВалУвеличение,
| ТаблицаТоваровСФ.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца
|
|ИЗ
| вт_ТаблицаТоваровСчетовФактур КАК ТаблицаТоваровСФ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|
|
|
|
|ВЫБРАТЬ
| ТаблицаТоваровТД.ИсходныйСчетФактура КАК ТекущийСчетФактура,
| ТаблицаТоваровТД.ИсходныйСчетФактура КАК ПредыдущийСчетФактура,
| ВЫБОР КОГДА &РеализацияЧерезКомиссионера
| ТОГДА ТаблицаТоваровТД.ДокументРеализации
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДокументРеализации,
| ТаблицаТоваровТД.Распоряжение КАК Распоряжение,
| ТаблицаТоваровТД.НомерСтроки КАК НомерСтроки,
|
| ТаблицаТоваровТД.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваровТД.Номенклатура КАК Номенклатура,
| ТаблицаТоваровТД.Характеристика КАК Характеристика,
| ТаблицаТоваровТД.Серия КАК Серия,
| ТаблицаТоваровТД.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваровТД.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровТД.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровТД.Содержание КАК Содержание,
| ТаблицаТоваровТД.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровТД.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровТД.НомерГТД КАК НомерГТД,
| ТаблицаТоваровТД.КодСтроки КАК КодСтроки,
| ТаблицаТоваровТД.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровТД.СтавкаНДС КАК СтавкаНДС,
|
| СУММА(ТаблицаТоваровТД.Количество) КАК Количество,
| СУММА(ТаблицаТоваровТД.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| СУММА(ТаблицаТоваровТД.Сумма) КАК Сумма,
| СУММА(ТаблицаТоваровТД.СуммаНДС) КАК СуммаНДС,
| СУММА(ТаблицаТоваровТД.СуммаБезНДСВал) КАК СуммаБезНДСВал,
|
| 0 КАК КоличествоУменьшение,
| 0 КАК КоличествоУвеличение,
| 0 КАК КоличествоПоРНПТУменьшение,
| 0 КАК КоличествоПоРНПТУвеличение,
| 0 КАК СуммаУменьшение,
| 0 КАК СуммаУвеличение,
| 0 КАК СуммаНДСУменьшение,
| 0 КАК СуммаНДСУвеличение,
| 0 КАК СуммаБезНДСВалУменьшение,
| 0 КАК СуммаБезНДСВалУвеличение,
| ТаблицаТоваровТД.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца
|ИЗ
| вт_ТаблицаТоваровИсходныхТорговыхДокументов КАК ТаблицаТоваровТД
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТаблицаТоваровСчетовФактур КАК ТаблицаТоваровСФ
| ПО ТаблицаТоваровТД.ИсходныйСчетФактура = ТаблицаТоваровСФ.ИсходныйСчетФактура
| И ТаблицаТоваровТД.Номенклатура = ТаблицаТоваровСФ.Номенклатура
| И ТаблицаТоваровТД.Характеристика = ТаблицаТоваровСФ.Характеристика
| И ТаблицаТоваровТД.Серия = ТаблицаТоваровСФ.Серия
| И ТаблицаТоваровТД.НоменклатураПартнера = ТаблицаТоваровСФ.НоменклатураПартнера
| И ТаблицаТоваровТД.НоменклатураНабора = ТаблицаТоваровСФ.НоменклатураНабора
| И ТаблицаТоваровТД.ХарактеристикаНабора = ТаблицаТоваровСФ.ХарактеристикаНабора
| И ТаблицаТоваровТД.Содержание = ТаблицаТоваровСФ.Содержание
| И ТаблицаТоваровТД.ТипЗапасов = ТаблицаТоваровСФ.ТипЗапасов
| И ТаблицаТоваровТД.КодТНВЭД = ТаблицаТоваровСФ.КодТНВЭД
| И ТаблицаТоваровТД.НомерГТД = ТаблицаТоваровСФ.НомерГТД
| И ТаблицаТоваровТД.КодСтроки = ТаблицаТоваровСФ.КодСтроки
| И ТаблицаТоваровТД.ЕдиницаИзмерения = ТаблицаТоваровСФ.ЕдиницаИзмерения
| И ТаблицаТоваровТД.СтавкаНДС = ТаблицаТоваровСФ.СтавкаНДС
|
|
| И НЕ ТаблицаТоваровСФ.ТекущийСчетФактура.СчетФактураОснование = ТаблицаТоваровСФ.ИсходныйСчетФактура
|ГДЕ
| ТаблицаТоваровСФ.ИсходныйСчетФактура ЕСТЬ NULL
| И НЕ &НДССМежценовойРазницы
| И НЕ &НачислениеНДСПриОтгрузке
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваровТД.ИсходныйСчетФактура,
| ВЫБОР КОГДА &РеализацияЧерезКомиссионера
| ТОГДА ТаблицаТоваровТД.ДокументРеализации
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ,
| ТаблицаТоваровТД.Распоряжение,
| ТаблицаТоваровТД.НомерСтроки,
| ТаблицаТоваровТД.Номенклатура,
| ТаблицаТоваровТД.Характеристика,
| ТаблицаТоваровТД.Серия,
| ТаблицаТоваровТД.НоменклатураПартнера,
| ТаблицаТоваровТД.НоменклатураНабора,
| ТаблицаТоваровТД.ХарактеристикаНабора,
| ТаблицаТоваровТД.Содержание,
| ТаблицаТоваровТД.ТипЗапасов,
| ТаблицаТоваровТД.КодТНВЭД,
| ТаблицаТоваровТД.НомерГТД,
| ТаблицаТоваровТД.КодСтроки,
| ТаблицаТоваровТД.ЕдиницаИзмерения,
| ТаблицаТоваровТД.СтавкаНДС,
| ТаблицаТоваровТД.СчетФактураПолученныйОтПродавца
|
|ОБЪЕДИНИТЬ ВСЕ
|
|
|
|
|
|ВЫБРАТЬ
| ТаблицаТоваровТД.ИсходныйСчетФактура КАК ТекущийСчетФактура,
| ТаблицаТоваровТД.ИсходныйСчетФактура КАК ПредыдущийСчетФактура,
| ВЫБОР КОГДА &РеализацияЧерезКомиссионера
| ТОГДА ТаблицаТоваровТД.ДокументРеализации
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДокументРеализации,
| ТаблицаТоваровТД.Распоряжение КАК Распоряжение,
| ТаблицаТоваровТД.НомерСтроки КАК НомерСтроки,
|
| ТаблицаТоваровТД.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваровТД.Номенклатура КАК Номенклатура,
| ТаблицаТоваровТД.Характеристика КАК Характеристика,
| ТаблицаТоваровТД.Серия КАК Серия,
| ТаблицаТоваровТД.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваровТД.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровТД.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровТД.Содержание КАК Содержание,
| ТаблицаТоваровТД.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровТД.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровТД.НомерГТД КАК НомерГТД,
| ТаблицаТоваровТД.КодСтроки КАК КодСтроки,
| ТаблицаТоваровТД.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровТД.СтавкаНДС КАК СтавкаНДС,
|
| СУММА(ТаблицаТоваровТД.Количество) КАК Количество,
| СУММА(ТаблицаТоваровТД.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| СУММА(ТаблицаТоваровТД.Сумма) КАК Сумма,
| СУММА(ТаблицаТоваровТД.СуммаНДС) КАК СуммаНДС,
| СУММА(ТаблицаТоваровТД.СуммаБезНДСВал) КАК СуммаБезНДСВал,
|
| 0 КАК КоличествоУменьшение,
| 0 КАК КоличествоУвеличение,
| 0 КАК КоличествоПоРНПТУменьшение,
| 0 КАК КоличествоПоРНПТУвеличение,
| 0 КАК СуммаУменьшение,
| 0 КАК СуммаУвеличение,
| 0 КАК СуммаНДСУменьшение,
| 0 КАК СуммаНДСУвеличение,
| 0 КАК СуммаБезНДСВалУменьшение,
| 0 КАК СуммаБезНДСВалУвеличение,
| ТаблицаТоваровТД.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца
|ИЗ
| вт_ТаблицаТоваровИсходныхТорговыхДокументов КАК ТаблицаТоваровТД
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТаблицаТоваровСчетовФактур КАК ТаблицаТоваровСФ
| ПО ТаблицаТоваровТД.ИсходныйСчетФактура = ТаблицаТоваровСФ.ИсходныйСчетФактура
| И ТаблицаТоваровТД.Номенклатура = ТаблицаТоваровСФ.Номенклатура
| И ТаблицаТоваровТД.Характеристика = ТаблицаТоваровСФ.Характеристика
| И ТаблицаТоваровТД.Серия = ТаблицаТоваровСФ.Серия
| И ТаблицаТоваровТД.НоменклатураПартнера = ТаблицаТоваровСФ.НоменклатураПартнера
| И ТаблицаТоваровТД.НоменклатураНабора = ТаблицаТоваровСФ.НоменклатураНабора
| И ТаблицаТоваровТД.ХарактеристикаНабора = ТаблицаТоваровСФ.ХарактеристикаНабора
| И ТаблицаТоваровТД.Содержание = ТаблицаТоваровСФ.Содержание
| И ТаблицаТоваровТД.ТипЗапасов = ТаблицаТоваровСФ.ТипЗапасов
| И ТаблицаТоваровТД.КодТНВЭД = ТаблицаТоваровСФ.КодТНВЭД
| И ТаблицаТоваровТД.НомерГТД = ТаблицаТоваровСФ.НомерГТД
| И ТаблицаТоваровТД.КодСтроки = ТаблицаТоваровСФ.КодСтроки
| И ТаблицаТоваровТД.ЕдиницаИзмерения = ТаблицаТоваровСФ.ЕдиницаИзмерения
|
|
| И НЕ ТаблицаТоваровСФ.ТекущийСчетФактура.СчетФактураОснование = ТаблицаТоваровСФ.ИсходныйСчетФактура
|ГДЕ
| ТаблицаТоваровСФ.ИсходныйСчетФактура ЕСТЬ NULL
| И (&НДССМежценовойРазницы ИЛИ &НачислениеНДСПриОтгрузке)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваровТД.ИсходныйСчетФактура,
| ВЫБОР КОГДА &РеализацияЧерезКомиссионера
| ТОГДА ТаблицаТоваровТД.ДокументРеализации
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ,
| ТаблицаТоваровТД.Распоряжение,
| ТаблицаТоваровТД.НомерСтроки,
| ТаблицаТоваровТД.Номенклатура,
| ТаблицаТоваровТД.Характеристика,
| ТаблицаТоваровТД.Серия,
| ТаблицаТоваровТД.НоменклатураПартнера,
| ТаблицаТоваровТД.НоменклатураНабора,
| ТаблицаТоваровТД.ХарактеристикаНабора,
| ТаблицаТоваровТД.Содержание,
| ТаблицаТоваровТД.ТипЗапасов,
| ТаблицаТоваровТД.КодТНВЭД,
| ТаблицаТоваровТД.НомерГТД,
| ТаблицаТоваровТД.КодСтроки,
| ТаблицаТоваровТД.ЕдиницаИзмерения,
| ТаблицаТоваровТД.СтавкаНДС,
| ТаблицаТоваровТД.СчетФактураПолученныйОтПродавца
|";
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Запрос.Параметры, ДополнительныеПараметры, Истина);
Запрос.УстановитьПараметр("Ссылка", МассивСчетовФактур);
ТаблицаТоваровПредыдущихСчетовФактур = Запрос.Выполнить().Выгрузить();
ТаблицаТоваровПредыдущихСчетовФактур.Сортировать("ИсходныйСчетФактура, НомерСтроки");
Запрос.УстановитьПараметр("ТаблицаТоваровПредыдущихСчетовФактур", ТаблицаТоваровПредыдущихСчетовФактур);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТоваровСФ.ТекущийСчетФактура КАК ТекущийСчетФактура,
| ТаблицаТоваровСФ.ПредыдущийСчетФактура КАК ПредыдущийСчетФактура,
| ТаблицаТоваровСФ.ДокументРеализации КАК ДокументРеализации,
| ТаблицаТоваровСФ.Распоряжение КАК Распоряжение,
| ТаблицаТоваровСФ.НомерСтроки КАК НомерСтроки,
|
| ТаблицаТоваровСФ.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваровСФ.Номенклатура КАК Номенклатура,
| ТаблицаТоваровСФ.Характеристика КАК Характеристика,
| ТаблицаТоваровСФ.Серия КАК Серия,
| ТаблицаТоваровСФ.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровСФ.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровСФ.Содержание КАК Содержание,
| ТаблицаТоваровСФ.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровСФ.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровСФ.НомерГТД КАК НомерГТД,
| ТаблицаТоваровСФ.КодСтроки КАК КодСтроки,
| ТаблицаТоваровСФ.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровСФ.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваровСФ.НоменклатураПартнера КАК НоменклатураПартнера,
|
| ТаблицаТоваровСФ.Количество КАК Количество,
| ТаблицаТоваровСФ.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваровСФ.Сумма КАК Сумма,
| ТаблицаТоваровСФ.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваровСФ.СуммаБезНДСВал КАК СуммаБезНДСВал,
|
| ТаблицаТоваровСФ.КоличествоУменьшение КАК КоличествоУменьшение,
| ТаблицаТоваровСФ.КоличествоУвеличение КАК КоличествоУвеличение,
| ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение,
| ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение,
| ТаблицаТоваровСФ.СуммаУменьшение КАК СуммаУменьшение,
| ТаблицаТоваровСФ.СуммаУвеличение КАК СуммаУвеличение,
| ТаблицаТоваровСФ.СуммаНДСУменьшение КАК СуммаНДСУменьшение,
| ТаблицаТоваровСФ.СуммаНДСУвеличение КАК СуммаНДСУвеличение,
| ТаблицаТоваровСФ.СуммаБезНДСВалУменьшение КАК СуммаБезНДСВалУменьшение,
| ТаблицаТоваровСФ.СуммаБезНДСВалУвеличение КАК СуммаБезНДСВалУвеличение,
| ТаблицаТоваровСФ.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца
|
|ИЗ
| &ТаблицаТоваровПредыдущихСчетовФактур КАК ТаблицаТоваровСФ
|";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ПОМЕСТИТЬ", "ПОМЕСТИТЬ " + ИмяВременнойТаблицы);
Запрос.Выполнить();
КонецПроцедуры
Процедура СвернутьТаблицуТоваровТорговыхДокументов(МенеджерВременныхТаблиц, ДополнительныеПараметры)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ЭтоИсправлениеНаОснованииСФ", ДополнительныеПараметры.ЭтоИсправлениеНаОснованииСФ);
Запрос.УстановитьПараметр("ЭтоКорректировкаНаОснованииСФ", ДополнительныеПараметры.ЭтоКорректировкаНаОснованииСФ);
Запрос.УстановитьПараметр("РеализацияЧерезКомиссионера", ДополнительныеПараметры.РеализацияЧерезКомиссионера);
Запрос.УстановитьПараметр("НачислениеНДСПриОтгрузке", ДополнительныеПараметры.НачислениеНДСПриОтгрузке);
Запрос.УстановитьПараметр("ЭтоКорректировочный", ДополнительныеПараметры.ЭтоКорректировочный);
Запрос.УстановитьПараметр("ЭтоИсправление", ДополнительныеПараметры.ЭтоИсправление);
Запрос.УстановитьПараметр("ЭтоИсправлениеОтгрузки", ДополнительныеПараметры.ЭтоИсправлениеОтгрузки);
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ВложенныйЗапрос.ДокументРеализации КАК ДокументРеализации,
| ВложенныйЗапрос.Распоряжение КАК Распоряжение,
| ВложенныйЗапрос.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.Характеристика КАК Характеристика,
| ВложенныйЗапрос.Серия КАК Серия,
| ВложенныйЗапрос.НоменклатураНабора КАК НоменклатураНабора,
| ВложенныйЗапрос.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВложенныйЗапрос.Содержание КАК Содержание,
| ВложенныйЗапрос.ТипЗапасов КАК ТипЗапасов,
| ВложенныйЗапрос.КодТНВЭД КАК КодТНВЭД,
| ВложенныйЗапрос.НомерГТД КАК НомерГТД,
| ВложенныйЗапрос.КодСтроки КАК КодСтроки,
| ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС,
| ВложенныйЗапрос.НоменклатураПартнера КАК НоменклатураПартнера,
|
| МАКСИМУМ(ВложенныйЗапрос.НомерСтрокиПриПечати) КАК НомерСтрокиПриПечати,
| СУММА(ВложенныйЗапрос.Количество) КАК Количество,
| СУММА(ВложенныйЗапрос.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| СУММА(ВложенныйЗапрос.Сумма) КАК Сумма,
| СУММА(ВложенныйЗапрос.СуммаНДС) КАК СуммаНДС,
| СУММА(ВложенныйЗапрос.СуммаБезНДСВал) КАК СуммаБезНДСВал
|ИЗ
| (ВЫБРАТЬ
| ТаблицаТоваровДО.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ВЫБОР КОГДА &РеализацияЧерезКомиссионера
| ТОГДА ТаблицаТоваровДО.ДокументРеализации
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДокументРеализации,
| ТаблицаТоваровДО.Распоряжение КАК Распоряжение,
| ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровДО.Номенклатура КАК Номенклатура,
| ТаблицаТоваровДО.Характеристика КАК Характеристика,
| ТаблицаТоваровДО.Серия КАК Серия,
| ТаблицаТоваровДО.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровДО.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровДО.Содержание КАК Содержание,
| ТаблицаТоваровДО.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровДО.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровДО.НомерГТД КАК НомерГТД,
| ТаблицаТоваровДО.КодСтроки КАК КодСтроки,
| ТаблицаТоваровДО.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровДО.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваровДО.НоменклатураПартнера КАК НоменклатураПартнера,
|
| ТаблицаТоваровДО.НомерСтрокиПриПечати КАК НомерСтрокиПриПечати,
| ТаблицаТоваровДО.Количество КАК Количество,
| ТаблицаТоваровДО.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваровДО.Сумма КАК Сумма,
| ТаблицаТоваровДО.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваровДО.СуммаБезНДСВал КАК СуммаБезНДСВал
| ИЗ
| вт_ТаблицаТоваровДокументовОснованийСИсправлениями КАК ТаблицаТоваровДО
|
| ГДЕ
| НЕ &ЭтоИсправлениеНаОснованииСФ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТоваровДО.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| НЕОПРЕДЕЛЕНО КАК ДокументРеализации,
| ТаблицаТоваровДО.Распоряжение КАК Распоряжение,
| ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровДО.Номенклатура КАК Номенклатура,
| ТаблицаТоваровДО.Характеристика КАК Характеристика,
| ТаблицаТоваровДО.Серия КАК Серия,
| ТаблицаТоваровДО.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровДО.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровДО.Содержание КАК Содержание,
| ТаблицаТоваровДО.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровДО.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровДО.НомерГТД КАК НомерГТД,
| ТаблицаТоваровДО.КодСтроки КАК КодСтроки,
| ТаблицаТоваровДО.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровДО.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваровДО.НоменклатураПартнера КАК НоменклатураПартнера,
|
| ТаблицаТоваровДО.НомерСтрокиПриПечати КАК НомерСтрокиПриПечати,
| -ЕСТЬNULL(ТаблицаТоваровТД.Количество, 0) КАК Количество,
| -ЕСТЬNULL(ТаблицаТоваровТД.КоличествоПоРНПТ, 0) КАК КоличествоПоРНПТ,
| -ЕСТЬNULL(ТаблицаТоваровТД.Сумма, 0) КАК Сумма,
| -ЕСТЬNULL(ТаблицаТоваровТД.СуммаНДС, 0) КАК СуммаНДС,
| -ЕСТЬNULL(ТаблицаТоваровТД.СуммаБезНДСВал, 0) КАК СуммаБезНДСВал
|ИЗ
| вт_ТаблицаТоваровДокументовОснованийСИсправлениями КАК ТаблицаТоваровДО
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТаблицаТоваровИсходныхТорговыхДокументов КАК ТаблицаТоваровТД
| ПО ТаблицаТоваровДО.ИсходныйСчетФактура = ТаблицаТоваровТД.ИсходныйСчетФактура
| И ТаблицаТоваровДО.Номенклатура = ТаблицаТоваровТД.Номенклатура
| И ТаблицаТоваровДО.Характеристика = ТаблицаТоваровТД.Характеристика
| И ТаблицаТоваровДО.Серия = ТаблицаТоваровТД.Серия
| И ТаблицаТоваровДО.НоменклатураПартнера = ТаблицаТоваровТД.НоменклатураПартнера
| И ТаблицаТоваровДО.НоменклатураНабора = ТаблицаТоваровТД.НоменклатураНабора
| И ТаблицаТоваровДО.ХарактеристикаНабора = ТаблицаТоваровТД.ХарактеристикаНабора
| И ТаблицаТоваровДО.Содержание = ТаблицаТоваровТД.Содержание
| И ТаблицаТоваровДО.ТипЗапасов = ТаблицаТоваровТД.ТипЗапасов
| И ТаблицаТоваровДО.КодТНВЭД = ТаблицаТоваровТД.КодТНВЭД
| И ТаблицаТоваровДО.НомерГТД = ТаблицаТоваровТД.НомерГТД
| И ТаблицаТоваровДО.КодСтроки = ТаблицаТоваровТД.КодСтроки
| И ТаблицаТоваровДО.ЕдиницаИзмерения = ТаблицаТоваровТД.ЕдиницаИзмерения
| И ТаблицаТоваровДО.СтавкаНДС = ТаблицаТоваровТД.СтавкаНДС
|ГДЕ
| НЕ &ЭтоИсправлениеНаОснованииСФ
| И &НачислениеНДСПриОтгрузке
| И НЕ &ЭтоИсправлениеОтгрузки
| И &ЭтоКорректировочный) КАК ВложенныйЗапрос
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.ИсходныйСчетФактура,
| ВложенныйЗапрос.ДокументРеализации,
| ВложенныйЗапрос.Распоряжение,
| ВложенныйЗапрос.СчетФактураПолученныйОтПродавца,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.Характеристика,
| ВложенныйЗапрос.Серия,
| ВложенныйЗапрос.НоменклатураНабора,
| ВложенныйЗапрос.ХарактеристикаНабора,
| ВложенныйЗапрос.Содержание,
| ВложенныйЗапрос.ТипЗапасов,
| ВложенныйЗапрос.КодТНВЭД,
| ВложенныйЗапрос.НомерГТД,
| ВложенныйЗапрос.КодСтроки,
| ВложенныйЗапрос.ЕдиницаИзмерения,
| ВложенныйЗапрос.СтавкаНДС,
| ВложенныйЗапрос.НоменклатураПартнера
|
|ИМЕЮЩИЕ
| СУММА(ВложенныйЗапрос.Количество) <> 0
| ИЛИ СУММА(ВложенныйЗапрос.КоличествоПоРНПТ) <> 0
| ИЛИ СУММА(ВложенныйЗапрос.Сумма) <> 0
| ИЛИ СУММА(ВложенныйЗапрос.СуммаНДС) <> 0
| ИЛИ СУММА(ВложенныйЗапрос.СуммаБезНДСВал) <> 0
| ИЛИ &ЭтоКорректировкаНаОснованииСФ
|";
ТаблицаТоваровДокументовОснованийСвернуто = Запрос.Выполнить().Выгрузить();
ТаблицаТоваровДокументовОснованийСвернуто.Сортировать("ИсходныйСчетФактура, НомерСтрокиПриПечати");
Запрос.УстановитьПараметр("ТаблицаТоваровДокументовОснованийСвернуто", ТаблицаТоваровДокументовОснованийСвернуто);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТоваровДО.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваровДО.ДокументРеализации КАК ДокументРеализации,
| ТаблицаТоваровДО.Распоряжение КАК Распоряжение,
| ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровДО.Номенклатура КАК Номенклатура,
| ТаблицаТоваровДО.Характеристика КАК Характеристика,
| ТаблицаТоваровДО.Серия КАК Серия,
| ТаблицаТоваровДО.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровДО.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровДО.Содержание КАК Содержание,
| ТаблицаТоваровДО.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровДО.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровДО.НомерГТД КАК НомерГТД,
| ТаблицаТоваровДО.КодСтроки КАК КодСтроки,
| ТаблицаТоваровДО.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровДО.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваровДО.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваровДО.НомерСтрокиПриПечати КАК НомерСтрокиПриПечати,
| ТаблицаТоваровДО.Количество КАК Количество,
| ТаблицаТоваровДО.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваровДО.Сумма КАК Сумма,
| ТаблицаТоваровДО.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваровДО.СуммаБезНДСВал КАК СуммаБезНДСВал
|ПОМЕСТИТЬ вт_ТаблицаТоваровДокументовОснованийСвернуто
|ИЗ
| &ТаблицаТоваровДокументовОснованийСвернуто КАК ТаблицаТоваровДО
|";
Запрос.Выполнить();
КонецПроцедуры
Функция ТаблицаТоваровИсправление(МенеджерВременныхТаблиц, ДополнительныеПараметры)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("НДССМежценовойРазницы", ДополнительныеПараметры.НДССМежценовойРазницы);
Запрос.УстановитьПараметр("НачислениеНДСПриОтгрузке", ДополнительныеПараметры.НачислениеНДСПриОтгрузке);
Запрос.УстановитьПараметр("РеализацияЧерезКомиссионера", ДополнительныеПараметры.РеализацияЧерезКомиссионера);
Запрос.УстановитьПараметр("ВалютаОснования", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДополнительныеПараметры.ДокументОснование, "Валюта"));
Запрос.Текст =
"// Товары, присутствующие в предыдущем счете-фактуре.
|
|ВЫБРАТЬ
| ЕСТЬNULL(ТаблицаТоваровСФ.ПредыдущийСчетФактура, ТаблицаТоваровДО.ИсходныйСчетФактура) КАК ПредыдущийСчетФактура,
| ЕСТЬNULL(ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца, ТаблицаТоваровСФ.СчетФактураПолученныйОтПродавца) КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровСФ.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваровСФ.НомерСтроки КАК НомерСтрокиИсходногоСФ,
| ТаблицаТоваровСФ.Распоряжение КАК Распоряжение,
| ТаблицаТоваровСФ.Номенклатура КАК Номенклатура,
| ТаблицаТоваровСФ.Характеристика КАК Характеристика,
| ТаблицаТоваровСФ.Серия КАК Серия,
| ТаблицаТоваровСФ.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваровСФ.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровСФ.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровСФ.Содержание КАК Содержание,
| ТаблицаТоваровСФ.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровСФ.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровСФ.НомерГТД КАК НомерГТД,
| ТаблицаТоваровСФ.КодСтроки КАК КодСтроки,
| ТаблицаТоваровСФ.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровСФ.СтавкаНДС КАК СтавкаНДС,
|
| ТаблицаТоваровСФ.Количество + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0) КАК Количество,
| ТаблицаТоваровСФ.КоличествоПоРНПТ + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0) КАК КоличествоПоРНПТ,
| ТаблицаТоваровСФ.Сумма + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0) КАК Сумма,
| ТаблицаТоваровСФ.СуммаНДС + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0) КАК СуммаНДС,
| ТаблицаТоваровСФ.СуммаБезНДСВал + ЕСТЬNULL(ТаблицаТоваровДО.СуммаБезНДСВал, 0) КАК СуммаБезНДСВал,
|
| (ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК КоличествоУменьшение,
| (ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоУвеличение,
| (ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК КоличествоПоРНПТУменьшение,
| (ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПоРНПТУвеличение,
| (ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаУменьшение,
| (ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаУвеличение,
| (ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаНДСУменьшение,
| (ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаНДСУвеличение,
| (ТаблицаТоваровСФ.СуммаБезНДСВалУвеличение - ТаблицаТоваровСФ.СуммаБезНДСВалУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаБезНДСВал, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаБезНДСВалУвеличение - ТаблицаТоваровСФ.СуммаБезНДСВалУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаБезНДСВал, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаБезНДСВалУменьшение,
| (ТаблицаТоваровСФ.СуммаБезНДСВалУвеличение - ТаблицаТоваровСФ.СуммаБезНДСВалУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаБезНДСВал, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаБезНДСВалУвеличение - ТаблицаТоваровСФ.СуммаБезНДСВалУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаБезНДСВал, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДСВалУвеличение
|ИЗ
| вт_ТаблицаТоваровПредыдущихСчетовФактур КАК ТаблицаТоваровСФ
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТаблицаТоваровДокументовОснованийСвернуто КАК ТаблицаТоваровДО
| ПО ТаблицаТоваровСФ.ИсходныйСчетФактура = ТаблицаТоваровДО.ИсходныйСчетФактура
| И ТаблицаТоваровСФ.Номенклатура = ТаблицаТоваровДО.Номенклатура
| И ТаблицаТоваровСФ.Характеристика = ТаблицаТоваровДО.Характеристика
| И ТаблицаТоваровСФ.Серия = ТаблицаТоваровДО.Серия
| И ТаблицаТоваровСФ.НоменклатураПартнера = ТаблицаТоваровДО.НоменклатураПартнера
| И ТаблицаТоваровСФ.НоменклатураНабора = ТаблицаТоваровДО.НоменклатураНабора
| И ТаблицаТоваровСФ.ХарактеристикаНабора = ТаблицаТоваровДО.ХарактеристикаНабора
| И ТаблицаТоваровСФ.Содержание = ТаблицаТоваровДО.Содержание
| И ТаблицаТоваровСФ.ТипЗапасов = ТаблицаТоваровДО.ТипЗапасов
| И ТаблицаТоваровСФ.КодТНВЭД = ТаблицаТоваровДО.КодТНВЭД
| И ТаблицаТоваровСФ.НомерГТД = ТаблицаТоваровДО.НомерГТД
| И ТаблицаТоваровСФ.КодСтроки = ТаблицаТоваровДО.КодСтроки
| И ТаблицаТоваровСФ.Распоряжение = ТаблицаТоваровДО.Распоряжение
| И ТаблицаТоваровСФ.ЕдиницаИзмерения = ТаблицаТоваровДО.ЕдиницаИзмерения
| И ТаблицаТоваровСФ.СтавкаНДС = ТаблицаТоваровДО.СтавкаНДС
|ГДЕ
| (НЕ ТаблицаТоваровСФ.Количество + ТаблицаТоваровСФ.КоличествоУменьшение + ТаблицаТоваровСФ.КоличествоУвеличение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0) = 0
| ИЛИ НЕ ТаблицаТоваровСФ.КоличествоПоРНПТ + ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0) = 0
| ИЛИ НЕ ТаблицаТоваровСФ.Сумма + ТаблицаТоваровСФ.СуммаУменьшение + ТаблицаТоваровСФ.СуммаУвеличение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0) = 0
| ИЛИ НЕ ТаблицаТоваровСФ.СуммаНДС + ТаблицаТоваровСФ.СуммаНДСУменьшение + ТаблицаТоваровСФ.СуммаНДСУвеличение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0) = 0)
| И НЕ &НачислениеНДСПриОтгрузке
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЕСТЬNULL(ТаблицаТоваровСФ.ПредыдущийСчетФактура, ТаблицаТоваровДО.ИсходныйСчетФактура) КАК ПредыдущийСчетФактура,
| ЕСТЬNULL(ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца, ТаблицаТоваровСФ.СчетФактураПолученныйОтПродавца) КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровСФ.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваровСФ.НомерСтроки КАК НомерСтрокиИсходногоСФ,
| ТаблицаТоваровСФ.Распоряжение КАК Распоряжение,
| ТаблицаТоваровСФ.Номенклатура КАК Номенклатура,
| ТаблицаТоваровСФ.Характеристика КАК Характеристика,
| ТаблицаТоваровСФ.Серия КАК Серия,
| ТаблицаТоваровСФ.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваровСФ.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровСФ.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровСФ.Содержание КАК Содержание,
| ТаблицаТоваровСФ.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровСФ.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровСФ.НомерГТД КАК НомерГТД,
| ТаблицаТоваровСФ.КодСтроки КАК КодСтроки,
| ТаблицаТоваровСФ.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровСФ.СтавкаНДС КАК СтавкаНДС,
|
| ТаблицаТоваровСФ.Количество + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0) КАК Количество,
| ТаблицаТоваровСФ.КоличествоПоРНПТ + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0) КАК КоличествоПоРНПТ,
| ВЫБОР
| КОГДА &ВалютаСчетаФактуры = &ВалютаОснования ТОГДА
| ТаблицаТоваровСФ.Сумма + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0)
| ИНАЧЕ
| 0
| КОНЕЦ КАК Сумма,
| ВЫБОР
| КОГДА &ВалютаСчетаФактуры = &ВалютаОснования ТОГДА
| ТаблицаТоваровСФ.СуммаНДС + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0)
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаНДС,
| ТаблицаТоваровСФ.СуммаБезНДСВал + ЕСТЬNULL(ТаблицаТоваровДО.СуммаБезНДСВал, 0) КАК СуммаБезНДСВал,
|
| (ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК КоличествоУменьшение,
| (ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоУвеличение,
| (ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК КоличествоПоРНПТУменьшение,
| (ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПоРНПТУвеличение,
| (ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаУменьшение,
| (ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаУвеличение,
| (ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаНДСУменьшение,
| (ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаНДСУвеличение,
| (ТаблицаТоваровСФ.СуммаБезНДСВалУвеличение - ТаблицаТоваровСФ.СуммаБезНДСВалУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаБезНДСВал, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаБезНДСВалУвеличение - ТаблицаТоваровСФ.СуммаБезНДСВалУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаБезНДСВал, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаБезНДСВалУменьшение,
| (ТаблицаТоваровСФ.СуммаБезНДСВалУвеличение - ТаблицаТоваровСФ.СуммаБезНДСВалУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаБезНДСВал, 0)) * ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| КОГДА ТаблицаТоваровСФ.СуммаБезНДСВалУвеличение - ТаблицаТоваровСФ.СуммаБезНДСВалУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаБезНДСВал, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДСВалУвеличение
|ИЗ
| вт_ТаблицаТоваровПредыдущихСчетовФактур КАК ТаблицаТоваровСФ
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТаблицаТоваровДокументовОснованийСвернуто КАК ТаблицаТоваровДО
| ПО ТаблицаТоваровСФ.ИсходныйСчетФактура = ТаблицаТоваровДО.ИсходныйСчетФактура
| И ТаблицаТоваровСФ.Номенклатура = ТаблицаТоваровДО.Номенклатура
| И ТаблицаТоваровСФ.Характеристика = ТаблицаТоваровДО.Характеристика
| И ТаблицаТоваровСФ.Серия = ТаблицаТоваровДО.Серия
| И ТаблицаТоваровСФ.НоменклатураПартнера = ТаблицаТоваровДО.НоменклатураПартнера
| И ТаблицаТоваровСФ.НоменклатураНабора = ТаблицаТоваровДО.НоменклатураНабора
| И ТаблицаТоваровСФ.ХарактеристикаНабора = ТаблицаТоваровДО.ХарактеристикаНабора
| И ТаблицаТоваровСФ.Содержание = ТаблицаТоваровДО.Содержание
| И ТаблицаТоваровСФ.ТипЗапасов = ТаблицаТоваровДО.ТипЗапасов
| И ТаблицаТоваровСФ.КодТНВЭД = ТаблицаТоваровДО.КодТНВЭД
| И ТаблицаТоваровСФ.НомерГТД = ТаблицаТоваровДО.НомерГТД
| И ТаблицаТоваровСФ.КодСтроки = ТаблицаТоваровДО.КодСтроки
| И ТаблицаТоваровСФ.Распоряжение = ТаблицаТоваровДО.Распоряжение
| И ТаблицаТоваровСФ.ЕдиницаИзмерения = ТаблицаТоваровДО.ЕдиницаИзмерения
|ГДЕ
| (НЕ ТаблицаТоваровСФ.Количество + ТаблицаТоваровСФ.КоличествоУменьшение + ТаблицаТоваровСФ.КоличествоУвеличение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0) = 0
| ИЛИ НЕ ТаблицаТоваровСФ.КоличествоПоРНПТ + ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0) = 0
| ИЛИ НЕ ВЫБОР
| КОГДА &ВалютаСчетаФактуры = &ВалютаОснования ТОГДА
| ТаблицаТоваровСФ.Сумма + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0)
| ИНАЧЕ
| 0
| КОНЕЦ + ТаблицаТоваровСФ.СуммаУменьшение + ТаблицаТоваровСФ.СуммаУвеличение = 0
| ИЛИ НЕ ВЫБОР
| КОГДА &ВалютаСчетаФактуры = &ВалютаОснования
| И ТИПЗНАЧЕНИЯ(ТаблицаТоваровСФ.Распоряжение) = ТИП(Документ.ЗаказКлиента) ТОГДА
| ТаблицаТоваровСФ.СуммаНДС + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0)
| ИНАЧЕ
| 0
| КОНЕЦ + ТаблицаТоваровСФ.СуммаНДСУменьшение + ТаблицаТоваровСФ.СуммаНДСУвеличение = 0)
| И &НачислениеНДСПриОтгрузке
|
|ОБЪЕДИНИТЬ ВСЕ
|
|// Новые товары, добавленные торговым документом корректировки (только на увеличение).
|// В качестве предыдущего счета-фактуры используем исходный счет-фактуру.
|// Номер строки исходного СФ при этом равен 0, т.к. в нем не было этих товаров.
|
|ВЫБРАТЬ
| ТаблицаТоваровДО.ИсходныйСчетФактура КАК ПредыдущийСчетФактура,
| ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровДО.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| 0 КАК НомерСтрокиИсходногоСФ,
| ТаблицаТоваровДО.Распоряжение КАК Распоряжение,
| ТаблицаТоваровДО.Номенклатура КАК Номенклатура,
| ТаблицаТоваровДО.Характеристика КАК Характеристика,
| ТаблицаТоваровДО.Серия КАК Серия,
| ТаблицаТоваровДО.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваровДО.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровДО.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровДО.Содержание КАК Содержание,
| ТаблицаТоваровДО.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровДО.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровДО.НомерГТД КАК НомерГТД,
| ТаблицаТоваровДО.КодСтроки КАК КодСтроки,
| ТаблицаТоваровДО.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровДО.СтавкаНДС КАК СтавкаНДС,
|
| ТаблицаТоваровДО.Количество КАК Количество,
| ТаблицаТоваровДО.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваровДО.Сумма КАК Сумма,
| ТаблицаТоваровДО.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваровДО.СуммаБезНДСВал КАК СуммаБезНДСВал,
|
| 0 КАК КоличествоУменьшение,
| ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| ИНАЧЕ ТаблицаТоваровДО.Количество
| КОНЕЦ КАК КоличествоУвеличение,
| 0 КАК КоличествоПоРНПТУменьшение,
| ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| ИНАЧЕ ТаблицаТоваровДО.КоличествоПоРНПТ
| КОНЕЦ КАК КоличествоПоРНПТУвеличение,
| 0 КАК СуммаУменьшение,
| ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| ИНАЧЕ ТаблицаТоваровДО.Сумма
| КОНЕЦ КАК СуммаУвеличение,
| 0 КАК СуммаНДСУменьшение,
| ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| ИНАЧЕ ТаблицаТоваровДО.СуммаНДС
| КОНЕЦ КАК СуммаНДСУвеличение,
| 0 КАК СуммаБезНДСВалУменьшение,
| ВЫБОР
| КОГДА НЕ &ЭтоКорректировочный
| ТОГДА 0
| ИНАЧЕ ТаблицаТоваровДО.СуммаБезНДСВал
| КОНЕЦ КАК СуммаБезНДСВалУвеличение
|ИЗ
| вт_ТаблицаТоваровДокументовОснованийСвернуто КАК ТаблицаТоваровДО
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТаблицаТоваровПредыдущихСчетовФактур КАК ТаблицаТоваровСФ
| ПО ТаблицаТоваровДО.ИсходныйСчетФактура = ТаблицаТоваровСФ.ИсходныйСчетФактура
| И ТаблицаТоваровДО.Номенклатура = ТаблицаТоваровСФ.Номенклатура
| И ТаблицаТоваровДО.Характеристика = ТаблицаТоваровСФ.Характеристика
| И ТаблицаТоваровДО.Серия = ТаблицаТоваровСФ.Серия
| И ТаблицаТоваровДО.НоменклатураПартнера = ТаблицаТоваровСФ.НоменклатураПартнера
| И ТаблицаТоваровДО.НоменклатураНабора = ТаблицаТоваровСФ.НоменклатураНабора
| И ТаблицаТоваровДО.ХарактеристикаНабора = ТаблицаТоваровСФ.ХарактеристикаНабора
| И ТаблицаТоваровДО.Содержание = ТаблицаТоваровСФ.Содержание
| И ТаблицаТоваровДО.ТипЗапасов = ТаблицаТоваровСФ.ТипЗапасов
| И ТаблицаТоваровДО.КодТНВЭД = ТаблицаТоваровСФ.КодТНВЭД
| И ТаблицаТоваровДО.НомерГТД = ТаблицаТоваровСФ.НомерГТД
| И ТаблицаТоваровДО.КодСтроки = ТаблицаТоваровСФ.КодСтроки
| И ТаблицаТоваровДО.Распоряжение = ТаблицаТоваровСФ.Распоряжение
| И ТаблицаТоваровДО.ЕдиницаИзмерения = ТаблицаТоваровСФ.ЕдиницаИзмерения
| И (ТаблицаТоваровДО.СтавкаНДС = ТаблицаТоваровСФ.СтавкаНДС
| ИЛИ &НачислениеНДСПриОтгрузке)
|ГДЕ
| ТаблицаТоваровСФ.ИсходныйСчетФактура ЕСТЬ NULL";
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Запрос.Параметры, ДополнительныеПараметры, Истина);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Функция ТаблицаТоваровКорректировка(МенеджерВременныхТаблиц, ДополнительныеПараметры)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("РеализацияЧерезКомиссионера", ДополнительныеПараметры.РеализацияЧерезКомиссионера);
Запрос.УстановитьПараметр("НДССМежценовойРазницы", ДополнительныеПараметры.НДССМежценовойРазницы);
Запрос.УстановитьПараметр("НачислениеНДСПриОтгрузке", ДополнительныеПараметры.НачислениеНДСПриОтгрузке);
Запрос.УстановитьПараметр("ЭтоКорректировочный", ДополнительныеПараметры.ЭтоКорректировочный);
Запрос.УстановитьПараметр("ЭтоПеревыставление", ДополнительныеПараметры.ЭтоПеревыставление);
Запрос.Текст =
"// Новые товары, добавленные торговым документом корректировки (только на увеличение).
|// В качестве предыдущего счета-фактуры используем исходный счет-фактуру.
|
|ВЫБРАТЬ
| ЕСТЬNULL(ТаблицаТоваровСФ.ТекущийСчетФактура, ТаблицаТоваровДО.ИсходныйСчетФактура) КАК ПредыдущийСчетФактура,
| ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровДО.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ЕСТЬNULL(ТаблицаТоваровСФ.НомерСтроки, 99999) КАК НомерСтрокиИсходногоСФ,
| ТаблицаТоваровДО.Распоряжение КАК Распоряжение,
| ТаблицаТоваровДО.Номенклатура КАК Номенклатура,
| ТаблицаТоваровДО.Характеристика КАК Характеристика,
| ТаблицаТоваровДО.Серия КАК Серия,
| ТаблицаТоваровДО.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваровДО.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровДО.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровДО.Содержание КАК Содержание,
| ТаблицаТоваровДО.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровДО.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровДО.НомерГТД КАК НомерГТД,
| ТаблицаТоваровДО.КодСтроки КАК КодСтроки,
| ТаблицаТоваровДО.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровДО.СтавкаНДС КАК СтавкаНДС,
|
| ТаблицаТоваровДО.Количество + ЕСТЬNULL(ТаблицаТоваровСФ.Количество, 0) КАК Количество,
| ТаблицаТоваровДО.КоличествоПоРНПТ + ЕСТЬNULL(ТаблицаТоваровСФ.КоличествоПоРНПТ, 0) КАК КоличествоПоРНПТ,
| ТаблицаТоваровДО.Сумма + ЕСТЬNULL(ТаблицаТоваровСФ.Сумма, 0) КАК Сумма,
| ТаблицаТоваровДО.СуммаНДС + ЕСТЬNULL(ТаблицаТоваровСФ.СуммаНДС, 0) КАК СуммаНДС,
| 0 КАК СуммаБезНДСВал,
|
| ТаблицаТоваровДО.Количество * ВЫБОР
| КОГДА ТаблицаТоваровДО.Количество > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК КоличествоУменьшение,
| ТаблицаТоваровДО.Количество * ВЫБОР
| КОГДА ТаблицаТоваровДО.Количество > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоУвеличение,
| ТаблицаТоваровДО.КоличествоПоРНПТ * ВЫБОР
| КОГДА ТаблицаТоваровДО.КоличествоПоРНПТ > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК КоличествоПоРНПТУменьшение,
| ТаблицаТоваровДО.КоличествоПоРНПТ * ВЫБОР
| КОГДА ТаблицаТоваровДО.КоличествоПоРНПТ > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПоРНПТУвеличение,
| ТаблицаТоваровДО.Сумма * ВЫБОР
| КОГДА ТаблицаТоваровДО.Сумма > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаУменьшение,
| ТаблицаТоваровДО.Сумма * ВЫБОР
| КОГДА ТаблицаТоваровДО.Сумма > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаУвеличение,
| ТаблицаТоваровДО.СуммаНДС * ВЫБОР
| КОГДА ТаблицаТоваровДО.СуммаНДС > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаНДСУменьшение,
| ТаблицаТоваровДО.СуммаНДС * ВЫБОР
| КОГДА ТаблицаТоваровДО.СуммаНДС > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаНДСУвеличение,
| 0 КАК СуммаБезНДСВалУменьшение,
| 0 КАК СуммаБезНДСВалУвеличение
|ИЗ
| вт_ТаблицаТоваровДокументовОснованийСвернуто КАК ТаблицаТоваровДО
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТаблицаТоваровПредыдущихСчетовФактур КАК ТаблицаТоваровСФ
| ПО ТаблицаТоваровДО.ИсходныйСчетФактура = ТаблицаТоваровСФ.ИсходныйСчетФактура
| И (НЕ &РеализацияЧерезКомиссионера
| ИЛИ ТаблицаТоваровДО.ДокументРеализации = ТаблицаТоваровСФ.ДокументРеализации)
| И ТаблицаТоваровДО.Номенклатура = ТаблицаТоваровСФ.Номенклатура
| И ТаблицаТоваровДО.Характеристика = ТаблицаТоваровСФ.Характеристика
| И ТаблицаТоваровДО.Серия = ТаблицаТоваровСФ.Серия
| И ТаблицаТоваровДО.НоменклатураПартнера = ТаблицаТоваровСФ.НоменклатураПартнера
| И ТаблицаТоваровДО.НоменклатураНабора = ТаблицаТоваровСФ.НоменклатураНабора
| И ТаблицаТоваровДО.ХарактеристикаНабора = ТаблицаТоваровСФ.ХарактеристикаНабора
| И ТаблицаТоваровДО.Содержание = ТаблицаТоваровСФ.Содержание
| И ТаблицаТоваровДО.ТипЗапасов = ТаблицаТоваровСФ.ТипЗапасов
| И ТаблицаТоваровДО.КодТНВЭД = ТаблицаТоваровСФ.КодТНВЭД
| И ТаблицаТоваровДО.НомерГТД = ТаблицаТоваровСФ.НомерГТД
| И ТаблицаТоваровДО.КодСтроки = ТаблицаТоваровСФ.КодСтроки
| И ТаблицаТоваровДО.ЕдиницаИзмерения = ТаблицаТоваровСФ.ЕдиницаИзмерения
| И ТаблицаТоваровДО.СтавкаНДС = ТаблицаТоваровСФ.СтавкаНДС
|
|ГДЕ
| НЕ &НДССМежценовойРазницы
| И НЕ &НачислениеНДСПриОтгрузке
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЕСТЬNULL(ТаблицаТоваровСФ.ТекущийСчетФактура, ТаблицаТоваровДО.ИсходныйСчетФактура) КАК ПредыдущийСчетФактура,
| ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровДО.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ВЫБОР
| КОГДА &ЭтоКорректировочный
| ТОГДА ЕСТЬNULL(ТаблицаТоваровСФ.НомерСтроки, 99999)
| ИНАЧЕ
| 0
| КОНЕЦ КАК НомерСтрокиИсходногоСФ,
| ТаблицаТоваровДО.Распоряжение КАК Распоряжение,
| ТаблицаТоваровДО.Номенклатура КАК Номенклатура,
| ТаблицаТоваровДО.Характеристика КАК Характеристика,
| ТаблицаТоваровДО.Серия КАК Серия,
| ТаблицаТоваровДО.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваровДО.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровДО.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровДО.Содержание КАК Содержание,
| ТаблицаТоваровДО.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровДО.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровДО.НомерГТД КАК НомерГТД,
| ТаблицаТоваровДО.КодСтроки КАК КодСтроки,
| ТаблицаТоваровДО.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВЫБОР
| КОГДА ТаблицаТоваровДО.СтавкаНДС = ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)
| ТОГДА ТаблицаТоваровСФ.СтавкаНДС
| ИНАЧЕ
| ТаблицаТоваровДО.СтавкаНДС
| КОНЕЦ КАК СтавкаНДС,
|
| ТаблицаТоваровДО.Количество + ЕСТЬNULL(ТаблицаТоваровСФ.Количество, 0) КАК Количество,
| ТаблицаТоваровДО.КоличествоПоРНПТ + ЕСТЬNULL(ТаблицаТоваровСФ.КоличествоПоРНПТ, 0) КАК КоличествоПоРНПТ,
| ТаблицаТоваровДО.Сумма + ЕСТЬNULL(ТаблицаТоваровСФ.Сумма, 0) КАК Сумма,
| ТаблицаТоваровДО.СуммаНДС + ЕСТЬNULL(ТаблицаТоваровСФ.СуммаНДС, 0) КАК СуммаНДС,
| ТаблицаТоваровДО.СуммаБезНДСВал + ЕСТЬNULL(ТаблицаТоваровСФ.СуммаБезНДСВал, 0) КАК СуммаБезНДСВал,
|
| ТаблицаТоваровДО.Количество * ВЫБОР
| КОГДА ТаблицаТоваровДО.Количество > 0 ИЛИ НЕ &ЭтоКорректировочный
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК КоличествоУменьшение,
| ТаблицаТоваровДО.Количество * ВЫБОР
| КОГДА ТаблицаТоваровДО.Количество > 0 И &ЭтоКорректировочный
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоУвеличение,
| ТаблицаТоваровДО.КоличествоПоРНПТ * ВЫБОР
| КОГДА ТаблицаТоваровДО.КоличествоПоРНПТ > 0 ИЛИ НЕ &ЭтоКорректировочный
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК КоличествоПоРНПТУменьшение,
| ТаблицаТоваровДО.КоличествоПоРНПТ * ВЫБОР
| КОГДА ТаблицаТоваровДО.КоличествоПоРНПТ > 0 И &ЭтоКорректировочный
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПоРНПТУвеличение,
| ТаблицаТоваровДО.Сумма * ВЫБОР
| КОГДА ТаблицаТоваровДО.Сумма > 0 ИЛИ НЕ &ЭтоКорректировочный
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаУменьшение,
| ТаблицаТоваровДО.Сумма * ВЫБОР
| КОГДА ТаблицаТоваровДО.Сумма > 0 И &ЭтоКорректировочный
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаУвеличение,
| ТаблицаТоваровДО.СуммаНДС * ВЫБОР
| КОГДА ТаблицаТоваровДО.СуммаНДС > 0 ИЛИ НЕ &ЭтоКорректировочный
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаНДСУменьшение,
| ТаблицаТоваровДО.СуммаНДС * ВЫБОР
| КОГДА ТаблицаТоваровДО.СуммаНДС > 0 И &ЭтоКорректировочный
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаНДСУвеличение,
| ТаблицаТоваровДО.СуммаБезНДСВал * ВЫБОР
| КОГДА ТаблицаТоваровДО.СуммаБезНДСВал > 0 ИЛИ НЕ &ЭтоКорректировочный
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаБезНДСВалУменьшение,
| ТаблицаТоваровДО.СуммаБезНДСВал * ВЫБОР
| КОГДА ТаблицаТоваровДО.СуммаБезНДСВал > 0 И &ЭтоКорректировочный
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаБезНДСВалУвеличение
|ИЗ
| вт_ТаблицаТоваровДокументовОснованийСвернуто КАК ТаблицаТоваровДО
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТаблицаТоваровПредыдущихСчетовФактур КАК ТаблицаТоваровСФ
| ПО ТаблицаТоваровДО.ИсходныйСчетФактура = ТаблицаТоваровСФ.ИсходныйСчетФактура
| И (НЕ &РеализацияЧерезКомиссионера
| ИЛИ ТаблицаТоваровДО.ДокументРеализации = ТаблицаТоваровСФ.ДокументРеализации)
| И ТаблицаТоваровДО.Номенклатура = ТаблицаТоваровСФ.Номенклатура
| И ТаблицаТоваровДО.Характеристика = ТаблицаТоваровСФ.Характеристика
| И ТаблицаТоваровДО.Серия = ТаблицаТоваровСФ.Серия
| И ТаблицаТоваровДО.НоменклатураПартнера = ТаблицаТоваровСФ.НоменклатураПартнера
| И ТаблицаТоваровДО.НоменклатураНабора = ТаблицаТоваровСФ.НоменклатураНабора
| И ТаблицаТоваровДО.ХарактеристикаНабора = ТаблицаТоваровСФ.ХарактеристикаНабора
| И ТаблицаТоваровДО.Содержание = ТаблицаТоваровСФ.Содержание
| И ТаблицаТоваровДО.ТипЗапасов = ТаблицаТоваровСФ.ТипЗапасов
| И ТаблицаТоваровДО.КодТНВЭД = ТаблицаТоваровСФ.КодТНВЭД
| И ТаблицаТоваровДО.НомерГТД = ТаблицаТоваровСФ.НомерГТД
| И ТаблицаТоваровДО.КодСтроки = ТаблицаТоваровСФ.КодСтроки
| И ТаблицаТоваровДО.ЕдиницаИзмерения = ТаблицаТоваровСФ.ЕдиницаИзмерения
| И &ЭтоКорректировочный
| И (НЕ &ЭтоПеревыставление
| ИЛИ ТаблицаТоваровСФ.СчетФактураПолученныйОтПродавца В (ВЫБРАТЬ ДокументыОснованияСФ.ИсходныйДокумент
| ИЗ Документ.СчетФактураПолученный.ДокументыОснования КАК ДокументыОснованияСФ
| ГДЕ ДокументыОснованияСФ.Ссылка = ТаблицаТоваровДО.СчетФактураПолученныйОтПродавца))
|
|ГДЕ
| &НДССМежценовойРазницы ИЛИ &НачислениеНДСПриОтгрузке
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЕСТЬNULL(ТаблицаТоваровСФ.ТекущийСчетФактура, ТаблицаТоваровДО.ИсходныйСчетФактура) КАК ПредыдущийСчетФактура,
| ТаблицаТоваровСФ.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваровСФ.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваровСФ.НомерСтроки КАК НомерСтрокиИсходногоСФ,
| ТаблицаТоваровСФ.Распоряжение КАК Распоряжение,
| ТаблицаТоваровСФ.Номенклатура КАК Номенклатура,
| ТаблицаТоваровСФ.Характеристика КАК Характеристика,
| ТаблицаТоваровСФ.Серия КАК Серия,
| ТаблицаТоваровСФ.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваровСФ.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваровСФ.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваровСФ.Содержание КАК Содержание,
| ТаблицаТоваровСФ.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваровСФ.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваровСФ.НомерГТД КАК НомерГТД,
| ТаблицаТоваровСФ.КодСтроки КАК КодСтроки,
| ТаблицаТоваровСФ.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваровСФ.СтавкаНДС КАК СтавкаНДС,
|
| ТаблицаТоваровСФ.Количество КАК Количество,
| ТаблицаТоваровСФ.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваровСФ.Сумма КАК Сумма,
| ТаблицаТоваровСФ.СуммаНДС КАК СуммаНДС,
| 0 КАК СуммаБезНДСВал,
|
| (ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0)) * ВЫБОР
| КОГДА ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК КоличествоУменьшение,
| (ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0)) * ВЫБОР
| КОГДА ТаблицаТоваровСФ.КоличествоУвеличение - ТаблицаТоваровСФ.КоличествоУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Количество, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоУвеличение,
| (ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0)) * ВЫБОР
| КОГДА ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК КоличествоПоРНПТУменьшение,
| (ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0)) * ВЫБОР
| КОГДА ТаблицаТоваровСФ.КоличествоПоРНПТУвеличение - ТаблицаТоваровСФ.КоличествоПоРНПТУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.КоличествоПоРНПТ, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПоРНПТУвеличение,
| (ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0)) * ВЫБОР
| КОГДА ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаУменьшение,
| (ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0)) * ВЫБОР
| КОГДА ТаблицаТоваровСФ.СуммаУвеличение - ТаблицаТоваровСФ.СуммаУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.Сумма, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаУвеличение,
| (ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0)) * ВЫБОР
| КОГДА ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0) > 0
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК СуммаНДСУменьшение,
| (ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0)) * ВЫБОР
| КОГДА ТаблицаТоваровСФ.СуммаНДСУвеличение - ТаблицаТоваровСФ.СуммаНДСУменьшение + ЕСТЬNULL(ТаблицаТоваровДО.СуммаНДС, 0) > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаНДСУвеличение,
| 0 КАК СуммаБезНДСВалУменьшение,
| 0 КАК СуммаБезНДСВалУвеличение
|ИЗ
| вт_ТаблицаТоваровПредыдущихСчетовФактур КАК ТаблицаТоваровСФ
| ЛЕВОЕ СОЕДИНЕНИЕ вт_ТаблицаТоваровДокументовОснованийСвернуто КАК ТаблицаТоваровДО
| ПО ТаблицаТоваровДО.ИсходныйСчетФактура = ТаблицаТоваровСФ.ИсходныйСчетФактура
| И (НЕ &РеализацияЧерезКомиссионера
| ИЛИ ТаблицаТоваровДО.ДокументРеализации = ТаблицаТоваровСФ.ДокументРеализации)
| И ТаблицаТоваровДО.Номенклатура = ТаблицаТоваровСФ.Номенклатура
| И ТаблицаТоваровДО.Характеристика = ТаблицаТоваровСФ.Характеристика
| И ТаблицаТоваровДО.Серия = ТаблицаТоваровСФ.Серия
| И ТаблицаТоваровДО.НоменклатураПартнера = ТаблицаТоваровСФ.НоменклатураПартнера
| И ТаблицаТоваровДО.НоменклатураНабора = ТаблицаТоваровСФ.НоменклатураНабора
| И ТаблицаТоваровДО.ХарактеристикаНабора = ТаблицаТоваровСФ.ХарактеристикаНабора
| И ТаблицаТоваровДО.Содержание = ТаблицаТоваровСФ.Содержание
| И ТаблицаТоваровДО.ТипЗапасов = ТаблицаТоваровСФ.ТипЗапасов
| И ТаблицаТоваровДО.КодТНВЭД = ТаблицаТоваровСФ.КодТНВЭД
| И ТаблицаТоваровДО.НомерГТД = ТаблицаТоваровСФ.НомерГТД
| И ТаблицаТоваровДО.КодСтроки = ТаблицаТоваровСФ.КодСтроки
| И ТаблицаТоваровДО.ЕдиницаИзмерения = ТаблицаТоваровСФ.ЕдиницаИзмерения
| И ТаблицаТоваровДО.СтавкаНДС = ТаблицаТоваровСФ.СтавкаНДС
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО ТаблицаТоваровСФ.Номенклатура = СправочникНоменклатура.Ссылка
|ГДЕ
| ТаблицаТоваровДО.ИсходныйСчетФактура ЕСТЬ NULL
| И &УсловиеМаркируемаяПродукция
| И НЕ &НДССМежценовойРазницы
| И НЕ &НачислениеНДСПриОтгрузке
|
|УПОРЯДОЧИТЬ ПО
| ИсходныйСчетФактура,
| НомерСтрокиИсходногоСФ,
| Номенклатура,
| Характеристика,
| Серия,
| ЕдиницаИзмерения";
ВидыМаркируемойПродукции = ИнтеграцияИСМП.ИспользуемыеВидыМаркируемойПродукцииИСМП();
ИнтеграцияИСМПУТ.УстановитьУсловиеПоВидуМаркируемойПродукции(Запрос.Текст, ВидыМаркируемойПродукции);
ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
СчетчикОбхода = ТаблицаРезультат.Количество()-1;
Пока СчетчикОбхода > 0 И ТаблицаРезультат[СчетчикОбхода].НомерСтрокиИсходногоСФ = 99999 Цикл
ТаблицаРезультат[СчетчикОбхода].НомерСтрокиИсходногоСФ = 0;
СчетчикОбхода = СчетчикОбхода - 1;
КонецЦикла;
Возврат ТаблицаРезультат;
КонецФункции
Функция ТаблицаТоваровДокументовОснований(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = "
|ВЫБРАТЬ
| ТаблицаТоваров.ДокументРеализации КАК ДокументРеализации,
| ТаблицаТоваров.Распоряжение КАК Распоряжение,
| НЕОПРЕДЕЛЕНО КАК ПредыдущийСчетФактура,
| ТаблицаТоваров.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваров.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваров.Содержание КАК Содержание,
| ТаблицаТоваров.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.НомерСтрокиПриПечати КАК НомерСтрокиПриПечати,
|
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.Сумма КАК Сумма,
| ТаблицаТоваров.СуммаНДС КАК СуммаНДС,
|
| 0 КАК КоличествоУменьшение,
| 0 КАК КоличествоУвеличение,
| 0 КАК КоличествоПоРНПТУменьшение,
| 0 КАК КоличествоПоРНПТУвеличение,
| 0 КАК СуммаУменьшение,
| 0 КАК СуммаУвеличение,
| 0 КАК СуммаНДСУменьшение,
| 0 КАК СуммаНДСУвеличение
|ИЗ
| вт_ТаблицаТоваровДокументовОснований КАК ТаблицаТоваров
|
|УПОРЯДОЧИТЬ ПО
| СчетФактураПолученныйОтПродавца";
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Функция ТаблицаТоваровВозвратовПослеПереходаПраваСобственности(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = "
|ВЫБРАТЬ
| ТаблицаТоваров.ДокументРеализации КАК ДокументРеализации,
| ТаблицаТоваров.Распоряжение КАК Распоряжение,
| НЕОПРЕДЕЛЕНО КАК ПредыдущийСчетФактура,
| ТаблицаТоваров.СчетФактураПолученныйОтПродавца КАК СчетФактураПолученныйОтПродавца,
| ТаблицаТоваров.ИсходныйСчетФактура КАК ИсходныйСчетФактура,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваров.Содержание КАК Содержание,
| ТаблицаТоваров.ТипЗапасов КАК ТипЗапасов,
| ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.НомерСтрокиПриПечати КАК НомерСтрокиПриПечати,
|
| 0 КАК Количество,
| 0 КАК КоличествоПоРНПТ,
| 0 КАК Сумма,
| 0 КАК СуммаНДС,
|
| -ТаблицаТоваров.Количество КАК КоличествоУменьшение,
| 0 КАК КоличествоУвеличение,
| -ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТУменьшение,
| 0 КАК КоличествоПоРНПТУвеличение,
| -ТаблицаТоваров.Сумма КАК СуммаУменьшение,
| 0 КАК СуммаУвеличение,
| -ТаблицаТоваров.СуммаНДС КАК СуммаНДСУменьшение,
| 0 КАК СуммаНДСУвеличение
|ИЗ
| вт_ТаблицаТоваровДокументовОснований КАК ТаблицаТоваров
|
|УПОРЯДОЧИТЬ ПО
| СчетФактураПолученныйОтПродавца";
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Процедура РассчитатьМежценовуюРазницу(ТаблицаТовары, ПараметрыЗаполнения)
ТаблицаТовары.Колонки.Добавить("МежценоваяРазница", Новый ОписаниеТипов("Число"));
ТаблицаТовары.Колонки.Добавить("МежценоваяРазницаУвеличение", Новый ОписаниеТипов("Число"));
ТаблицаТовары.Колонки.Добавить("МежценоваяРазницаУменьшение", Новый ОписаниеТипов("Число"));
Организация = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПараметрыЗаполнения.ДокументыОснования.ВыгрузитьКолонку("ДокументОснование")[0], "Организация");
Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
УстановитьСтавкуНДСДляМежценовойРазницы(СтрокаТовары, Организация, ПараметрыЗаполнения.МоментВремени.Дата);
ЗначениеСтавкиНДС = УчетНДСУПКлиентСервер.ЗначениеСтавкиНДС(СтрокаТовары.СтавкаНДС);
ЭтоРасчетнаяСтавкаНДС = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаТовары.СтавкаНДС, "РасчетнаяСтавка");
СтрокаТовары.МежценоваяРазница = СтрокаТовары.Сумма;
СтрокаТовары.СуммаНДС = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(
СтрокаТовары.МежценоваяРазница,
ЗначениеСтавкиНДС,
ЭтоРасчетнаяСтавкаНДС);
СтрокаТовары.МежценоваяРазницаУвеличение = СтрокаТовары.СуммаУвеличение;
СтрокаТовары.СуммаНДСУвеличение = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(
СтрокаТовары.МежценоваяРазницаУвеличение,
ЗначениеСтавкиНДС,
ЭтоРасчетнаяСтавкаНДС);
СтрокаТовары.МежценоваяРазницаУменьшение = СтрокаТовары.СуммаУменьшение;
СтрокаТовары.СуммаНДСУменьшение = УчетНДСУПКлиентСервер.РассчитатьСуммуНДС(
СтрокаТовары.МежценоваяРазницаУменьшение,
ЗначениеСтавкиНДС,
ЭтоРасчетнаяСтавкаНДС);
КонецЦикла;
КонецПроцедуры
Процедура РассчитатьСуммуНДСПриОтгрузке(ТаблицаТовары, ДополнительныеПараметры)
СтруктураДействий = Новый Структура;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(ДополнительныеПараметры.ДокументОснование);
СтруктураЗаполненияСтавкиНДС.ИнициализацияВходящегоДокумента = Истина;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", СтруктураЗаполненияСтавкиНДС);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ТаблицаТовары, СтруктураДействий, КэшированныеЗначения);
МассивСуффиксов = Новый Массив;
СтруктураПересчетаСуммыНДС = Новый Структура;
СтруктураДействий = Новый Структура;
СтруктураПересчетаСуммыНДС.Вставить("ЦенаВключаетНДС", Истина);
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ДополнительныеПараметры.ДокументОснование,"НалогообложениеНДС") Тогда
НалогообложениеНДС =
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДополнительныеПараметры.ДокументОснование, "НалогообложениеНДС");
СтруктураПересчетаСуммыНДС.Вставить("НалогообложениеНДС", НалогообложениеНДС);
КонецЕсли;
МассивСуффиксов.Добавить("");
Если ДополнительныеПараметры.ЭтоКорректировочный Тогда
МассивСуффиксов.Добавить("Уменьшение");
МассивСуффиксов.Добавить("Увеличение");
КонецЕсли;
СтруктураПересчетаСуммыНДС.Вставить("Суффикс", МассивСуффиксов);
СтруктураДействий.Вставить("ПересчитатьСуммуНДСОтгрузки", СтруктураПересчетаСуммыНДС);
Если ДополнительныеПараметры.ЭтоКорректировочный
Или ДополнительныеПараметры.ЭтоИсправление
Или ТипЗнч(ТаблицаТовары[0].Распоряжение) = Тип("ДокументСсылка.ОтгрузкаТоваровКлиенту") Тогда
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ТаблицаТовары, СтруктураДействий, КэшированныеЗначения);
Иначе
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначения.ОбработанныеСтроки,
СтруктураДействий,
ТаблицаТовары,
КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьОбщихФорм";
КомандаПечати.Идентификатор = "СчетФактура";
КомандаПечати.Представление = НСтр("ru = 'Счет-фактура'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ПечатьВВалюте", Ложь);
КомандаПечати.Порядок = 1;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьОбщихФорм";
КомандаПечати.Идентификатор = "СчетФактураВВалюте";
КомандаПечати.Представление = НСтр("ru = 'Счет-фактура (в валюте)'");
КомандаПечати.ФункциональныеОпции = "ИспользоватьНесколькоВалют";
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ПечатьВВалюте", Истина);
КомандаПечати.Порядок = 2;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьОбщихФорм";
КомандаПечати.Идентификатор = "УПД";
КомандаПечати.Представление = НСтр("ru = 'Универсальный передаточный документ (УПД)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 3;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьОбщихФорм";
КомандаПечати.Идентификатор = "УКД";
КомандаПечати.Представление = НСтр("ru = 'Универсальный корректировочный документ (УКД)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 4;
КонецПроцедуры
Функция ПолучитьДанныеДляПечатнойФормыСчетФактура(ПараметрыПечати, МассивОбъектов) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаТаблицаОснований();
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ВалютаУправленческогоУчета", Константы.ВалютаУправленческогоУчета.Получить());
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
РезультатПакета = Запрос.ВыполнитьПакет();
МассивШапокОснований = РезультатПакета[3].Выгрузить().ВыгрузитьКолонку("ДокументОснование");
МассивОснований = РезультатПакета[1].Выгрузить().ВыгрузитьКолонку("ДокументОснование");
Если МассивОснований.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;
Контракт = Неопределено;
ЕстьЭлектронноеАктирование = Ложь;
Для Каждого Основание Из МассивОснований Цикл
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Основание, "Договор") Тогда
ДоговорОснования = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Основание, "Договор");
Если ТипЗнч(ДоговорОснования) = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
Организация = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДоговорОснования, "Организация");
ПараметрыОтправкиВЕИС = ЭлектронноеАктированиеЕИСУТ.ПараметрыОтправкиВЕИС(
Организация, ДоговорОснования);
ЕстьЭлектронноеАктирование = ПараметрыОтправкиВЕИС.ВозможнаОтправка
И ЭлектронноеАктированиеЕИСУТ.ДокументОтправляетсяВЕИС(Основание);
Контракт = ПараметрыОтправкиВЕИС.Контракт;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПоместитьВременнуюТаблицуШапокОснований(МенеджерВременныхТаблиц, МассивШапокОснований);
ПоместитьВременнуюТаблицуДанныхОснований(МенеджерВременныхТаблиц, МассивОснований);
ПоместитьВременнуюТаблицуПокупатели(МенеджерВременныхТаблиц, МассивОбъектов);
ПоместитьВременнуюТаблицуДанныхПоставщика(МенеджерВременныхТаблиц);
ПараметрыОтветственныхЛиц = ОтветственныеЛицаСервер.ПараметрыОтветственныхЛицПоУмолчанию();
ПараметрыОтветственныхЛиц.ИмяРеквизитаОрганизация = "Ссылка";
ПараметрыОтветственныхЛиц.ИмяТаблицыОтветственныеЛица = "ОтветственныеЛицаСФ";
ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(
МассивОбъектов, МенеджерВременныхТаблиц, ПараметрыОтветственныхЛиц);
МассивАналитикУчетаПоПартнерам = Новый Массив;
ЗаполнятьПлатежноРасчетныеДокументы = ПланыОбмена.ГлавныйУзел() = Неопределено;
Если ЗаполнятьПлатежноРасчетныеДокументы Тогда
ПоместитьВременнуюТаблицуЗаполненияПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц);
МассивАналитикУчетаПоПартнерамПлатежноРасчетныхДокументов =
АналитикиУчетаПоПартнерамДляАктуализацииПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивАналитикУчетаПоПартнерам,
МассивАналитикУчетаПоПартнерамПлатежноРасчетныхДокументов);
ОкончаниеПериодаРасчета = КонецРасчетаДляАктуализацииПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц);
КонецЕсли;
Если Не ПараметрыПечати.ПечатьВВалюте Тогда
Если ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов") Тогда
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокументов.Ссылка КАК Ссылка
|ИЗ
| ТаблицаШапокДокументов КАК ДанныеДокументов
|ГДЕ
| ДанныеДокументов.Валюта <> ДанныеДокументов.Организация.ВалютаРегламентированногоУчета
| ИЛИ ДанныеДокументов.Валюта <> &ВалютаУправленческогоУчета";
МассивДокументов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Если ПланыОбмена.ГлавныйУзел() = Неопределено Тогда
НеоперативнаяОчередьЗаданий.ВыполнитьЗаданияНеоперативнойОчередиПоСпискуДокументов(МассивДокументов,
Справочники.ВидыНеоперативныхЗаданий.АктуализацияДвиженийПоФинансовымРегистрам);
Иначе
РегистрыСведений.СуммыДокументовВВалютахУчета.РассчитатьСуммыДокументовВВалютахУчета(МассивДокументов);
КонецЕсли;
Иначе
Запрос.Текст = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| РасчетыСКлиентами.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам
|ИЗ
| РегистрНакопления.РасчетыСКлиентами КАК РасчетыСКлиентами
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ТаблицаШапокДокументов КАК ДанныеДокументов
| ПО
| РасчетыСКлиентами.Регистратор = ДанныеДокументов.Ссылка
|
|ГДЕ
| ДанныеДокументов.Валюта <> ДанныеДокументов.Организация.ВалютаРегламентированногоУчета
| И РасчетыСКлиентами.Активность
|";
ТаблицаАналитик = Запрос.Выполнить().Выгрузить();
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивАналитикУчетаПоПартнерам,
ТаблицаАналитик.ВыгрузитьКолонку("АналитикаУчетаПоПартнерам"), Истина);
ОкончаниеПериодаРасчета = КонецМесяца(ВзаиморасчетыСервер.ПолучитьМаксимальнуюДатуВКоллекцииДокументов(МенеджерВременныхТаблиц)) + 1;
КонецЕсли;
КонецЕсли;
Если (ЗаполнятьПлатежноРасчетныеДокументы ИЛИ Не ПараметрыПечати.ПечатьВВалюте)
И МассивАналитикУчетаПоПартнерам.Количество() > 0 Тогда
Если Не ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов") Тогда
АналитикиРасчета = РаспределениеВзаиморасчетовВызовСервера.АналитикиРасчета();
АналитикиРасчета.АналитикиУчетаПоПартнерам = МассивАналитикУчетаПоПартнерам;
Попытка
РаспределениеВзаиморасчетовВызовСервера.РаспределитьВсеРасчетыСКлиентами(ОкончаниеПериодаРасчета, АналитикиРасчета);
Исключение
ТекстСообщения = НСтр("ru = 'Печатная форма сформирована по неактуальным данным.
|Необходимо актуализировать взаиморасчеты вручную и переформировать печатную форму.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецПопытки;
Иначе
Если РегистрыСведений.ЗаданияКРаспределениюВзаиморасчетов.АктуальныйПериодРассчитанныхДанныхПоВзаиморасчетам(МассивАналитикУчетаПоПартнерам,,ОкончаниеПериодаРасчета) <> Неопределено Тогда
ТекстСообщения = НСтр("ru = 'Печатная форма сформирована по неактуальным данным.'") + Символы.ПС;
ТекстСообщения = ТекстСообщения + ВзаиморасчетыСервер.ТекстПредупрежденияЗаданияРаспределенияВзаиморасчетов();
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗаполнятьПлатежноРасчетныеДокументы Тогда
ПлатежноРасчетныеДокументы = ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(
МенеджерВременныхТаблиц,
МассивАналитикУчетаПоПартнерамПлатежноРасчетныхДокументов);
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| NULL КАК Ссылка,
| NULL КАК СтрокаПлатежноРасчетныеДокументы
|ПОМЕСТИТЬ ТаблицаПлатежноРасчетныеДокументы";
Запрос.Выполнить();
КонецЕсли;
ПараметрыПечати.Вставить("ВыводитьНаборы", Ложь);
СформироватьВременнуюТаблицуТоваровДляПечати(МенеджерВременныхТаблиц, МассивОснований, ПараметрыПечати);
ПечататьСчетаФактурыПолученные = ПараметрыПечати.Свойство("МассивСчетФактураПолученный");
Если ПечататьСчетаФактурыПолученные Тогда
Запрос.УстановитьПараметр("МассивСчетФактураПолученный", ПараметрыПечати.МассивСчетФактураПолученный);
КонецЕсли;
ЗаполнитьДанныеШтрихкодовДляУКДДо = Ложь;
Если ПараметрыПечати.Свойство("ЗаполнитьДанныеШтрихкодовДляУКДДо") И ПараметрыПечати.ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда
ЗаполнитьДанныеШтрихкодовДляУКДДо = Истина;
КонецЕсли;
Запрос.УстановитьПараметр("ПредставлениеСчетФактура", НСтр("ru = 'счет-фактура'"));
Запрос.УстановитьПараметр("ПредставлениеСчетФактураПосредника", НСтр("ru = 'счет-фактура посредника'"));
Запрос.УстановитьПараметр("ВыводитьБазовыеЕдиницыИзмерения", Константы.ВыводитьБазовыеЕдиницыИзмерения.Получить());
МассивОперацийПередачаНаКомиссию = Новый Массив;
МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту);
МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссиюВДругуюОрганизацию);
Запрос.УстановитьПараметр("ХозяйственныеОперацииПередачаНаКомиссию", МассивОперацийПередачаНаКомиссию);
Запрос.УстановитьПараметр("ВыводитьОсновнойУПД",
Не (ПараметрыПечати.Свойство("НеВыводитьОсновнойУПД") И ПараметрыПечати.НеВыводитьОсновнойУПД));
Запрос.УстановитьПараметр("ДатаОтраженияВозвратовКорректировочнымиСФ", УчетНДСУП.НастройкиУчета().ДатаОтраженияВозвратовКорректировочнымиСФ);
СформироватьВтСчетаФактурыПолученные(МенеджерВременныхТаблиц, ПараметрыПечати);
СформироватьВТПорядковыеНомераТаблицыТоваровИПредставления5а(МенеджерВременныхТаблиц, ПараметрыПечати);
СформироватьПредставлениеВыставленКомиссионеру(МенеджерВременныхТаблиц);
Запрос.УстановитьПараметр("МассивОснований", МассивОснований);
Запрос.Текст = ТекстЗапросаДанныхШапкиДляПечатиСчетаФактуры(ПараметрыПечати)
+ ТекстЗапросаИсходныхДокументовДляПечатиСчетаФактуры()
+ ТекстЗапросаДанныхТабличнойЧастиДляПечатиСчетаФактуры(ПараметрыПечати)
+ ТекстЗапросаДанныхМаркировки(ЗаполнитьДанныеШтрихкодовДляУКДДо)
+ ТекстЗапросаДанныхПоПеревыставленномуСчетуФактуре()
+ ТекстЗапросаДанныхПрослеживаемость()
+ ТекстЗапросаДанныхПрослеживаемыеКомплектующие();
Если ЕстьЭлектронноеАктирование Тогда
Запрос.Текст = Запрос.Текст + ЭлектронноеАктированиеЕИСУТ.ТекстЗапросаДанныеДляПечатиСчетовФактур("МассивОснований");
Запрос.УстановитьПараметр("ГосударственныйКонтрактЕИС", Контракт);
Если ТипЗнч(МассивОснований[0]) = Тип("ДокументСсылка.СчетФактураВыданный")
Или ТипЗнч(МассивОснований[0]) = Тип("ДокументСсылка.СчетФактураВыданныйАванс") Тогда
Запрос.УстановитьПараметр("ЭтапИсполненияКонтрактаЕИС", МассивОснований[0].ДокументОснование.ЭтапГосконтрактаЕИС);
Иначе
Запрос.УстановитьПараметр("ЭтапИсполненияКонтрактаЕИС", МассивОснований[0].ЭтапГосконтрактаЕИС);
КонецЕсли;
КонецЕсли;
МассивРезультатов = Запрос.ВыполнитьПакет();
КоличествоРезультатов = МассивРезультатов.Количество();
Если ЕстьЭлектронноеАктирование Тогда
КоличествоРезультатов = КоличествоРезультатов - 5;
КонецЕсли;
Если ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда
РезультатПоКонтрагентам = МассивРезультатов[КоличествоРезультатов - 11];
РезультатПоШапке = МассивРезультатов[КоличествоРезультатов - 10];
РезультатПоИсходнымДанным = МассивРезультатов[КоличествоРезультатов - 9];
РезультатПоТабличнойЧасти = МассивРезультатов[КоличествоРезультатов - 8];
РезультатПоТабличнойЧастиВыгрузка = РезультатПоТабличнойЧасти.Выгрузить();
РезультатПоТабличнойЧастиТЗ = Новый ТаблицаЗначений;
РезультатПоТабличнойЧастиТЗ.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
РезультатПоТабличнойЧастиТЗ.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
РезультатПоТабличнойЧастиТЗ.Колонки.Добавить("Ссылка", РезультатПоТабличнойЧастиВыгрузка.Колонки.Ссылка.ТипЗначения);
РезультатПоТабличнойЧастиТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
РезультатПоТабличнойЧастиТЗ.Колонки.Добавить("КоличествоДо", Новый ОписаниеТипов("Число"));
Для Каждого СтрокаТЧ Из РезультатПоТабличнойЧастиВыгрузка Цикл
ЗаполнитьЗначенияСвойств(РезультатПоТабличнойЧастиТЗ.Добавить(), СтрокаТЧ);
КонецЦикла;
ТоварыДляМаркировки = ИнтеграцияИСМПУТ.ТаблицаТоварыДляЭДО(РезультатПоТабличнойЧастиТЗ, "КоличествоДо");
МаркировкаДо = МассивРезультатов[КоличествоРезультатов - 6].Выгрузить();
ПараметрыСканирования = Неопределено;
Основание = Неопределено;
Если ПараметрыПечати.Свойство("ЗаполнениеЭлектронногоДокумента") Тогда
Если РезультатПоТабличнойЧастиТЗ.Количество() Тогда
Основание = РезультатПоТабличнойЧастиТЗ[0].Ссылка;
ИначеЕсли МассивШапокОснований.Количество() Тогда
Основание = МассивШапокОснований[0];
КонецЕсли;
Если ТипЗнч(Основание) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
Основание = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Основание, "ДокументОснование");
КонецЕсли;
Если ТипЗнч(Основание) = Тип("ДокументСсылка.ВозвратТоваровОтКлиента") Тогда
Для Каждого СтрокаТЧ Из РезультатПоТабличнойЧастиТЗ Цикл
СтрокаТЧ.КоличествоДо = СтрокаТЧ.КоличествоДо - СтрокаТЧ.Количество;
СтрокаТЧ.Количество = 0;
КонецЦикла;
КонецЕсли;
ТоварыДляМаркировки = ИнтеграцияИСМПУТ.ТаблицаТоварыДляЭДО(РезультатПоТабличнойЧастиТЗ, "КоличествоДо");
ПараметрыСканирования = ШтрихкодированиеОбщегоНазначенияИС.ПараметрыСканирования(Основание);
МаркировкаДо = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимоеИКодыОСУ(
МаркировкаДо,
ТоварыДляМаркировки,
ПараметрыСканирования);
Иначе
МаркировкаДо = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(МаркировкаДо);
КонецЕсли;
Если МаркировкаДо.Количество() = 0 Тогда
Маркировка = МаркировкаДо.СкопироватьКолонки();
Иначе
Маркировка = МассивРезультатов[КоличествоРезультатов - 7].Выгрузить();
Если ПараметрыПечати.Свойство("ЗаполнениеЭлектронногоДокумента") Тогда
ТоварыДляМаркировки = ИнтеграцияИСМПУТ.ТаблицаТоварыДляЭДО(РезультатПоТабличнойЧастиТЗ, "Количество");
Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимоеИКодыОСУ(
Маркировка,
ТоварыДляМаркировки,
ПараметрыСканирования);
Иначе
Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(Маркировка);
КонецЕсли;
КонецЕсли;
РезультатПоПоставщикам = МассивРезультатов[КоличествоРезультатов - 5];
Прослеживаемость = МассивРезультатов[КоличествоРезультатов - 2];
ПрослеживаемыеКомплектующие = УчетПрослеживаемыхТоваровЛокализация.ПрослеживаемыеКомплектующиеДляПечатиДанных(
МассивРезультатов[КоличествоРезультатов - 1]);
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке" , РезультатПоШапке);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти" , РезультатПоТабличнойЧасти);
СтруктураДанныхДляПечати.Вставить("РезультатПоИсходнымДанным" , РезультатПоИсходнымДанным);
СтруктураДанныхДляПечати.Вставить("РезультатПоКонтрагентам" , РезультатПоКонтрагентам);
СтруктураДанныхДляПечати.Вставить("Маркировка" , Маркировка);
СтруктураДанныхДляПечати.Вставить("МаркировкаДо" , МаркировкаДо);
СтруктураДанныхДляПечати.Вставить("РезультатПоПоставщикам" , РезультатПоПоставщикам);
СтруктураДанныхДляПечати.Вставить("НомерСформированВСчетеФактуре" , Истина);
СтруктураДанныхДляПечати.Вставить("Прослеживаемость" , Прослеживаемость);
СтруктураДанныхДляПечати.Вставить("ПрослеживаемыеКомплектующие" , ПрослеживаемыеКомплектующие);
Иначе
РезультатПоКонтрагентам = МассивРезультатов[КоличествоРезультатов - 10];
РезультатПоШапке = МассивРезультатов[КоличествоРезультатов - 9];
РезультатПоИсходнымДанным = МассивРезультатов[КоличествоРезультатов - 8];
РезультатПоТабличнойЧасти = МассивРезультатов[КоличествоРезультатов - 7];
Маркировка = МассивРезультатов[КоличествоРезультатов - 6].Выгрузить();
Если ПараметрыПечати.Свойство("ЗаполнениеЭлектронногоДокумента") Тогда
Выборка = РезультатПоШапке.Выбрать();
Если Выборка.Следующий() И
(ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.КорректировкаРеализации")
Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ВозвратТоваровПоставщику")
Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ПередачаТоваровХранителю")
Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаТоваровСХранения")
Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаТоваровКлиенту")
Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ПередачаТоваровМеждуОрганизациями")
Или ТипЗнч(Выборка.ДокументОснование) = Тип("ДокументСсылка.ВозвратТоваровМеждуОрганизациями"))
Тогда
ДокументОснование = Выборка.ДокументОснование;
Товары = ИнтеграцияИСМПУТ.ТаблицаТоварыДляЭДО(РезультатПоТабличнойЧасти.Выгрузить(), "КоличествоБазовыхЕдиниц");
Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимоеИКодыОСУ(
Маркировка, Товары, ШтрихкодированиеОбщегоНазначенияИС.ПараметрыСканирования(ДокументОснование));
Иначе
Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(Маркировка);
КонецЕсли;
Иначе
Маркировка = ЭлектронноеВзаимодействиеИСМП.ЧастичноеСодержимое(Маркировка);
КонецЕсли;
РезультатПоПоставщикам = МассивРезультатов[КоличествоРезультатов - 5];
Прослеживаемость = МассивРезультатов[КоличествоРезультатов - 2];
ПрослеживаемыеКомплектующие = УчетПрослеживаемыхТоваровЛокализация.ПрослеживаемыеКомплектующиеДляПечатиДанных(
МассивРезультатов[КоличествоРезультатов - 1]);
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке" , РезультатПоШапке);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти" , РезультатПоТабличнойЧасти);
СтруктураДанныхДляПечати.Вставить("РезультатПоИсходнымДанным" , РезультатПоИсходнымДанным);
СтруктураДанныхДляПечати.Вставить("РезультатПоКонтрагентам" , РезультатПоКонтрагентам);
СтруктураДанныхДляПечати.Вставить("Маркировка" , Маркировка);
СтруктураДанныхДляПечати.Вставить("РезультатПоПоставщикам" , РезультатПоПоставщикам);
СтруктураДанныхДляПечати.Вставить("НомерСформированВСчетеФактуре" , Истина);
СтруктураДанныхДляПечати.Вставить("Прослеживаемость" , Прослеживаемость);
СтруктураДанныхДляПечати.Вставить("ПрослеживаемыеКомплектующие" , ПрослеживаемыеКомплектующие);
КонецЕсли;
Если ЗаполнятьПлатежноРасчетныеДокументы Тогда
СтруктураДанныхДляПечати.Вставить("ПлатежноРасчетныеДокументы", ПлатежноРасчетныеДокументы);
КонецЕсли;
Если ЕстьЭлектронноеАктирование Тогда
ЭлектронноеАктированиеЕИСУТ.ПоместитьРезультатВыполненияЗапросаВДанныеДляПечати(
МассивРезультатов, СтруктураДанныхДляПечати, КоличествоРезультатов);
КонецЕсли;
Возврат СтруктураДанныхДляПечати;
КонецФункции
Функция ПолучитьДанныеДляПечатнойФормыУПД(Знач ПараметрыПечати, МассивОбъектов) Экспорт
ПараметрыПечати.Вставить("ДополнитьДаннымиУПД", Истина);
ПараметрыПечати.Вставить("ПечатьВВалюте", Ложь);
Возврат ПолучитьДанныеДляПечатнойФормыСчетФактура(ПараметрыПечати, МассивОбъектов);
КонецФункции
Функция ПолучитьДанныеДляПечатнойФормыУКД(Знач ПараметрыПечати, МассивОбъектов) Экспорт
Возврат ПолучитьДанныеДляПечатнойФормыУПД(ПараметрыПечати, МассивОбъектов);
КонецФункции
Функция ПолучитьСчетаФактурыНаПечать(МассивОбъектов, Корректировочный = Ложь, ПечатьВВалюте = Ложь, Перевыставленный = Ложь) Экспорт
УстановитьПривилегированныйРежим(Истина);
ТаблицаОснований = Новый ТаблицаЗначений;
ТаблицаОснований.Колонки.Добавить("ДокументОснование", Документы.ТипВсеСсылки());
Для Каждого ДокументОснование Из МассивОбъектов Цикл
СтрокаОснования = ТаблицаОснований.Добавить();
СтрокаОснования.ДокументОснование = ДокументОснование;
КонецЦикла;
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| ДокументыОснования.ДокументОснование КАК ДокументОснование
|ПОМЕСТИТЬ ДокументыОснования
|ИЗ
| &ТаблицаОснований КАК ДокументыОснования
|;
|
|
|ВЫБРАТЬ
| ДокументыОснования.ДокументОснование КАК Ссылка,
| МИНИМУМ(ВЫБОР
| КОГДА ДанныеОснованийСчетовФактур.Валюта ЕСТЬ NULL
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК НеТребуетсяСчетФактура,
| МАКСИМУМ(ВЫБОР
| КОГДА &ПечатьВВалюте
| И ЕСТЬNULL(ДанныеОснованийСчетовФактур.Валюта, ДанныеОснованийСчетовФактур.Организация.ВалютаРегламентированногоУчета) =
| ДанныеОснованийСчетовФактур.Организация.ВалютаРегламентированногоУчета
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК НеТребуетсяПечатьВВалюте
|ПОМЕСТИТЬ ТаблицаОснований
|ИЗ
| ДокументыОснования КАК ДокументыОснования
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеОснованийСчетовФактур КАК ДанныеОснованийСчетовФактур
| ПО ДокументыОснования.ДокументОснование = ДанныеОснованийСчетовФактур.Регистратор
| И (ДанныеОснованийСчетовФактур.ТипСчетаФактуры = &ИдентификаторМетаданных)
|
|СГРУППИРОВАТЬ ПО
| ДокументыОснования.ДокументОснование
|;
|
|
|ВЫБРАТЬ
| ЕСТЬNULL(ИсправленныйСчетФактура.Ссылка, СчетаФактуры.Ссылка) КАК СчетФактура,
| ТаблицаОснований.Ссылка КАК ДокументОснование,
| МАКСИМУМ(СчетаФактуры.НомерИсправления) КАК НомерИсправления
|
|ПОМЕСТИТЬ НомераИсправлений
|ИЗ
| ТаблицаОснований КАК ТаблицаОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СчетаФактурыОснования
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетаФактуры
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК ИсправленныйСчетФактура
| ПО СчетаФактуры.СчетФактураОснование = ИсправленныйСчетФактура.Ссылка
| И СчетаФактуры.Исправление
| ПО СчетаФактурыОснования.Ссылка = СчетаФактуры.Ссылка
| И СчетаФактуры.Проведен
| И НЕ СчетаФактуры.ПометкаУдаления
| И (НЕ &ОтбиратьПоПревыставленным
| ИЛИ СчетаФактуры.Перевыставленный = &Перевыставленный)
|
| ПО ТаблицаОснований.Ссылка = СчетаФактурыОснования.ДокументОснование
| И НЕ ТаблицаОснований.НеТребуетсяСчетФактура
| И НЕ ТаблицаОснований.НеТребуетсяПечатьВВалюте
|
|СГРУППИРОВАТЬ ПО
| ЕСТЬNULL(ИсправленныйСчетФактура.Ссылка, СчетаФактуры.Ссылка),
| ТаблицаОснований.Ссылка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетаФактурыОснования.ДокументОснование КАК Ссылка
|
|ПОМЕСТИТЬ ОснованияСоСчетФактурой
|ИЗ
| НомераИсправлений КАК СчетаФактурыОснования
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетФактураВыданный.Ссылка КАК СчетФактура
|ИЗ
| Документ.СчетФактураВыданный КАК СчетФактураВыданный
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| НомераИсправлений КАК НомераИсправлений
| ПО
| НомераИсправлений.НомерИсправления = СчетФактураВыданный.НомерИсправления
| И НомераИсправлений.СчетФактура = ВЫБОР КОГДА СчетФактураВыданный.Исправление ТОГДА
| СчетФактураВыданный.СчетФактураОснование
| ИНАЧЕ
| СчетФактураВыданный.Ссылка
| КОНЕЦ
| И СчетФактураВыданный.Проведен
| И НЕ СчетФактураВыданный.ПометкаУдаления
|;
|
|
|ВЫБРАТЬ
| ТаблицаОснований.Ссылка КАК ДокументОснование,
| ТаблицаОснований.НеТребуетсяСчетФактура КАК НеТребуетсяСчетФактура,
| ТаблицаОснований.НеТребуетсяПечатьВВалюте КАК НеТребуетсяПечатьВВалюте,
| ВЫБОР
| КОГДА ОснованияСоСчетФактурой.Ссылка ЕСТЬ NULL ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК НеВыставленСчетФактура
|ИЗ
| ТаблицаОснований КАК ТаблицаОснований
| ЛЕВОЕ СОЕДИНЕНИЕ
| ОснованияСоСчетФактурой КАК ОснованияСоСчетФактурой
| ПО ТаблицаОснований.Ссылка = ОснованияСоСчетФактурой.Ссылка";
Запрос.УстановитьПараметр("ТаблицаОснований", ТаблицаОснований);
Запрос.УстановитьПараметр("ПечатьВВалюте", ПечатьВВалюте);
Запрос.УстановитьПараметр("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.СчетФактураВыданный"));
Запрос.УстановитьПараметр("Перевыставленный", Перевыставленный);
Запрос.УстановитьПараметр("ОтбиратьПоПревыставленным", ?(Перевыставленный = Неопределено, Ложь, Истина));
Если Корректировочный Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//УсловиеКорректировочный",
"И СчетаФактуры.Корректировочный");
КонецЕсли;
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.ВыполнитьПакет();
СчетаФактурыНаПечать = РезультатЗапроса[4].Выгрузить().ВыгрузитьКолонку("СчетФактура");
ТаблицаОшибок = РезультатЗапроса[5].Выгрузить();
Структура = Новый Структура;
Структура.Вставить("СчетаФактурыНаПечать", СчетаФактурыНаПечать);
Структура.Вставить("ТаблицаОшибок", ТаблицаОшибок);
Возврат Структура;
КонецФункции
Процедура ПоместитьВременнуюТаблицуШапокОснований(МенеджерВременныхТаблиц, МассивОснований)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
ТипыОснований = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОснований);
ТекстЗапроса = "";
ТекстОтветственныеЛица = "";
ПервыйТип = Истина;
ПервыйТипОтветственныеЛица = Истина;
Для Каждого ТипОснования Из ТипыОснований Цикл
ОбъектыТипа = ТипОснования.Значение;
ИмяОбъекта = Сред(ТипОснования.Ключ, 10);
Запрос.Параметры.Вставить("ДокументОснование_" + ИмяОбъекта, ОбъектыТипа);
Если Не ПустаяСтрока(ТекстЗапроса) Тогда
ТекстЗапроса = ТекстЗапроса + "
|
|ОБЪЕДИНИТЬ ВСЕ
|
|";
КонецЕсли;
Если Не ПустаяСтрока(ТекстОтветственныеЛица) Тогда
ТекстОтветственныеЛица = ТекстОтветственныеЛица + "
|
|ОБЪЕДИНИТЬ ВСЕ
|
|";
КонецЕсли;
МенеджерОбъекта = ОбщегоНазначенияУТ.ПолучитьМодульЛокализации(ИмяОбъекта);
Если МенеджерОбъекта = Неопределено Тогда
МенеджерОбъекта = Документы[ИмяОбъекта];
КонецЕсли;
ТекстЗапроса = ТекстЗапроса +
МенеджерОбъекта.ТекстЗапросаДанныхОснованияДляПечатнойФормыСчетФактура();
ИмяВременнойТаблицы = ИмяОбъекта + "ОтветственныеЛица";
ПараметрыОтветственныхЛиц = ОтветственныеЛицаСервер.ПараметрыОтветственныхЛицПоУмолчанию();
ПараметрыОтветственныхЛиц.ИмяТаблицыОтветственныеЛица = ИмяВременнойТаблицы;
ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(
ОбъектыТипа, МенеджерВременныхТаблиц, ПараметрыОтветственныхЛиц);
Если МенеджерВременныхТаблиц.Таблицы.Найти(ИмяВременнойТаблицы) <> Неопределено Тогда
ТекстОтветственныеЛица = ТекстОтветственныеЛица + "
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.РуководительНаименование КАК РуководительНаименование,
| Таблица.РуководительДолжность КАК РуководительДолжность,
| Таблица.ГлавныйБухгалтерНаименование КАК ГлавныйБухгалтерНаименование
|
|ИЗ
| " + ИмяВременнойТаблицы + " КАК Таблица";
ТекстОтветственныеЛица = СтрЗаменить(ТекстОтветственныеЛица,
"//ОператорПОМЕСТИТЬ", ?(ПервыйТипОтветственныеЛица, "ПОМЕСТИТЬ ТаблицаОтветственныеЛица", ""));
ПервыйТипОтветственныеЛица = Ложь;
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"//ОператорПОМЕСТИТЬ", ?(ПервыйТип, "ПОМЕСТИТЬ ТаблицаШапокДокументов", ""));
ПервыйТип = Ложь;
КонецЦикла;
Если ТекстЗапроса = "" Тогда
ТекстЗапроса = ПустойТекстЗапросаШапокОснований();
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|";
Если ТекстОтветственныеЛица = "" Тогда
ТекстОтветственныеЛица = "
|ВЫБРАТЬ
| НЕОПРЕДЕЛЕНО КАК Ссылка,
| """" КАК РуководительНаименование,
| """" КАК РуководительДолжность,
| """" КАК ГлавныйБухгалтерНаименование
|ПОМЕСТИТЬ ТаблицаОтветственныеЛица";
КонецЕсли;
Запрос.Текст = ТекстЗапроса + ТекстОтветственныеЛица;
УстановитьПривилегированныйРежим(Истина);
Запрос.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
Процедура ПоместитьВременнуюТаблицуДанныхОснований(МенеджерВременныхТаблиц, МассивОснований)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Если Запрос.МенеджерВременныхТаблиц.Таблицы.Найти("СчетаФактурыОснования") = Неопределено
И Запрос.МенеджерВременныхТаблиц.Таблицы.Найти("вт_ТаблицаСчетовФактур") <> Неопределено Тогда
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаОснований.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА НЕ ТаблицаОснований.Ссылка.Корректировочный
| И НЕ ТаблицаОснований.Ссылка.Исправление
| И НЕ ТаблицаОснований.Ссылка.Перевыставленный
| И НЕ ТаблицаОснований.Ссылка.НДССМежценовойРазницы
| И НЕ ТаблицаОснований.Ссылка.НачислениеНДСПриОтгрузке
| ТОГДА ТаблицаОснований.ДокументОснование
| ИНАЧЕ ТаблицаОснований.Ссылка
| КОНЕЦ КАК ДокументОснование,
| ТаблицаОснований.Ссылка.Корректировочный КАК Корректировочный,
| ТаблицаОснований.Ссылка.Дата КАК Дата,
| ТаблицаОснований.Ссылка.РеализацияЧерезКомиссионера КАК РеализацияЧерезКомиссионера
|ПОМЕСТИТЬ СчетаФактурыОснования
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ вт_ТаблицаСчетовФактур КАК вт_ТаблицаСчетовФактур
| ПО ТаблицаОснований.Ссылка = вт_ТаблицаСчетовФактур.СчетФактура";
Запрос.Выполнить();
КонецЕсли;
ТипыОснований = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОснований);
ТекстЗапроса = "";
ПервыйТип = Истина;
Для Каждого ТипОснования Из ТипыОснований Цикл
ОбъектыТипа = ТипОснования.Значение;
ИмяОбъекта = Сред(ТипОснования.Ключ, 10);
Запрос.Параметры.Вставить("ДокументОснование_" + ИмяОбъекта, ОбъектыТипа);
Если Не ПустаяСтрока(ТекстЗапроса) Тогда
ТекстЗапроса = ТекстЗапроса + "
|
|ОБЪЕДИНИТЬ ВСЕ
|
|";
КонецЕсли;
МенеджерОбъекта = ОбщегоНазначенияУТ.ПолучитьМодульЛокализации(ИмяОбъекта);
Если МенеджерОбъекта = Неопределено Тогда
МенеджерОбъекта = Документы[ИмяОбъекта];
КонецЕсли;
ТекстЗапроса = ТекстЗапроса +
МенеджерОбъекта.ТекстЗапросаДанныхОснованияДляПечатнойФормыСчетФактура();
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"//ОператорПОМЕСТИТЬ", ?(ПервыйТип, "ПОМЕСТИТЬ ТаблицаДанныхДокументовПредварительная", ""));
ПервыйТип = Ложь;
КонецЦикла;
ТекстЗапроса = ТекстЗапроса + "
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|// Определяем период для получения КПП с учетом истории и статуса крупнейшего налогоплательщика.
|
|ВЫБРАТЬ
| ДанныеОснований.Ссылка КАК Ссылка,
| ДанныеОснований.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеОснований.Валюта КАК Валюта,
| ДанныеОснований.Организация КАК Организация,
| ДанныеОснований.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеОснований.Подразделение КАК Подразделение,
| ДанныеОснований.Склад КАК Склад,
| ДанныеОснований.Грузоотправитель КАК Грузоотправитель,
| ДанныеОснований.Грузополучатель КАК Грузополучатель,
|
| ДанныеОснований.РасчетыЧерезОтдельногоКонтрагента КАК РасчетыЧерезОтдельногоКонтрагента,
|
| ДанныеОснований.Номенклатура КАК Номенклатура,
| ДанныеОснований.Содержание КАК Содержание,
| ДанныеОснований.Комиссионер КАК Комиссионер,
| ДанныеОснований.Основание КАК Основание,
| ДанныеОснований.ОснованиеДата КАК ОснованиеДата,
| ДанныеОснований.ОснованиеНомер КАК ОснованиеНомер,
|
| ДанныеОснований.БанковскийСчетОрганизации КАК БанковскийСчетОрганизации,
| ДанныеОснований.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеОснований.БанковскийСчетГрузоотправителя КАК БанковскийСчетГрузоотправителя,
| ДанныеОснований.БанковскийСчетГрузополучателя КАК БанковскийСчетГрузополучателя,
|
| ДанныеОснований.ДоверенностьНомер КАК ДоверенностьНомер,
| ДанныеОснований.ДоверенностьДата КАК ДоверенностьДата,
| ДанныеОснований.ДоверенностьВыдана КАК ДоверенностьВыдана,
| ДанныеОснований.ДоверенностьЛицо КАК ДоверенностьЛицо,
| ДанныеОснований.Менеджер КАК Менеджер,
| ДанныеОснований.Кладовщик КАК Кладовщик,
| ДанныеОснований.ДолжностьКладовщика КАК ДолжностьКладовщика,
| ДанныеОснований.АдресДоставки КАК АдресДоставки,
|
| ЕСТЬNULL(СчетаФактурыОснования.Дата,
| ДанныеОснований.Период) КАК Период
|
|ПОМЕСТИТЬ ТаблицаДанныхДокументов
|
|ИЗ
| ТаблицаДанныхДокументовПредварительная КАК ДанныеОснований
| ЛЕВОЕ СОЕДИНЕНИЕ СчетаФактурыОснования КАК СчетаФактурыОснования
| ПО ДанныеОснований.Ссылка = СчетаФактурыОснования.ДокументОснование
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|УНИЧТОЖИТЬ ТаблицаДанныхДокументовПредварительная
|";
Запрос.Текст = ТекстЗапроса;
УстановитьПривилегированныйРежим(Истина);
Запрос.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
Процедура ПоместитьВременнуюТаблицуЗаполненияПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| СчетФактураВыданныйДокументыОснования.Ссылка,
| СчетФактураВыданныйДокументыОснования.Ссылка.Организация КАК Организация,
| СчетФактураВыданныйДокументыОснования.ДокументОснование КАК ДокументОснование
|ПОМЕСТИТЬ ТаблицаЗаполненияПлатежноРасчетныхДокументов
|ИЗ
| СчетаФактурыОснования_Шапка КАК СчетФактураВыданныйДокументыОснования
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ПлатежноРасчетныеДокументы КАК СчетФактураВыданныйПлатежноРасчетныеДокументы
| ПО СчетФактураВыданныйДокументыОснования.Ссылка = СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка
|ГДЕ
| СчетФактураВыданныйПлатежноРасчетныеДокументы.НомерСтроки ЕСТЬ NULL
|
|ИНДЕКСИРОВАТЬ ПО
| ДокументОснование,
| Организация";
Запрос.Выполнить();
КонецПроцедуры
Функция ПоместитьВременнуюТаблицуПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц, МассивАналитикУчетаПоПартнерам)
ПараметрыПоиска = ВзаиморасчетыСервер.ИнициализироватьПараметрыПоискаОснованийИДокументовОплаты();
ПараметрыПоиска.ПараметрыОтбораПоТаблицеДокументов.ИмяПоля = "ДокументОснование";
ПараметрыПоиска.ПараметрыОтбораПоТаблицеДокументов.ИмяТаблицыОтбора =
"ТаблицаЗаполненияПлатежноРасчетныхДокументов";
ПараметрыПоиска.ТолькоАвансы = Истина;
ПараметрыПоиска.ОграничитьТипыДокументовОплаты = Истина;
ВзаиморасчетыСервер.ПодготовитьВТ_РасчетыСКлиентами_ОснованияИДокументыОплаты(
МенеджерВременныхТаблиц,
ПараметрыПоиска);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов();
Запрос.УстановитьПараметр("МассивАналитикУчетаПоПартнерам", МассивАналитикУчетаПоПартнерам);
ПлатежноРасчетныеДокументыСводно = Новый ТаблицаЗначений;
ПлатежноРасчетныеДокументыСводно.Колонки.Добавить("Ссылка",
Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный"));
ПлатежноРасчетныеДокументыСводно.Колонки.Добавить("СтрокаПлатежноРасчетныеДокументы",
Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(1000)));
ПлатежноРасчетныеДокументы = Новый ТаблицаЗначений;
ПлатежноРасчетныеДокументы.Колонки.Добавить("НомерПлатежноРасчетногоДокумента",
Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(30)));
ПлатежноРасчетныеДокументы.Колонки.Добавить("ДатаПлатежноРасчетногоДокумента",
Новый ОписаниеТипов("Дата",,, Новый КвалификаторыДаты(ЧастиДаты.Дата)));
ВыборкаСчетФактур = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСчетФактур.Следующий() Цикл
ПлатежноРасчетныеДокументы.Очистить();
ЗаполнитьТаблицуПлатежноРасчетныхДокументовПоВыборке(ПлатежноРасчетныеДокументы, ВыборкаСчетФактур);
НоваяСтрока = ПлатежноРасчетныеДокументыСводно.Добавить();
НоваяСтрока.Ссылка = ВыборкаСчетФактур.СчетФактура;
НоваяСтрока.СтрокаПлатежноРасчетныеДокументы = СтрокаРасчетноПлатежныхДокументов(ПлатежноРасчетныеДокументы);
КонецЦикла;
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Ссылка,
| Таблица.СтрокаПлатежноРасчетныеДокументы
|ПОМЕСТИТЬ ТаблицаПлатежноРасчетныеДокументы
|ИЗ
| &ПлатежноРасчетныеДокументы КАК Таблица";
Запрос.УстановитьПараметр("ПлатежноРасчетныеДокументы", ПлатежноРасчетныеДокументыСводно);
Запрос.Выполнить();
Возврат ПлатежноРасчетныеДокументы;
КонецФункции
Процедура ПоместитьВременнуюТаблицуПокупатели(МенеджерВременныхТаблиц, МассивОбъектов)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаПокупателей.Ссылка КАК Ссылка,
| ТаблицаПокупателей.Покупатель КАК Покупатель,
| ТаблицаПокупателей.НомерСчетаФактуры КАК НомерСчетаФактуры
|ПОМЕСТИТЬ СчетаФактурыПокупатели
|ИЗ
| Документ.СчетФактураВыданный.Покупатели КАК ТаблицаПокупателей
|ГДЕ
| ТаблицаПокупателей.Ссылка В(&МассивОбъектов)";
Запрос.Выполнить();
КонецПроцедуры
Процедура ПоместитьВременнуюТаблицуДанныхПоставщика(МенеджерВременныхТаблиц)
Обработки.ПечатьОбщихФорм.ПоместитьВременнуюТаблицуДанныхПоставщика(МенеджерВременныхТаблиц);
КонецПроцедуры
Процедура СформироватьВтСчетаФактурыПолученные(МенеджерВременныхТаблиц, ПараметрыПечати)
Если Не ПараметрыПечати.Свойство("МассивСчетФактураПолученный") Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСчетФактураПолученный", ПараметрыПечати.МассивСчетФактураПолученный);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаОснований.ДокументОснование КАК ДокументОснование,
| ТаблицаОснований.ДокументОснование КАК ДокументОснованиеДляПечати,
| ТаблицаОснований.Ссылка КАК Ссылка
|
|ПОМЕСТИТЬ СчетаФактурыПолученныеОснования
|ИЗ
| Документ.СчетФактураПолученный.ДокументыОснования КАК ТаблицаОснований
|ГДЕ
| ТаблицаОснований.Ссылка В (&МассивСчетФактураПолученный)
|;
|
|
|ВЫБРАТЬ
| СчетаФактурыОснования.Ссылка КАК Ссылка,
| МИНИМУМ(СчетаФактурыОснования.ДокументОснование) КАК ДокументОснование
|ПОМЕСТИТЬ СчетаФактурыПолученныеОснованияПервые
|ИЗ
| СчетаФактурыПолученныеОснования КАК СчетаФактурыОснования
|
|СГРУППИРОВАТЬ ПО
| СчетаФактурыОснования.Ссылка
|
|;
|
|ВЫБРАТЬ
| СчетаФактурыОснования.Ссылка КАК Ссылка,
| СчетаФактурыОснования.ДокументОснование КАК ДокументОснование,
| ДанныеОснований.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеКонтрагента.СтранаРегистрации КАК СтранаРегистрации,
|
| ВЫБОР КОГДА ДанныеКонтрагента.ОбособленноеПодразделение ТОГДА
| ДанныеКонтрагента.ГоловнойКонтрагент
| ИНАЧЕ
| ДанныеКонтрагента.Ссылка
| КОНЕЦ КАК Организация,
|
| ВЫБОР КОГДА ДанныеОрганизации.ОбособленноеПодразделение ТОГДА
| ДанныеОрганизации.ГоловнаяОрганизация
| ИНАЧЕ
| ДанныеОрганизации.Ссылка
| КОНЕЦ КАК Контрагент,
|
| ВЫБОР КОГДА ДанныеОснований.Грузоотправитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА
| СчетФактураПолученный.Контрагент
| ИНАЧЕ
| ДанныеОснований.Грузоотправитель
| КОНЕЦ КАК Грузоотправитель,
|
| ВЫБОР КОГДА ДанныеОснований.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА
| СчетФактураПолученный.Организация
| ИНАЧЕ
| ДанныеОснований.Грузополучатель
| КОНЕЦ КАК Грузополучатель,
|
| ДанныеКонтрагента.КПП КАК КПППоставщика,
| ДанныеОрганизации.КПП КАК КПППокупателя,
| ДанныеОрганизации.ИНН КАК ИННПокупателя,
|
| ВЫБОР КОГДА ДанныеОснований.Комиссионер = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) ТОГДА
| ДанныеОснований.Организация.Префикс
| ИНАЧЕ
| ДанныеОснований.Комиссионер.Префикс
| КОНЕЦ КАК Префикс,
|
| ДанныеОснований.Комиссионер КАК Комиссионер,
| ДанныеОснований.КодСпециальныхОбстоятельств КАК КодСпециальныхОбстоятельств,
| ДанныеВалюты.Ссылка КАК Валюта,
| ДанныеВалюты.НаименованиеПолное КАК ВалютаНаименованиеПолное,
| ДанныеВалюты.Код КАК ВалютаКод
|
|ПОМЕСТИТЬ ДанныеОснованийСчетФактураПолученный
|ИЗ
| СчетаФактурыПолученныеОснованияПервые КАК СчетаФактурыОснования
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный
| ПО СчетаФактурыОснования.Ссылка = СчетФактураПолученный.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаШапокДокументов КАК ДанныеОснований
| ПО СчетаФактурыОснования.ДокументОснование = ДанныеОснований.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ДанныеОрганизации
| ПО СчетФактураПолученный.Организация = ДанныеОрганизации.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК ДанныеКонтрагента
| ПО СчетФактураПолученный.Контрагент = ДанныеКонтрагента.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК ДанныеВалюты
| ПО ДанныеОснований.Валюта = ДанныеВалюты.Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|
|;
|
|ВЫБРАТЬ
| СчетаФактурыОснования.Ссылка КАК Ссылка,
| МАКСИМУМ(ВЫБОР
| КОГДА НЕ ТаблицаТоваров.ЭтоТовар
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ЕстьУслуги,
| МАКСИМУМ(ВЫБОР
| КОГДА ТаблицаТоваров.ЭтоТовар
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ЕстьТовары
|ПОМЕСТИТЬ
| НоменклатураДокументовПолученные
|ИЗ
| СчетаФактурыПолученныеОснования КАК СчетаФактурыОснования
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаТоваров КАК ТаблицаТоваров
| ПО СчетаФактурыОснования.ДокументОснование = ТаблицаТоваров.Ссылка
|
|СГРУППИРОВАТЬ ПО
| СчетаФактурыОснования.Ссылка
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|";
Запрос.Выполнить();
КонецПроцедуры
Процедура СформироватьВТПорядковыеНомераТаблицыТоваровИПредставления5а(МенеджерВременныхТаблиц, ПараметрыПечати)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| СчетаФактурыОснования.Ссылка КАК СчетФактура,
| СчетаФактурыОснования.ДокументОснованиеДляПечати КАК ДокументОснование,
| МИНИМУМ(ТаблицаДокумента.НомерСтроки) КАК НомерСтроки,
| ТаблицаДокумента.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ,
| ТаблицаДокумента.Номенклатура КАК Номенклатура,
| ТаблицаДокумента.НоменклатураНаименование КАК НоменклатураНаименование,
| ТаблицаДокумента.КодТНВЭД КАК КодТНВЭД,
| ТаблицаДокумента.Характеристика КАК Характеристика,
| ТаблицаДокумента.Серия КАК Серия,
| ТаблицаДокумента.НомерГТД КАК НомерГТД,
| ТаблицаДокумента.Цена КАК Цена,
| ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС,
|
|
|
| ТаблицаДокумента.ЦенаДо КАК ЦенаДо
|ПОМЕСТИТЬ АналитикиТаблицыТоваровБезНомеровСтрок
|ИЗ
| ТаблицаТоваровДокументов КАК ТаблицаДокумента
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования КАК СчетаФактурыОснования
| ПО (ВЫБОР
| КОГДА СчетаФактурыОснования.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОЗакупках
| ТОГДА СчетаФактурыОснования.Ссылка = ТаблицаДокумента.СсылкаСФ
| ИНАЧЕ СчетаФактурыОснования.ДокументОснование = ТаблицаДокумента.Ссылка
| КОНЕЦ)
|ГДЕ
| НЕ ТаблицаДокумента.ЭтоВозвратнаяТара
|
|СГРУППИРОВАТЬ ПО
| СчетаФактурыОснования.Ссылка,
| СчетаФактурыОснования.ДокументОснованиеДляПечати,
| ТаблицаДокумента.НомерСтрокиИсходногоСФ,
| ТаблицаДокумента.Номенклатура,
| ТаблицаДокумента.НоменклатураНаименование,
| ТаблицаДокумента.КодТНВЭД,
| ТаблицаДокумента.Характеристика,
| ТаблицаДокумента.Серия,
| ТаблицаДокумента.НомерГТД,
| ТаблицаДокумента.Цена,
| ТаблицаДокумента.СтавкаНДС,
|
| ТаблицаДокумента.ЦенаДо
|";
Если ПараметрыПечати.Свойство("МассивСчетФактураПолученный") Тогда
Запрос.Текст = Запрос.Текст + "
|
|ОБЪЕДИНИТЬ ВСЕ
|
|" + СтрЗаменить(
СтрЗаменить(
Запрос.Текст, "ПОМЕСТИТЬ АналитикиТаблицыТоваровБезНомеровСтрок", ""),
"СчетаФактурыОснования",
"СчетаФактурыПолученныеОснования");
КонецЕсли;
Запрос.Текст = Запрос.Текст + "
|;
|
|////////////////////////////////////////////////////////////////////////////////
|";
Если ПараметрыПечати.ВыводитьНаборы Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ДанныеНаборов",
"ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ТаблицаДокумента.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ТаблицаДокумента.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаДокумента.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаДокумента.ЭтоКомплектующие КАК ЭтоКомплектующие,
| ТаблицаДокумента.ЭтоНабор КАК ЭтоНабор,
| ТаблицаДокумента.ПолныйНабор КАК ПолныйНабор,
| МИНИМУМ(ТаблицаДокумента.НомерСтрокиНаборы) КАК НомерСтрокиНаборы,");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ГруппировкаНаборов",
"ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах,
| ТаблицаДокумента.ВариантРасчетаЦеныНабора,
| ТаблицаДокумента.НоменклатураНабора,
| ТаблицаДокумента.ХарактеристикаНабора,
| ТаблицаДокумента.ЭтоКомплектующие,
| ТаблицаДокумента.ЭтоНабор,
| ТаблицаДокумента.ПолныйНабор,");
КонецЕсли;
Запрос.Текст = Запрос.Текст + "
|ВЫБРАТЬ
| АналитикиТаблицыТоваров.СчетФактура КАК СчетФактура,
| МИНИМУМ(АналитикиТаблицыТоваров.НомерСтроки) КАК НомерСтроки,
| 0 КАК НомерСтрокиСФ,
| АналитикиТаблицыТоваров.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ,
| АналитикиТаблицыТоваров.Номенклатура КАК Номенклатура,
| АналитикиТаблицыТоваров.НоменклатураНаименование КАК НоменклатураНаименование,
| АналитикиТаблицыТоваров.КодТНВЭД КАК КодТНВЭД,
| АналитикиТаблицыТоваров.Характеристика КАК Характеристика,
| АналитикиТаблицыТоваров.Серия КАК Серия,
| АналитикиТаблицыТоваров.НомерГТД КАК НомерГТД,
| АналитикиТаблицыТоваров.Цена КАК Цена,
| АналитикиТаблицыТоваров.СтавкаНДС КАК СтавкаНДС,
|
|
|
| АналитикиТаблицыТоваров.ЦенаДо КАК ЦенаДо
|ИЗ
| АналитикиТаблицыТоваровБезНомеровСтрок КАК АналитикиТаблицыТоваров
|
|СГРУППИРОВАТЬ ПО
| АналитикиТаблицыТоваров.СчетФактура,
| АналитикиТаблицыТоваров.НомерСтрокиИсходногоСФ,
| АналитикиТаблицыТоваров.Номенклатура,
| АналитикиТаблицыТоваров.НоменклатураНаименование,
| АналитикиТаблицыТоваров.КодТНВЭД,
| АналитикиТаблицыТоваров.Характеристика,
| АналитикиТаблицыТоваров.Серия,
| АналитикиТаблицыТоваров.НомерГТД,
| АналитикиТаблицыТоваров.Цена,
| АналитикиТаблицыТоваров.СтавкаНДС,
|
| АналитикиТаблицыТоваров.ЦенаДо
|
|УПОРЯДОЧИТЬ ПО
| СчетФактура,
|
| НомерСтроки,
| НоменклатураНаименование,
| НомерГТД
|";
Если ПараметрыПечати.ВыводитьНаборы Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ДанныеНаборовСгруппированные",
"АналитикиТаблицыТоваров.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| АналитикиТаблицыТоваров.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| АналитикиТаблицыТоваров.НоменклатураНабора КАК НоменклатураНабора,
| АналитикиТаблицыТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| АналитикиТаблицыТоваров.ЭтоКомплектующие КАК ЭтоКомплектующие,
| АналитикиТаблицыТоваров.ЭтоНабор КАК ЭтоНабор,
| АналитикиТаблицыТоваров.ПолныйНабор КАК ПолныйНабор,
| МИНИМУМ(АналитикиТаблицыТоваров.НомерСтрокиНаборы) КАК НомерСтрокиНаборы,");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ГруппировкаНаборовСгруппированные",
"АналитикиТаблицыТоваров.ВариантПредставленияНабораВПечатныхФормах,
| АналитикиТаблицыТоваров.ВариантРасчетаЦеныНабора,
| АналитикиТаблицыТоваров.НоменклатураНабора,
| АналитикиТаблицыТоваров.ХарактеристикаНабора,
| АналитикиТаблицыТоваров.ЭтоКомплектующие,
| АналитикиТаблицыТоваров.ЭтоНабор,
| АналитикиТаблицыТоваров.ПолныйНабор,");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ПорядокНаборов",
"НомерСтрокиНаборы,
| НоменклатураНабора,
| ХарактеристикаНабора,
| ЭтоНабор УБЫВ,");
КонецЕсли;
НомерСтрокиСФ = 1;
ТекущийСФ = Неопределено;
ТаблицаТоваров = Запрос.Выполнить().Выгрузить();
Для Каждого ТекущиеДанные Из ТаблицаТоваров Цикл
Если ПараметрыПечати.ВыводитьНаборы
И ТекущиеДанные.ЭтоНабор
И Не ТекущиеДанные.ВариантПредставленияНабораВПечатныхФормах = Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор Тогда
Продолжить;
КонецЕсли;
Если Не ТекущийСФ = ТекущиеДанные.СчетФактура Тогда
ТекущийСФ = ТекущиеДанные.СчетФактура;
НомерСтрокиСФ = 1;
КонецЕсли;
ТекущиеДанные.НомерСтрокиСФ = НомерСтрокиСФ;
НомерСтрокиСФ = НомерСтрокиСФ + 1;
КонецЦикла;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТоваров.СчетФактура КАК СчетФактура,
| ТаблицаТоваров.НомерСтрокиСФ КАК НомерСтрокиСФ,
| ТаблицаТоваров.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.НоменклатураНаименование КАК НоменклатураНаименование,
| ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.Цена КАК Цена,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
|
|
|
| ТаблицаТоваров.ЦенаДо КАК ЦенаДо
|ПОМЕСТИТЬ АналитикиТаблицыТоваровСНомерамиСтрок
|ИЗ
| &ТаблицаТоваровСНомерамиСтрок КАК ТаблицаТоваров
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.СчетФактура КАК СчетФактура,
| ТаблицаТоваровБезНомеровСтрок.ДокументОснование КАК ДокументОснование,
| ТаблицаТоваров.НомерСтрокиСФ КАК НомерСтрокиСФ,
| ТаблицаТоваров.НоменклатураНаименование КАК Содержание
|ИЗ
| АналитикиТаблицыТоваровСНомерамиСтрок КАК ТаблицаТоваров
|
| ЛЕВОЕ СОЕДИНЕНИЕ АналитикиТаблицыТоваровБезНомеровСтрок КАК ТаблицаТоваровБезНомеровСтрок
| ПО ТаблицаТоваровБезНомеровСтрок.СчетФактура = ТаблицаТоваров.СчетФактура
| И ТаблицаТоваровБезНомеровСтрок.НомерСтрокиИсходногоСФ = ТаблицаТоваров.НомерСтрокиИсходногоСФ
| И ТаблицаТоваровБезНомеровСтрок.Номенклатура = ТаблицаТоваров.Номенклатура
| И ТаблицаТоваровБезНомеровСтрок.НоменклатураНаименование = ТаблицаТоваров.НоменклатураНаименование
| И ТаблицаТоваровБезНомеровСтрок.КодТНВЭД = ТаблицаТоваров.КодТНВЭД
| И ТаблицаТоваровБезНомеровСтрок.Характеристика = ТаблицаТоваров.Характеристика
| И ТаблицаТоваровБезНомеровСтрок.Серия = ТаблицаТоваров.Серия
| И ТаблицаТоваровБезНомеровСтрок.НомерГТД = ТаблицаТоваров.НомерГТД
| И ТаблицаТоваровБезНомеровСтрок.Цена = ТаблицаТоваров.Цена
| И ТаблицаТоваровБезНомеровСтрок.СтавкаНДС = ТаблицаТоваров.СтавкаНДС
| И ТаблицаТоваровБезНомеровСтрок.ЦенаДо = ТаблицаТоваров.ЦенаДо
|
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.СчетФактура,
| ТаблицаТоваровБезНомеровСтрок.ДокументОснование,
| ТаблицаТоваров.НомерСтрокиСФ,
| ТаблицаТоваров.НоменклатураНаименование
|";
Если ПараметрыПечати.ВыводитьНаборы Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ДанныеНаборов",
"ТаблицаТоваров.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ТаблицаТоваров.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваров.ЭтоКомплектующие КАК ЭтоКомплектующие,
| ТаблицаТоваров.ЭтоНабор КАК ЭтоНабор,
| ТаблицаТоваров.ПолныйНабор КАК ПолныйНабор,");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//ГруппировкаНаборов",
"ТаблицаТоваров.ВариантПредставленияНабораВПечатныхФормах,
| ТаблицаТоваров.ВариантРасчетаЦеныНабора,
| ТаблицаТоваров.НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора,
| ТаблицаТоваров.ЭтоКомплектующие,
| ТаблицаТоваров.ЭтоНабор,
| ТаблицаТоваров.ПолныйНабор,");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "//СоединениеНаборов",
"И ТаблицаТоваровБезНомеровСтрок.ВариантПредставленияНабораВПечатныхФормах = ТаблицаТоваров.ВариантПредставленияНабораВПечатныхФормах
| И ТаблицаТоваровБезНомеровСтрок.ВариантРасчетаЦеныНабора = ТаблицаТоваров.ВариантРасчетаЦеныНабора
| И ТаблицаТоваровБезНомеровСтрок.НоменклатураНабора = ТаблицаТоваров.НоменклатураНабора
| И ТаблицаТоваровБезНомеровСтрок.ХарактеристикаНабора = ТаблицаТоваров.ХарактеристикаНабора
| И ТаблицаТоваровБезНомеровСтрок.ЭтоКомплектующие = ТаблицаТоваров.ЭтоКомплектующие
| И ТаблицаТоваровБезНомеровСтрок.ЭтоНабор = ТаблицаТоваров.ЭтоНабор
| И ТаблицаТоваровБезНомеровСтрок.ПолныйНабор = ТаблицаТоваров.ПолныйНабор");
КонецЕсли;
Запрос.УстановитьПараметр("ТаблицаТоваровСНомерамиСтрок", ТаблицаТоваров);
ТаблицаТоваров = Запрос.Выполнить().Выгрузить();
ПредставленияСтрок5а = ПолучитьПредставленияСтроки5а(ТаблицаТоваров, МенеджерВременныхТаблиц);
Запрос.Текст =
"ВЫБРАТЬ
| *
|ПОМЕСТИТЬ ПредставленияСтрок5а
|ИЗ
| &ПредставленияСтрок5а КАК ПредставленияСтрок5а
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура
|;
|
|
|УНИЧТОЖИТЬ АналитикиТаблицыТоваровБезНомеровСтрок
|";
Запрос.УстановитьПараметр("ПредставленияСтрок5а", ПредставленияСтрок5а);
Запрос.Выполнить();
ИменаКолонок = РасчетСебестоимостиПрикладныеАлгоритмы.ПолучитьИменаКолонокСтрокой(ТаблицаТоваров);
РасчетСебестоимостиПрикладныеАлгоритмы.ПоместитьТаблицуЗначенийВоВременнуюТаблицу(Запрос.МенеджерВременныхТаблиц,
"ТаблицаТоваровНомераСтрокСФ", ТаблицаТоваров, ИменаКолонок, "ДокументОснование");
КонецПроцедуры
Функция ПустойТекстЗапросаШапокОснований()
ТекстЗапроса =
"ВЫБРАТЬ
| НЕОПРЕДЕЛЕНО КАК Ссылка,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПустаяСсылка) КАК ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК Валюта,
| ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка) КАК НалогообложениеНДС,
| ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка) КАК Подразделение,
| ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК Склад,
| ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Грузоотправитель,
| ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Грузополучатель,
| ЛОЖЬ КАК РасчетыЧерезОтдельногоКонтрагента,
| НЕОПРЕДЕЛЕНО КАК Номенклатура,
| """" КАК Содержание,
| ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Комиссионер,
| """" КАК Основание,
| ДАТАВРЕМЯ(1,1,1) КАК ОснованиеДата,
| """" КАК ОснованиеНомер,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетОрганизации,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетКонтрагента,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетГрузоотправителя,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетГрузополучателя,
| """" КАК ДоверенностьНомер,
| ДАТАВРЕМЯ(1,1,1) КАК ДоверенностьДата,
| """" КАК ДоверенностьВыдана,
| """" КАК ДоверенностьЛицо,
| """" КАК Менеджер,
| """" КАК Кладовщик,
| """" КАК ДолжностьКладовщика,
| """" КАК АдресДоставки,
| """" КАК ДанныеТранспортнаяНакладная,
| """" КАК СопроводительныеДокументы,
| """" КАК КодСпециальныхОбстоятельств,
| """" КАК АдресДоставкиЗначенияПолей,
| """" КАК АдресДоставкиЗначение
|ПОМЕСТИТЬ ТаблицаШапокДокументов";
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "Партнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Партнер");
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Контрагент");
КонецПроцедуры
Процедура СформироватьПредставлениеВыставленКомиссионеру(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетаФактуры.Ссылка КАК Ссылка,
| СчетаФактуры.Ссылка.Дата КАК Дата,
| СчетаФактуры.Ссылка.Контрагент КАК Контрагент,
| СчетаФактуры.Ссылка.ИННКонтрагента КАК ИНН,
| СчетаФактуры.Ссылка.КППКонтрагента КАК КПП,
| Покупатели.НомерСчетаФактуры КАК НомерСчетаФактуры
|
|ИЗ
| СчетаФактурыОснования КАК СчетаФактуры
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Покупатели КАК Покупатели
| ПО СчетаФактуры.Ссылка = Покупатели.Ссылка
|
|ГДЕ
| СчетаФактуры.РеализацияЧерезКомиссионера
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|ИТОГИ ПО
| Ссылка
|";
ДанныеПечати = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Результат = Новый ТаблицаЗначений();
Результат.Колонки.Добавить("СчетФактура", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный,ДокументСсылка.СчетФактураКомиссионеру"));
Результат.Колонки.Добавить("ПредставлениеВыставленКомиссионеру", Новый ОписаниеТипов("Строка"));
Пока ДанныеПечати.Следующий() Цикл
НоваяСтрока = Результат.Добавить();
НоваяСтрока.СчетФактура = ДанныеПечати.Ссылка;
СведенияОКомиссионере = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Контрагент, ДанныеПечати.Дата);
Если ЗначениеЗаполнено(ДанныеПечати.ИНН) Тогда
ИННКППКомиссионера = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1/%2'"),
ДанныеПечати.ИНН,
ДанныеПечати.КПП);
Иначе
ИННКППКомиссионера = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1/%2'"),
ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКомиссионере, "ИНН", Ложь),
ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКомиссионере, "КПП", Ложь));
КонецЕсли;
ДанныеПоСчетамФактурам = ДанныеПечати.Выбрать();
ВыставленныеСчетаФактуры = Новый Массив;
Пока ДанныеПоСчетамФактурам.Следующий() Цикл
ВыставленныеСчетаФактуры.Добавить(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='№ %1 от %2'"),
ДанныеПоСчетамФактурам.НомерСчетаФактуры,
Формат(ДанныеПечати.Дата, "ДЛФ=D")));
КонецЦикла;
ПредставлениеСчетаФактуры = СтрСоединить(ВыставленныеСчетаФактуры, ", ");
НоваяСтрока.ПредставлениеВыставленКомиссионеру = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Выставлен комиссионеру %1, ИНН/КПП: %2, по счетам-фактурам %3'"),
СведенияОКомиссионере.ПолноеНаименование, ИННКППКомиссионера, ПредставлениеСчетаФактуры);
КонецЦикла;
Запрос.Текст =
"ВЫБРАТЬ
| *
|ПОМЕСТИТЬ ПредставлениеВыставленКомиссионеру
|ИЗ
| &ПредставлениеВыставленКомиссионеру КАК ДанныеКомиссионера
|
|ИНДЕКСИРОВАТЬ ПО
| СчетФактура
|;
|";
Запрос.УстановитьПараметр("ПредставлениеВыставленКомиссионеру", Результат);
Запрос.Выполнить();
КонецПроцедуры
#Область ПечатьПоДаннымТорговыхДокументов
Процедура СформироватьВременнуюТаблицуТоваровДляПечати(МенеджерВременныхТаблиц, МассивОснований, ПараметрыПечати) Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
ТипыОснований = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОснований);
ТекстОбщейТаблицыТовары = "";
ТекстыОбщейТаблицыТоваров = Новый Массив;
ПервыйТип = Истина;
ЕстьНаборы = Ложь;
ЕстьОтчетыДавальцу = Ложь;
Для Каждого ТипОснования Из ТипыОснований Цикл
ПараметрыЗаполнения = ПродажиСервер.ПараметрыЗаполненияВременнойТаблицыТоваров();
ПараметрыЗаполнения.ПересчитыватьВВалютуРегл = Не ПараметрыПечати.ПечатьВВалюте;
ПараметрыЗаполнения.АктуализироватьРасчеты = Ложь;
ПараметрыЗаполнения.ДляСчетаФактуры = Истина;
ПараметрыЗаполнения.Вставить("ПоОтчетуДавальцу", ЕстьОтчетыДавальцу);
ИмяОбъекта = Сред(ТипОснования.Ключ, 10);
Если ИмяОбъекта = "ВозвратТоваровПоставщику"
Или ИмяОбъекта = "ВыкупВозвратнойТарыКлиентом"
Или ИмяОбъекта = "ЗаписьКнигиПродаж"
Или ИмяОбъекта = "ПередачаТоваровМеждуОрганизациями"
Или ИмяОбъекта = "РеализацияТоваровУслуг"
Или ИмяОбъекта = "АктВыполненныхРабот"
Или ИмяОбъекта = "КорректировкаРеализации"
Или ИмяОбъекта = "ВыкупТоваровХранителем"
Или ИмяОбъекта = "ОтгрузкаТоваровКлиенту" Тогда
ПараметрыЗаполнения.ВключаяНомераГТД = Истина;
КонецЕсли;
Если ИмяОбъекта = "КорректировкаРеализации" Тогда
ПараметрыЗаполнения.ВключаяДоКорректировки = Истина;
КонецЕсли;
МенеджерОбъекта = ОбщегоНазначенияУТ.ПолучитьМодульЛокализации(ИмяОбъекта);
Если МенеджерОбъекта = Неопределено Тогда
МенеджерОбъекта = Документы[ИмяОбъекта];
КонецЕсли;
Если ИмяОбъекта = "ОтчетПоКомиссииМеждуОрганизациями" Тогда
МенеджерОбъекта.ПоместитьВременнуюТаблицуТоваровПоВознаграждению(МенеджерВременныхТаблиц, ПараметрыЗаполнения);
Иначе
МенеджерОбъекта.ПоместитьВременнуюТаблицуТоваров(МенеджерВременныхТаблиц, ПараметрыЗаполнения);
КонецЕсли;
Если ИмяОбъекта = "КорректировкаРеализации"
Или ИмяОбъекта = "ВозвратТоваровОтКлиента"
Или ИмяОбъекта = "ВозвратТоваровМеждуОрганизациями" Тогда
МенеджерОбъекта.ПреобразоватьВременнуюТаблицуТоваровДляСчетаФактуры(МенеджерВременныхТаблиц);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.Номенклатура КАК Номенклатура,
|
| ТаблицаДокумента.Характеристика КАК Характеристика,
| ТаблицаДокумента.Серия КАК Серия,
| ТаблицаДокумента.Упаковка КАК Упаковка,
| ТаблицаДокумента.НомерГТД КАК НомерГТД,
|
| ТаблицаДокумента.Количество КАК Количество,
| ТаблицаДокумента.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаДокумента.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
|
| ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС,
| ТаблицаДокумента.СуммаНДС КАК СуммаНДС,
|
| %Содержание КАК Содержание,
|
|
|
|
| ТаблицаДокумента.ЭтоТовар КАК ЭтоТовар,
| ТаблицаДокумента.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару
|
|ИЗ
| " + ИмяОбъекта + "ТаблицаТоваров КАК ТаблицаДокумента";
Если ИмяОбъекта = "АктВыполненныхРабот"
Или ИмяОбъекта = "ВозвратТоваровПоставщику"
Или ИмяОбъекта = "ВыкупВозвратнойТарыКлиентом"
Или ИмяОбъекта = "ВыкупТоваровХранителем"
Или ИмяОбъекта = "ОтчетДавальцуМеждуОрганизациями"
Или ИмяОбъекта = "ОтчетКомиссионера"
Или ИмяОбъекта = "ОтчетКомитентуОЗакупках"
Или ИмяОбъекта = "ОтчетПоКомиссииМеждуОрганизациями"
Или ИмяОбъекта = "ПередачаТоваровМеждуОрганизациями"
Или ИмяОбъекта = "РеализацияТоваровУслуг"
Или ИмяОбъекта = "РеализацияУслугПрочихАктивов" Тогда
ТекстЗамены = " ТаблицаДокумента.БазаНДСРегл КАК СуммаБезНДС,";
Иначе
ТекстЗамены = " ТаблицаДокумента.СуммаБезНДС КАК СуммаБезНДС,";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеСуммаБезНДС", ТекстЗамены);
Если ИмяОбъекта = "АктВыполненныхРабот"
Или ИмяОбъекта = "СчетФактураВыданный"
Или ИмяОбъекта = "РеализацияТоваровУслуг"
Или ИмяОбъекта = "КорректировкаРеализации" Тогда
ТекстЗамены = " ТаблицаДокумента.НоменклатураПартнера КАК НоменклатураПартнера,";
Иначе
ТекстЗамены = " ЗНАЧЕНИЕ(Справочник.НоменклатураКонтрагентов.ПустаяСсылка) КАК НоменклатураПартнера,";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеНоменклатурыПартнера", ТекстЗамены);
Если ИмяОбъекта = "АктВыполненныхРабот"
Или ИмяОбъекта = "КорректировкаРеализации"
Или ИмяОбъекта = "РеализацияУслугПрочихАктивов"
Или ИмяОбъекта = "СчетФактураВыданный"
Или ИмяОбъекта = "ЗаписьКнигиПродаж" Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%Содержание", "ТаблицаДокумента.Содержание");
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%Содержание", """""");
КонецЕсли;
Если ИмяОбъекта = "ОтчетКомиссионера" Тогда
ТекстЗамены =
" ТаблицаДокумента.Покупатель КАК Покупатель,
| ТаблицаДокумента.НомерСчетаФактурыКомиссионера КАК НомерСчетаФактуры,";
ИначеЕсли ИмяОбъекта = "РеализацияТоваровУслуг" Тогда
ТекстЗамены =
" ТаблицаДокумента.Покупатель КАК Покупатель,
| ТаблицаДокумента.НомерСчетаФактурыКомиссионера КАК НомерСчетаФактуры,";
Иначе
ТекстЗамены =
" ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Покупатель,
| """" КАК НомерСчетаФактуры,";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеКомиссионера", ТекстЗамены);
Если ИмяОбъекта = "АктВыполненныхРабот"
Или ИмяОбъекта = "РеализацияТоваровУслуг"
Или ИмяОбъекта = "КорректировкаРеализации"
ИЛИ ИмяОбъекта = "СчетФактураВыданный" Тогда
ЕстьНаборы = Истина;
ТекстЗамены =
" ТаблицаДокумента.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ТаблицаДокумента.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ТаблицаДокумента.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаДокумента.ХарактеристикаНабора КАК ХарактеристикаНабора,";
Иначе
ТекстЗамены =
" НЕОПРЕДЕЛЕНО КАК ВариантКомплектацииНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК ВариантПредставленияНабораВПечатныхФормах,
| НЕОПРЕДЕЛЕНО КАК ВариантРасчетаЦеныНабора,
| &ПустаяНоменклатура КАК НоменклатураНабора,
| НЕОПРЕДЕЛЕНО КАК ХарактеристикаНабора,";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеНабора", ТекстЗамены);
Если ИмяОбъекта = "СчетФактураВыданный" Тогда
ТекстЗамены =
" ТаблицаДокумента.КоличествоДо КАК КоличествоДо,
| ТаблицаДокумента.КоличествоУпаковокДо КАК КоличествоУпаковокДо,
| ТаблицаДокумента.КоличествоПоРНПТДо КАК КоличествоПоРНПТДо,
| ТаблицаДокумента.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение,
| ТаблицаДокумента.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение,
| ТаблицаДокумента.СуммаБезНДСДо КАК СуммаБезНДСДо,
| ТаблицаДокумента.СуммаНДСДо КАК СуммаНДСДо,
| ТаблицаДокумента.МежценоваяРазницаДо КАК МежценоваяРазницаДо,
| ТаблицаДокумента.РазницаБезНДСУвеличение КАК РазницаБезНДСУвеличение,
| ТаблицаДокумента.РазницаБезНДСУменьшение КАК РазницаБезНДСУменьшение,
| ТаблицаДокумента.РазницаНДСУвеличение КАК РазницаНДСУвеличение,
| ТаблицаДокумента.РазницаНДСУменьшение КАК РазницаНДСУменьшение,
| ТаблицаДокумента.РазницаСНДСУвеличение КАК РазницаСНДСУвеличение,
| ТаблицаДокумента.РазницаСНДСУменьшение КАК РазницаСНДСУменьшение,";
ИначеЕсли ИмяОбъекта = "КорректировкаРеализации" Или ИмяОбъекта = "ВозвратТоваровОтКлиента" Или ИмяОбъекта = "ВозвратТоваровМеждуОрганизациями" Тогда
ТекстЗамены =
" ТаблицаДокумента.КоличествоДо КАК КоличествоДо,
| ТаблицаДокумента.КоличествоУпаковокДо КАК КоличествоУпаковокДо,
| ТаблицаДокумента.КоличествоПоРНПТДо КАК КоличествоПоРНПТДо,
| ТаблицаДокумента.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение,
| ТаблицаДокумента.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение,
| ТаблицаДокумента.СуммаБезНДСДо КАК СуммаБезНДСДо,
| ТаблицаДокумента.СуммаНДСДо КАК СуммаНДСДо,
| 0 КАК МежценоваяРазницаДо,
| ТаблицаДокумента.РазницаБезНДСУвеличение КАК РазницаБезНДСУвеличение,
| ТаблицаДокумента.РазницаБезНДСУменьшение КАК РазницаБезНДСУменьшение,
| ТаблицаДокумента.РазницаНДСУвеличение КАК РазницаНДСУвеличение,
| ТаблицаДокумента.РазницаНДСУменьшение КАК РазницаНДСУменьшение,
| ТаблицаДокумента.РазницаСНДСУвеличение КАК РазницаСНДСУвеличение,
| ТаблицаДокумента.РазницаСНДСУменьшение КАК РазницаСНДСУменьшение,";
Иначе
ТекстЗамены =
" 0 КАК КоличествоДо,
| 0 КАК КоличествоУпаковокДо,
| 0 КАК КоличествоПоРНПТДо,
| 0 КАК КоличествоПоРНПТУвеличение,
| 0 КАК КоличествоПоРНПТУменьшение,
| 0 КАК СуммаБезНДСДо,
| 0 КАК СуммаНДСДо,
| 0 КАК МежценоваяРазницаДо,
| 0 КАК РазницаБезНДСУвеличение,
| 0 КАК РазницаБезНДСУменьшение,
| 0 КАК РазницаНДСУвеличение,
| 0 КАК РазницаНДСУменьшение,
| 0 КАК РазницаСНДСУвеличение,
| 0 КАК РазницаСНДСУменьшение,";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеКорректировки", ТекстЗамены);
Если ИмяОбъекта = "ЗаписьКнигиПродаж"
Или ИмяОбъекта = "РеализацияТоваровУслуг"
Или ИмяОбъекта = "СчетФактураВыданный"
Или ИмяОбъекта = "РеализацияУслугПрочихАктивов"
Или ИмяОбъекта = "КорректировкаРеализации" Тогда
ТекстЗамены = " ТаблицаДокумента.КодТНВЭД КАК КодТНВЭД,";
Иначе
ТекстЗамены = " ЗНАЧЕНИЕ(Справочник.КлассификаторТНВЭД.ПустаяСсылка) КАК КодТНВЭД,";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеТНВЭД", ТекстЗамены);
Если ИмяОбъекта = "ОтчетКомитентуОЗакупках" Тогда
ТекстЗамены = " ТаблицаДокумента.СсылкаСФ КАК СсылкаСФ,";
Иначе
ТекстЗамены = " НЕОПРЕДЕЛЕНО КАК СсылкаСФ,";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеСФ", ТекстЗамены);
Если ИмяОбъекта = "СчетФактураВыданный" Тогда
ТекстЗамены = " ТаблицаДокумента.МежценоваяРазница КАК МежценоваяРазница,";
Иначе
ТекстЗамены = " 0 КАК МежценоваяРазница,";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеМежценоваяРазница", ТекстЗамены);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"//ОператорПОМЕСТИТЬ", ?(ПервыйТип, "ПОМЕСТИТЬ ТаблицаТоваров", ""));
КолонкиВТ = МенеджерВременныхТаблиц.Таблицы[ИмяОбъекта + "ТаблицаТоваров"].Колонки;
Если КолонкиВТ.Найти("НомерСтрокиИсходногоСФ") = Неопределено Тогда
ТекстЗапроса =
СхемыЗапросов.ДобавитьПолеВыборкиВЗапрос(
ТекстЗапроса, "0", "НомерСтрокиИсходногоСФ");
Иначе
ТекстЗапроса =
СхемыЗапросов.ДобавитьПолеВыборкиВЗапрос(
ТекстЗапроса, "ТаблицаДокумента.НомерСтрокиИсходногоСФ", "НомерСтрокиИсходногоСФ");
КонецЕсли;
ТекстыОбщейТаблицыТоваров.Добавить(ТекстЗапроса);
ПервыйТип = Ложь;
КонецЦикла;
ТекстОбщейТаблицыТовары =
СтрСоединить(ТекстыОбщейТаблицыТоваров, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстОбщейТаблицыТовары = ТекстОбщейТаблицыТовары + "
|;
|
|////////////////////////////////////////////////////////////////////////////////
|";
ТекстТаблицыНаборов =
"ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| МАКСИМУМ(ТаблицаТоваров.КодТНВЭД) КАК КодТНВЭД,
| МИНИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| МИНИМУМ(ТаблицаТоваров.НомерСтрокиИсходногоСФ) КАК НомерСтрокиИсходногоСФ,
| СУММА(ТаблицаТоваров.СуммаБезНДСДо) КАК СуммаБезНДСДо,
| СУММА(ТаблицаТоваров.СуммаНДСДо) КАК СуммаНДСДо,
| СУММА(ТаблицаТоваров.РазницаБезНДСУвеличение) КАК РазницаБезНДСУвеличение,
| СУММА(ТаблицаТоваров.РазницаБезНДСУменьшение) КАК РазницаБезНДСУменьшение,
| СУММА(ТаблицаТоваров.РазницаНДСУвеличение) КАК РазницаНДСУвеличение,
| СУММА(ТаблицаТоваров.РазницаНДСУменьшение) КАК РазницаНДСУменьшение,
| СУММА(ТаблицаТоваров.РазницаСНДСУвеличение) КАК РазницаСНДСУвеличение,
| СУММА(ТаблицаТоваров.РазницаСНДСУменьшение) КАК РазницаСНДСУменьшение,
| СУММА(ТаблицаТоваров.СуммаБезНДС) КАК СуммаБезНДС,
| СУММА(ТаблицаТоваров.СуммаНДС) КАК СуммаНДС,
| ТаблицаТоваров.СсылкаСФ КАК СсылкаСФ,
| ТаблицаТоваров.Покупатель КАК Покупатель,
| ТаблицаТоваров.НомерСчетаФактуры КАК НомерСчетаФактуры
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыПодготовка
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО ДанныеНоменклатуры.Ссылка = ТаблицаТоваров.Номенклатура
|
|ГДЕ
| ТаблицаТоваров.НоменклатураНабора <> &ПустаяНоменклатура
| И (ДанныеНоменклатуры.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ НЕ ТаблицаТоваров.ВернутьМногооборотнуюТару)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Ссылка,
| ТаблицаТоваров.НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора,
| ТаблицаТоваров.СтавкаНДС,
| ТаблицаТоваров.СсылкаСФ,
| ТаблицаТоваров.Покупатель,
| ТаблицаТоваров.НомерСчетаФактуры
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТоваров.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ТоварыРазличные
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора,
| Товары.ХарактеристикаНабора,
| Товары.Номенклатура,
| Товары.Характеристика,
| ВЫБОР КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
| И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОсновнаяКомплектующая,
| Товары.СтавкаНДС КАК СтавкаНДС,
| ВЫБОР
| КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
| И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика
| ТОГДА Товары.НомерГТД
| ИНАЧЕ NULL
| КОНЕЦ КАК НомерГТД,
| 0 КАК КоличествоПоУмолчанию,
| Товары.КоличествоДо КАК КоличествоДо,
| Товары.Количество КАК Количество,
| Товары.КоличествоПоРНПТДо КАК КоличествоПоРНПТДо,
| Товары.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение,
| Товары.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение,
| Товары.КоличествоПоРНПТ КАК КоличествоПоРНПТ
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая
|ИЗ
| ТаблицаТоваров КАК Товары
|
|ГДЕ
| Товары.НоменклатураНабора <> &ПустаяНоменклатура
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыРазличные.Ссылка КАК Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец КАК НоменклатураНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика КАК ХарактеристикаНабора,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
| ЛОЖЬ КАК ОсновнаяКомплектующая,
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
| NULL КАК НомерГТД,
| СУММА(ВариантыКомплектацииНоменклатурыТовары.Количество) КАК КоличествоПоУмолчанию,
| 0 КАК КоличествоДо,
| 0 КАК Количество,
| 0 КАК КоличествоПоРНПТДо,
| 0 КАК КоличествоПоРНПТУвеличение,
| 0 КАК КоличествоПоРНПТУменьшение,
| 0 КАК КоличествоПоРНПТ
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыРазличные КАК ТоварыРазличные
| ПО ИСТИНА
|ГДЕ
| ВариантыКомплектацииНоменклатурыТовары.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Т.ВариантКомплектацииНоменклатуры ИЗ ТаблицаТоваров КАК Т)
|
|СГРУППИРОВАТЬ ПО
| ТоварыРазличные.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Упаковка
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика,
| МАКСИМУМ(Таблица.НомерГТД) КАК НомерГТД,
| МАКСИМУМ(Таблица.СтавкаНДС) КАК СтавкаНДС,
| МАКСИМУМ(Таблица.ОсновнаяКомплектующая) КАК ОсновнаяКомплектующая,
| СУММА(Таблица.КоличествоПоУмолчанию) КАК КоличествоПоУмолчанию,
| СУММА(Таблица.КоличествоДо) КАК КоличествоДо,
| СУММА(Таблица.Количество) КАК Количество,
| СУММА(Таблица.КоличествоПоРНПТДо) КАК КоличествоПоРНПТДо,
| СУММА(Таблица.КоличествоПоРНПТУвеличение) КАК КоличествоПоРНПТУвеличение,
| СУММА(Таблица.КоличествоПоРНПТУменьшение) КАК КоличествоПоРНПТУменьшение,
| СУММА(Таблица.КоличествоПоРНПТ) КАК КоличествоПоРНПТ
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьПервая КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика
|;
|
|
|ВЫБРАТЬ
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора,
| МАКСИМУМ(ВЫБОР
| КОГДА Результат.ОсновнаяКомплектующая
| ТОГДА Результат.СтавкаНДС
| ИНАЧЕ null
| КОНЕЦ) КАК СтавкаНДС,
| МАКСИМУМ(Результат.НомерГТД) КАК НомерГТД,
| ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0 И Результат.ОсновнаяКомплектующая
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ null
| КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК Количество,
| ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0 И Результат.ОсновнаяКомплектующая
| ТОГДА Результат.КоличествоДо / Результат.КоличествоПоУмолчанию
| ИНАЧЕ null
| КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК КоличествоДо,
| МАКСИМУМ(Результат.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| МАКСИМУМ(Результат.КоличествоПоРНПТДо) КАК КоличествоПоРНПТДо,
| МАКСИМУМ(Результат.КоличествоПоРНПТУвеличение) КАК КоличествоПоРНПТУвеличение,
| МАКСИМУМ(Результат.КоличествоПоРНПТУменьшение) КАК КоличествоПоРНПТУменьшение,
| МАКСИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ null
| КОНЕЦ) КАК КоэффициентМаксимум,
| ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ null
| КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК КоэффициентМинимум
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительно
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьВторая КАК Результат
|СГРУППИРОВАТЬ ПО
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| ВременнаяТаблицаНаборыДополнительно.ВариантКомплектацииНоменклатуры,
|
| ВЫБОР КОГДА ДанныеОснований.ХозяйственнаяОперация В (&ХозяйственныеОперацииПередачаНаКомиссию)
| И ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = &ВариантТолькоНабор ТОГДА
| &ВариантНаборИКомплектующие
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
|
| ВЫБОР КОГДА ДанныеОснований.ХозяйственнаяОперация В (&ХозяйственныеОперацииПередачаНаКомиссию) ТОГДА
| ВЫБОР КОГДА
| ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = &ВариантТолькоНабор ТОГДА
| &ВариантНаборИКомплектующие
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ = &ВариантНаборИКомплектующие
| И ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам),
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям)) ТОГДА
|
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
|
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК КоличествоУпаковок,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК Количество,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТ, 1) КАК КоличествоПоРНПТ,
| ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.КоэффициентМинимум = ВременнаяТаблицаНаборыДополнительно.КоэффициентМаксимум ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ПолныйНабор,
| Таблица.СуммаБезНДС КАК СуммаБезНДС,
| Таблица.СуммаНДС КАК СуммаНДС,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоДо, 1) КАК КоличествоУпаковокДо,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоДо, 1) КАК КоличествоДо,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТДо, 1) КАК КоличествоПоРНПТДо,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТУвеличение, 1) КАК КоличествоПоРНПТУвеличение,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.КоличествоПоРНПТУменьшение, 1) КАК КоличествоПоРНПТУменьшение,
| Таблица.СуммаБезНДСДо КАК СуммаБезНДСДо,
| Таблица.СуммаНДСДо КАК СуммаНДСДо,
| Таблица.РазницаБезНДСУвеличение КАК РазницаБезНДСУвеличение,
| Таблица.РазницаБезНДСУменьшение КАК РазницаБезНДСУменьшение,
| Таблица.РазницаНДСУвеличение КАК РазницаНДСУвеличение,
| Таблица.РазницаНДСУменьшение КАК РазницаНДСУменьшение,
| Таблица.РазницаСНДСУвеличение КАК РазницаСНДСУвеличение,
| Таблица.РазницаСНДСУменьшение КАК РазницаСНДСУменьшение,
| Таблица.КодТНВЭД КАК КодТНВЭД,
| Таблица.СтавкаНДС КАК СтавкаНДС,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.НомерГТД, ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка)) КАК НомерГТД,
| Таблица.СсылкаСФ КАК СсылкаСФ,
| Таблица.Покупатель КАК Покупатель,
| Таблица.НомерСчетаФактуры КАК НомерСчетаФактуры
|ПОМЕСТИТЬ ВременнаяТаблицаНаборы
|ИЗ
| ВременнаяТаблицаНаборыПодготовка КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборыДополнительно КАК ВременнаяТаблицаНаборыДополнительно
| ПО Таблица.НоменклатураНабора = ВременнаяТаблицаНаборыДополнительно.НоменклатураНабора
| И Таблица.ХарактеристикаНабора = ВременнаяТаблицаНаборыДополнительно.ХарактеристикаНабора
| И Таблица.Ссылка = ВременнаяТаблицаНаборыДополнительно.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаДанныхДокументов КАК ДанныеОснований
| ПО ДанныеОснований.Ссылка = Таблица.Ссылка
|;
|
|
|";
ТекстРезультирующейТаблицы =
"ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.НоменклатураПартнера КАК НоменклатураПартнера,
| ВЫБОР КОГДА ТаблицаТоваров.Содержание = """" ТОГДА
| ДанныеНоменклатуры.НаименованиеПолное
| ИНАЧЕ
| ТаблицаТоваров.Содержание
| КОНЕЦ КАК НоменклатураНаименование,
| ВЫБОР КОГДА &КолонкаКодов = ""Артикул"" ТОГДА
| ДанныеНоменклатуры.Артикул
| ИНАЧЕ
| ДанныеНоменклатуры.Код
| КОНЕЦ КАК НоменклатураКод,
| ТаблицаТоваров.КодТНВЭД КАК КодТНВЭД,
| ВЫБОР
| КОГДА ДанныеНоменклатуры.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И ТаблицаТоваров.ВернутьМногооборотнуюТару
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара,
| ВЫБОР
| КОГДА &ВыводитьБазовыеЕдиницыИзмерения И ТаблицаТоваров.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И ТаблицаТоваров.Номенклатура <> НЕОПРЕДЕЛЕНО
| ТОГДА ДанныеНоменклатуры.ЕдиницаИзмерения
| ИНАЧЕ &ТекстЗапросаЕдиницаИзмерения
| КОНЕЦ КАК ЕдиницаИзмерения,
| ВЫБОР КОГДА ТаблицаТоваров.Содержание = """" ТОГДА
| ТаблицаТоваров.Характеристика
| ИНАЧЕ
| """"
| КОНЕЦ КАК Характеристика,
| ВЫБОР КОГДА ТаблицаТоваров.Содержание = """" ТОГДА
| ТаблицаТоваров.Серия
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
|
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.Упаковка КАК Упаковка,
|
|
|
| ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
| ТаблицаТоваров.Количество
| КОГДА ТаблицаТоваров.КоличествоУпаковок = 0 ТОГДА
| ТаблицаТоваров.Количество
| ИНАЧЕ
| ТаблицаТоваров.КоличествоУпаковок
| КОНЕЦ КАК Количество,
| ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
| ТаблицаТоваров.КоличествоДо
| КОГДА ТаблицаТоваров.КоличествоУпаковокДо = 0 ТОГДА
| ТаблицаТоваров.КоличествоДо
| ИНАЧЕ
| ТаблицаТоваров.КоличествоУпаковокДо
| КОНЕЦ КАК КоличествоДо,
| ТаблицаТоваров.Количество КАК КоличествоБазовыхЕдиниц,
| ТаблицаТоваров.КоличествоДо КАК КоличествоБазовыхЕдиницДо,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.КоличествоПоРНПТДо КАК КоличествоПоРНПТДо,
| ТаблицаТоваров.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение,
| ТаблицаТоваров.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение,
| ВЫРАЗИТЬ(ВЫБОР КОГДА ТаблицаТоваров.Количество = 0 ТОГДА
| 0
| КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
| ТаблицаТоваров.СуммаБезНДС / ТаблицаТоваров.Количество
| КОГДА ТаблицаТоваров.КоличествоУпаковок = 0 ТОГДА
| ТаблицаТоваров.СуммаБезНДС / ТаблицаТоваров.Количество
| ИНАЧЕ
| ТаблицаТоваров.СуммаБезНДС / ТаблицаТоваров.КоличествоУпаковок
| КОНЕЦ КАК ЧИСЛО(21,8)) КАК Цена,
| ВЫБОР КОГДА ТаблицаТоваров.КоличествоДо = 0 ТОГДА
| 0
| КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
| ТаблицаТоваров.СуммаБезНДСДо / ТаблицаТоваров.КоличествоДо
| КОГДА ТаблицаТоваров.КоличествоУпаковокДо = 0 ТОГДА
| ТаблицаТоваров.СуммаБезНДСДо / ТаблицаТоваров.КоличествоДо
| ИНАЧЕ
| ТаблицаТоваров.СуммаБезНДСДо / ТаблицаТоваров.КоличествоУпаковокДо
| КОНЕЦ КАК ЦенаДо,
| ТаблицаТоваров.СуммаБезНДС КАК СуммаБезНДС,
| ТаблицаТоваров.СуммаБезНДСДо КАК СуммаБезНДСДо,
| ТаблицаТоваров.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваров.СуммаНДСДо КАК СуммаНДСДо,
| ТаблицаТоваров.МежценоваяРазница КАК МежценоваяРазница,
| ТаблицаТоваров.МежценоваяРазницаДо КАК МежценоваяРазницаДо,
| ТаблицаТоваров.РазницаБезНДСУвеличение КАК РазницаБезНДСУвеличение,
| ТаблицаТоваров.РазницаБезНДСУменьшение КАК РазницаБезНДСУменьшение,
| ТаблицаТоваров.РазницаНДСУвеличение КАК РазницаНДСУвеличение,
| ТаблицаТоваров.РазницаНДСУменьшение КАК РазницаНДСУменьшение,
| ТаблицаТоваров.РазницаСНДСУвеличение КАК РазницаСНДСУвеличение,
| ТаблицаТоваров.РазницаСНДСУменьшение КАК РазницаСНДСУменьшение,
| ТаблицаТоваров.СсылкаСФ КАК СсылкаСФ,
| ТаблицаТоваров.Покупатель КАК Покупатель,
| ТаблицаТоваров.НомерСчетаФактуры КАК НомерСчетаФактуры
|
|ПОМЕСТИТЬ ТаблицаТоваровДокументов
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО ТаблицаТоваров.Номенклатура = ДанныеНоменклатуры.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК ДанныеУпаковки
| ПО НЕ &ВыводитьБазовыеЕдиницыИзмерения
| И ТаблицаТоваров.Упаковка = ДанныеУпаковки.Ссылка
|ГДЕ
| ТаблицаТоваров.НоменклатураНабора = &ПустаяНоменклатура
| ИЛИ (ТаблицаТоваров.НоменклатураНабора <> &ПустаяНоменклатура
| И ТаблицаТоваров.ВариантПредставленияНабораВПечатныхФормах В (
| &ВариантТолькоКомплектующие, &ВариантНаборИКомплектующие))";
Если ЕстьНаборы Тогда
ТекстРезультирующейТаблицы = СтрЗаменить(ТекстРезультирующейТаблицы, "//РеквизитыТаблицыНаборов",
" ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.НомерСтроки
| ИНАЧЕ
| ТаблицаТоваров.НомерСтроки
| КОНЕЦ КАК НомерСтрокиНаборы,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах
| ИНАЧЕ
| &ПустойВариантПредставленияНаборов
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора
| ИНАЧЕ
| &ПустойВариантРасчетаЦенНаборов
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоКомплектующие,
| ЛОЖЬ КАК ЭтоНабор,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ПолныйНабор
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ПолныйНабор,");
ТекстРезультирующейТаблицы = СтрЗаменить(ТекстРезультирующейТаблицы, "//СоединениеТаблицыНаборов",
" ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ПО ВременнаяТаблицаНаборы.НоменклатураНабора = ТаблицаТоваров.НоменклатураНабора
| И ВременнаяТаблицаНаборы.ХарактеристикаНабора = ТаблицаТоваров.ХарактеристикаНабора
| И ВременнаяТаблицаНаборы.Ссылка = ТаблицаТоваров.Ссылка
| И ВременнаяТаблицаНаборы.СтавкаНДС = ТаблицаТоваров.СтавкаНДС");
ТекстРезультирующейТаблицы = ТекстРезультирующейТаблицы + "
|
|ОБЪЕДИНИТЬ ВСЕ
|" +
"ВЫБРАТЬ
| ВременнаяТаблицаНаборы.Ссылка КАК Ссылка,
| 0 КАК НомерСтроки,
| ВременнаяТаблицаНаборы.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ,
| ВременнаяТаблицаНаборы.НоменклатураНабора КАК Номенклатура,
| ЗНАЧЕНИЕ(Справочник.НоменклатураКонтрагентов.ПустаяСсылка) КАК НоменклатураПартнера,
| ДанныеНоменклатуры.НаименованиеПолное КАК НоменклатураНаименование,
| ВЫБОР КОГДА &КолонкаКодов = ""Артикул"" ТОГДА
| ДанныеНоменклатуры.Артикул
| ИНАЧЕ
| ДанныеНоменклатуры.Код
| КОНЕЦ КАК НоменклатураКод,
| ВременнаяТаблицаНаборы.КодТНВЭД КАК КодТНВЭД,
| ЛОЖЬ КАК ЭтоВозвратнаяТара,
| ДанныеНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ВременнаяТаблицаНаборы.НомерГТД КАК НомерГТД,
| ВременнаяТаблицаНаборы.СтавкаНДС КАК СтавкаНДС,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| ВременнаяТаблицаНаборы.НомерСтроки КАК НомерСтрокиНаборы,
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВременнаяТаблицаНаборы.НоменклатураНабора КАК НоменклатураНабора,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ЛОЖЬ КАК ЭтоКомплектующие,
| ИСТИНА КАК ЭтоНабор,
| ВременнаяТаблицаНаборы.ПолныйНабор КАК ПолныйНабор,
|
| ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
| ВременнаяТаблицаНаборы.Количество
| ИНАЧЕ
| ВременнаяТаблицаНаборы.КоличествоУпаковок
| КОНЕЦ КАК Количество,
| ВЫБОР КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
| ВременнаяТаблицаНаборы.КоличествоДо
| ИНАЧЕ
| ВременнаяТаблицаНаборы.КоличествоУпаковокДо
| КОНЕЦ КАК КоличествоДо,
| ВременнаяТаблицаНаборы.Количество КАК КоличествоБазовыхЕдиниц,
| ВременнаяТаблицаНаборы.КоличествоДо КАК КоличествоБазовыхЕдиницДо,
| ВременнаяТаблицаНаборы.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВременнаяТаблицаНаборы.КоличествоПоРНПТДо КАК КоличествоПоРНПТДо,
| ВременнаяТаблицаНаборы.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение,
| ВременнаяТаблицаНаборы.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение,
| ВЫБОР КОГДА ВременнаяТаблицаНаборы.Количество = 0 ТОГДА
| 0
| КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
| ВременнаяТаблицаНаборы.СуммаБезНДС / ВременнаяТаблицаНаборы.Количество
| ИНАЧЕ
| ВременнаяТаблицаНаборы.СуммаБезНДС / ВременнаяТаблицаНаборы.КоличествоУпаковок
| КОНЕЦ КАК Цена,
| ВЫБОР КОГДА ВременнаяТаблицаНаборы.КоличествоДо = 0 ТОГДА
| 0
| КОГДА &ВыводитьБазовыеЕдиницыИзмерения ТОГДА
| ВременнаяТаблицаНаборы.СуммаБезНДСДо / ВременнаяТаблицаНаборы.КоличествоДо
| ИНАЧЕ
| ВременнаяТаблицаНаборы.СуммаБезНДСДо / ВременнаяТаблицаНаборы.КоличествоУпаковокДо
| КОНЕЦ КАК ЦенаДо,
| ВременнаяТаблицаНаборы.СуммаБезНДС КАК СуммаБезНДС,
| ВременнаяТаблицаНаборы.СуммаБезНДСДо КАК СуммаБезНДСДо,
| ВременнаяТаблицаНаборы.СуммаНДС КАК СуммаНДС,
| ВременнаяТаблицаНаборы.СуммаНДСДо КАК СуммаНДСДо,
| 0 КАК МежценоваяРазница,
| 0 КАК МежценоваяРазницаДо,
| ВременнаяТаблицаНаборы.РазницаБезНДСУвеличение КАК РазницаБезНДСУвеличение,
| ВременнаяТаблицаНаборы.РазницаБезНДСУменьшение КАК РазницаБезНДСУменьшение,
| ВременнаяТаблицаНаборы.РазницаНДСУвеличение КАК РазницаНДСУвеличение,
| ВременнаяТаблицаНаборы.РазницаНДСУменьшение КАК РазницаНДСУменьшение,
| ВременнаяТаблицаНаборы.РазницаСНДСУвеличение КАК РазницаСНДСУвеличение,
| ВременнаяТаблицаНаборы.РазницаСНДСУменьшение КАК РазницаСНДСУменьшение,
| ВременнаяТаблицаНаборы.СсылкаСФ КАК СсылкаСФ,
| ВременнаяТаблицаНаборы.Покупатель КАК Покупатель,
| ВременнаяТаблицаНаборы.НомерСчетаФактуры КАК НомерСчетаФактуры
|
|ИЗ
| ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО ВременнаяТаблицаНаборы.НоменклатураНабора = ДанныеНоменклатуры.Ссылка
|
|ГДЕ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (
| &ВариантТолькоНабор, &ВариантНаборИКомплектующие)";
Иначе
ТекстРезультирующейТаблицы = СтрЗаменить(ТекстРезультирующейТаблицы, "//РеквизитыТаблицыНаборов",
" ТаблицаТоваров.НомерСтроки КАК НомерСтрокиНаборы,
| &ПустойВариантПредставленияНаборов КАК ВариантПредставленияНабораВПечатныхФормах,
| &ПустойВариантРасчетаЦенНаборов КАК ВариантРасчетаЦеныНабора,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ЛОЖЬ КАК ЭтоКомплектующие,
| ЛОЖЬ КАК ЭтоНабор,
| ЛОЖЬ КАК ПолныйНабор,");
КонецЕсли;
Запрос.Текст = ТекстОбщейТаблицыТовары +
?(ЕстьНаборы, ТекстТаблицыНаборов, "") +
ТекстРезультирующейТаблицы;
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"&ТекстЗапросаЕдиницаИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Ссылка",
"ТаблицаТоваров.Упаковка",
?(ИмяОбъекта = "РеализацияУслугПрочихАктивов","","ТаблицаТоваров.Номенклатура")));
Запрос.УстановитьПараметр("ВыводитьБазовыеЕдиницыИзмерения", Константы.ВыводитьБазовыеЕдиницыИзмерения.Получить());
Запрос.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка());
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов().ИмяКолонки;
Если Не ЗначениеЗаполнено(КолонкаКодов) Тогда
КолонкаКодов = "Код";
КонецЕсли;
Запрос.УстановитьПараметр("КолонкаКодов", КолонкаКодов);
Запрос.УстановитьПараметр("ВариантТолькоНабор", Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор);
Запрос.УстановитьПараметр("ВариантТолькоКомплектующие",
Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие);
Запрос.УстановитьПараметр("ВариантНаборИКомплектующие",
Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие);
Запрос.УстановитьПараметр("ПустойВариантПредставленияНаборов",
Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустойВариантРасчетаЦенНаборов", Перечисления.ВариантыРасчетаЦенНаборов.ПустаяСсылка());
МассивОперацийПередачаНаКомиссию = Новый Массив;
МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту);
МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
МассивОперацийПередачаНаКомиссию.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссиюВДругуюОрганизацию);
Запрос.УстановитьПараметр("ХозяйственныеОперацииПередачаНаКомиссию", МассивОперацийПередачаНаКомиссию);
Запрос.УстановитьПараметр("МассивОснований", МассивОснований);
Запрос.Текст = Запрос.Текст +
"
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.ШтрихкодУпаковки
|ПОМЕСТИТЬ ШтрихкодыУпаковок
|ИЗ
| Документ.РеализацияТоваровУслуг.ШтрихкодыУпаковок КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В (&МассивОснований)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.ШтрихкодУпаковки
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровКлиенту.ШтрихкодыУпаковок КАК ТаблицаДокумента
| ПО ТаблицаОснований.ДокументОснование = ТаблицаДокумента.Ссылка
|ГДЕ
| ТаблицаОснований.Ссылка В (&МассивОснований)
| И ТаблицаДокумента.Ссылка В (
| ВЫБРАТЬ
| ДокументОснование
| ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
| ГДЕ
| ТаблицаОснований.Ссылка В (&МассивОснований))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.ШтрихкодУпаковки
|ИЗ
| Документ.ВозвратТоваровПоставщику.ШтрихкодыУпаковок КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В (&МассивОснований)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.ШтрихкодУпаковки
|ИЗ
| Документ.ПередачаТоваровМеждуОрганизациями.ШтрихкодыУпаковок КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В (&МассивОснований)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.ШтрихкодУпаковки
|ИЗ
| Документ.ВозвратТоваровМеждуОрганизациями.ШтрихкодыУпаковок КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В (&МассивОснований)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.ШтрихкодУпаковки
|ИЗ
| Документ.КорректировкаРеализации.ШтрихкодыУпаковок КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В (&МассивОснований)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаОснований.Ссылка,
| ТаблицаДокумента.ШтрихкодУпаковки
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации.ШтрихкодыУпаковок КАК ТаблицаДокумента
| ПО ТаблицаОснований.ДокументОснование = ТаблицаДокумента.Ссылка
|ГДЕ
| ТаблицаОснований.Ссылка В (&МассивОснований)
| И (ТаблицаОснований.Ссылка.Корректировочный
| ИЛИ ТаблицаОснований.Ссылка.Исправление)
|";
Если ПараметрыПечати.Свойство("ЗаполнитьДанныеШтрихкодовДляУКДДо") И ПараметрыПечати.ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда
ПоместитьВременнуюТаблицуДанныеПоследнейКорректировки(МенеджерВременныхТаблиц);
Запрос.Текст = Запрос.Текст +
"
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПредыдущиеДокументы.Основной КАК Ссылка,
| ТаблицаШтрихкодовДо.Ссылка КАК ДокументРеализации,
| ТаблицаШтрихкодовДо.ШтрихкодУпаковки КАК ШтрихкодУпаковки
|ПОМЕСТИТЬ ШтрихкодыУпаковокДо
|ИЗ
| ПредыдущиеДокументы КАК ПредыдущиеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации.ШтрихкодыУпаковок КАК ТаблицаШтрихкодовДо
| ПО ПредыдущиеДокументы.Предыдущий = ТаблицаШтрихкодовДо.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПредыдущиеДокументы.Основной,
| ТаблицаШтрихкодовДо.Ссылка,
| ТаблицаШтрихкодовДо.ШтрихкодУпаковки
|ИЗ
| ПредыдущиеДокументы КАК ПредыдущиеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ШтрихкодыУпаковок КАК ТаблицаШтрихкодовДо
| ПО ПредыдущиеДокументы.Предыдущий = ТаблицаШтрихкодовДо.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПредыдущиеДокументы.Основной,
| ТаблицаШтрихкодовДо.Ссылка,
| ТаблицаШтрихкодовДо.ШтрихкодУпаковки
|ИЗ
| ПредыдущиеДокументы КАК ПредыдущиеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровКлиенту.ШтрихкодыУпаковок КАК ТаблицаШтрихкодовДо
| ПО ПредыдущиеДокументы.Предыдущий = ТаблицаШтрихкодовДо.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаОснований.Ссылка,
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.ШтрихкодУпаковки
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтКлиента.ШтрихкодыУпаковок КАК ТаблицаДокумента
| ПО ТаблицаОснований.ДокументОснование = ТаблицаДокумента.Ссылка
|ГДЕ
| ТаблицаОснований.Ссылка В (&МассивОснований)
| И (ТаблицаОснований.Ссылка.Корректировочный
| ИЛИ ТаблицаОснований.Ссылка.Исправление)
|";
КонецЕсли;
Запрос.Выполнить();
ПараметрыПечати.ВыводитьНаборы = ЕстьНаборы;
КонецПроцедуры
Функция ТекстЗапросаДанныхШапкиДляПечатиСчетаФактуры(ПараметрыПечати)
ПечататьСчетаФактурыПолученные = ПараметрыПечати.Свойство("МассивСчетФактураПолученный");
ТекстЗапроса =
"ВЫБРАТЬ
| СчетаФактурыОснования.Ссылка КАК Ссылка,
| МИНИМУМ(СчетаФактурыОснования.ДокументОснование) КАК ДокументОснование,
| МИНИМУМ(СчетаФактурыОснования.ДокументОснование) КАК ДокументОснованиеДляПечати
|ПОМЕСТИТЬ СчетаФактурыОснованияПервые
|ИЗ
| СчетаФактурыОснования_Шапка КАК СчетаФактурыОснования
|
|СГРУППИРОВАТЬ ПО
| СчетаФактурыОснования.Ссылка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетаФактурыОснования.Ссылка КАК Ссылка,
| ДанныеОснований.Ссылка КАК ДокументОснование,
| ДанныеОснований.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеОснований.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеОснований.КодСпециальныхОбстоятельств,
| ДанныеОснований.АдресДоставки,
| ВЫБОР КОГДА СчетФактураВыданный.РеализацияЧерезКомиссионера
| И НЕ ПокупателиКомиссия.Покупатель ЕСТЬ NULL
| И ЕСТЬNULL(ДанныеПокупателя.СтранаРегистрации, ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка) ТОГДА
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеПокупателя.ОбособленноеПодразделение, ЛОЖЬ) ТОГДА
| ЕСТЬNULL(ДанныеПокупателя.ГоловнойКонтрагент.СтранаРегистрации, ДанныеКонтрагента.СтранаРегистрации)
| ИНАЧЕ
| ЕСТЬNULL(ДанныеПокупателя.СтранаРегистрации, ДанныеКонтрагента.СтранаРегистрации)
| КОНЕЦ
| ИНАЧЕ
| ДанныеКонтрагента.СтранаРегистрации
| КОНЕЦ КАК СтранаРегистрации,
|
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеОрганизацийПоставщик.ОбособленноеПодразделение, ЛОЖЬ) ТОГДА
| ДанныеОрганизацийПоставщик.ГоловнаяОрганизация
| ИНАЧЕ
| СчетФактураВыданный.Организация
| КОНЕЦ КАК Организация,
|
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеОрганизацийПокупатель.ОбособленноеПодразделение, ЛОЖЬ) ТОГДА
| ДанныеОрганизацийПокупатель.ГоловнаяОрганизация
| КОГДА ЕСТЬNULL(ДанныеКонтрагента.ОбособленноеПодразделение, ЛОЖЬ) ТОГДА
| ДанныеКонтрагента.ГоловнойКонтрагент
| ИНАЧЕ
| СчетФактураВыданный.Контрагент
| КОНЕЦ КАК Контрагент,
|
| ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ДанныеОснований.Грузоотправитель) = ТИП(Справочник.Контрагенты)
| И ДанныеОснований.Грузоотправитель <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА
| ДанныеОснований.Грузоотправитель
| КОГДА НЕ ДанныеПоставщикаПоОснованиям.РегистрацияВНалоговомОргане.Ссылка ЕСТЬ NULL ТОГДА
| ДанныеПоставщикаПоОснованиям.РегистрацияВНалоговомОргане
| КОГДА НЕ ДанныеПоставщикаПоСчетамФактурам.РегистрацияВНалоговомОргане.Ссылка ЕСТЬ NULL ТОГДА
| ДанныеПоставщикаПоСчетамФактурам.РегистрацияВНалоговомОргане
| КОГДА ДанныеОснований.Грузоотправитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА
| СчетФактураВыданный.Организация
| ИНАЧЕ
| ДанныеОснований.Грузоотправитель
| КОНЕЦ КАК Грузоотправитель,
|
| ВЫБОР КОГДА ДанныеОснований.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| И НЕ СчетФактураВыданный.РеализацияЧерезКомиссионера ТОГДА
| СчетФактураВыданный.Контрагент
| ИНАЧЕ
| ДанныеОснований.Грузополучатель
| КОНЕЦ КАК Грузополучатель,
|
| ЕСТЬNULL(ДанныеПоставщикаПоОснованиям.КПППоставщика, ДанныеПоставщикаПоСчетамФактурам.КПППоставщика) КАК КПППоставщика,
|
| ВЫБОР КОГДА СчетФактураВыданный.КППКонтрагента ПОДОБНО """" ТОГДА
| ВЫБОР КОГДА СчетФактураВыданный.Контрагент ССЫЛКА Справочник.Контрагенты ТОГДА """"
| КОГДА СчетФактураВыданный.Контрагент ССЫЛКА Справочник.Организации ТОГДА ЕстьNULL(ДанныеОрганизацийПокупатель.КПП, """")
| ИНАЧЕ """"
| КОНЕЦ
| ИНАЧЕ
| СчетФактураВыданный.КППКонтрагента
| КОНЕЦ КАК КПППокупателя,
|
| ВЫБОР КОГДА СчетФактураВыданный.ИННКонтрагента ПОДОБНО """" ТОГДА
| ВЫБОР КОГДА СчетФактураВыданный.Контрагент ССЫЛКА Справочник.Контрагенты ТОГДА ЕстьNULL(ДанныеКонтрагента.ИНН, """")
| КОГДА СчетФактураВыданный.Контрагент ССЫЛКА Справочник.Организации ТОГДА ЕстьNULL(ДанныеОрганизацийПокупатель.ИНН, """")
| ИНАЧЕ """"
| КОНЕЦ
| ИНАЧЕ
| СчетФактураВыданный.ИННКонтрагента
| КОНЕЦ КАК ИННПокупателя,
|
| ДанныеОрганизацийПоставщик.Префикс КАК Префикс,
| ДанныеОснований.Комиссионер КАК Комиссионер,
| ДанныеВалюты.Ссылка КАК Валюта,
| ДанныеВалюты.НаименованиеПолное КАК ВалютаНаименованиеПолное,
| ДанныеВалюты.Код КАК ВалютаКод,
|
| ВЫБОР
|
| КОГДА НЕ ДанныеОснований.РасчетыЧерезОтдельногоКонтрагента
| ИЛИ СчетФактураВыданный.Организация <> ЗНАЧЕНИЕ(Справочник.Организации.УправленческаяОрганизация)
| ТОГДА ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ПечататьСчетФактураВыданный,
| СчетФактураВыданный.Перевыставленный КАК ПеревыставленныйСчетФактура
|
|ПОМЕСТИТЬ ДанныеОснований
|ИЗ
| СчетаФактурыОснованияПервые КАК СчетаФактурыОснования
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданный
| ПО СчетФактураВыданный.Ссылка = СчетаФактурыОснования.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаШапокДокументов КАК ДанныеОснований
| ПО СчетаФактурыОснования.ДокументОснование = ДанныеОснований.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ДанныеОрганизацийПоставщик
| ПО СчетФактураВыданный.Организация = ДанныеОрганизацийПоставщик.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ДанныеОрганизацийПокупатель
| ПО ДанныеОрганизацийПокупатель.Ссылка = СчетФактураВыданный.Контрагент
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК ДанныеКонтрагента
| ПО ДанныеКонтрагента.Ссылка = СчетФактураВыданный.Контрагент
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК ДанныеВалюты
| ПО ДанныеОснований.Валюта = ДанныеВалюты.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеПоставщика КАК ДанныеПоставщикаПоОснованиям
| ПО СчетаФактурыОснования.ДокументОснование = ДанныеПоставщикаПоОснованиям.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеПоставщика КАК ДанныеПоставщикаПоСчетамФактурам
| ПО СчетФактураВыданный.Ссылка = ДанныеПоставщикаПоСчетамФактурам.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Покупатели КАК ПокупателиКомиссия
| ПО СчетФактураВыданный.Ссылка = ПокупателиКомиссия.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК ДанныеПокупателя
| ПО ДанныеПокупателя.Ссылка = ПокупателиКомиссия.Покупатель
|
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|
|;
|
|ВЫБРАТЬ
| СчетаФактурыОснования.Ссылка КАК Ссылка,
| МАКСИМУМ(ВЫБОР
| КОГДА НЕ ТаблицаТоваров.ЭтоТовар
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ЕстьУслуги,
| МАКСИМУМ(ВЫБОР
| КОГДА ТаблицаТоваров.ЭтоТовар
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ЕстьТовары,
| МАКСИМУМ(ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТоваров.Номенклатура.ПрослеживаемыйТовар, ЛОЖЬ)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ЕстьПрослеживаемыеТовары
|ПОМЕСТИТЬ
| НоменклатураДокументов
|ИЗ
| СчетаФактурыОснования КАК СчетаФактурыОснования
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаТоваров КАК ТаблицаТоваров
| ПО СчетаФактурыОснования.ДокументОснование = ТаблицаТоваров.Ссылка
|
|СГРУППИРОВАТЬ ПО
| СчетаФактурыОснования.Ссылка
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетаФактуры.Ссылка КАК Ссылка,
| ВЫБОР КОГДА ДанныеОснований.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) ТОГДА
| Покупатели.Покупатель
| ИНАЧЕ
| ДанныеОснований.Грузополучатель
| КОНЕЦ КАК Грузополучатель,
|
| ВЫБОР КОГДА ЕСТЬNULL(ДанныеКонтрагента.ОбособленноеПодразделение, ЛОЖЬ) ТОГДА
| ДанныеКонтрагента.ГоловнойКонтрагент
| ИНАЧЕ
| Покупатели.Покупатель
| КОНЕЦ КАК Контрагент,
|
| Покупатели.КПППокупателя КАК КПППокупателя,
| Покупатели.ИННПокупателя КАК ИННПокупателя
|
|ИЗ
| СчетаФактурыОснования КАК СчетаФактуры
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Покупатели КАК Покупатели
| ПО СчетаФактуры.Ссылка = Покупатели.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК ДанныеКонтрагента
| ПО ДанныеКонтрагента.Ссылка = Покупатели.Покупатель
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеОснований КАК ДанныеОснований
| ПО СчетаФактуры.Ссылка = ДанныеОснований.Ссылка
| И ДанныеОснований.ПечататьСчетФактураВыданный
|
|ГДЕ
| СчетаФактуры.РеализацияЧерезКомиссионера
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|ИТОГИ ПО
| Ссылка
|;
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеОснований.ДокументОснование КАК ДокументОснование,
| ДанныеДокумента.ИдентификаторГосКонтракта КАК ИдентификаторГосКонтракта,
| ДанныеОснований.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеОснований.СтранаРегистрации КАК СтранаРегистрации,
|
| &ПредставлениеСчетФактура КАК ПредставлениеДокумента,
| ДанныеДокумента.ПредставлениеНомера КАК Номер,
| ВЫБОР КОГДА ДанныеДокумента.Исправление ТОГДА
| ЕСТЬNULL(ДанныеДокумента.СчетФактураОснование.Дата, ДАТАВРЕМЯ(1,1,1))
| ИНАЧЕ
| ДанныеДокумента.Дата
| КОНЕЦ КАК Дата,
| ВЫБОР КОГДА ДанныеДокумента.Исправление ТОГДА
| ДанныеДокумента.НомерИсправления
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК НомерИсправления,
| ВЫБОР КОГДА ДанныеДокумента.Исправление ТОГДА
| ДанныеДокумента.Дата
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДатаИсправления,
| ДанныеДокумента.Исправление КАК Исправление,
| ДанныеДокумента.Корректировочный КАК КорректировочныйСчетФактура,
| ЕСТЬNULL(ТаблицаПлатежноРасчетныеДокументы.СтрокаПлатежноРасчетныеДокументы,
| ДанныеДокумента.СтрокаПлатежноРасчетныеДокументы) КАК СтрокаПоДокументу,
| ДанныеДокумента.Валюта КАК ВалютаСчетаФактуры,
| ДанныеОснований.Контрагент КАК Контрагент,
| ДанныеОснований.КПППокупателя КАК КПППокупателя,
| ДанныеОснований.ИННПокупателя КАК ИННПокупателя,
| ДанныеОснований.Грузополучатель КАК Грузополучатель,
| ДанныеОснований.Организация КАК Организация,
| ДанныеОснований.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеОснований.КПППоставщика КАК КПППоставщика,
| ДанныеОснований.Грузоотправитель КАК Грузоотправитель,
| ДанныеОснований.Префикс КАК Префикс,
| 0 КАК ИндексПодразделения,
| ДанныеОснований.КодСпециальныхОбстоятельств КАК КодСпециальныхОбстоятельств,
| ДанныеОснований.АдресДоставки КАК АдресДоставки,
| ВЫБОР
| КОГДА ОтветственныеЛицаСФ.РуководительНаименование = """"
| ТОГДА ТаблицаОтветственныеЛица.РуководительНаименование
| ИНАЧЕ ОтветственныеЛицаСФ.РуководительНаименование
| КОНЕЦ КАК Руководитель,
| ВЫБОР
| КОГДА ОтветственныеЛицаСФ.РуководительДолжность = """"
| ТОГДА ТаблицаОтветственныеЛица.РуководительДолжность
| ИНАЧЕ ОтветственныеЛицаСФ.РуководительДолжность
| КОНЕЦ КАК ДолжностьРуководителя,
| ВЫБОР
| КОГДА ОтветственныеЛицаСФ.ГлавныйБухгалтерНаименование = """"
| ТОГДА ТаблицаОтветственныеЛица.ГлавныйБухгалтерНаименование
| ИНАЧЕ ОтветственныеЛицаСФ.ГлавныйБухгалтерНаименование
| КОНЕЦ КАК ГлавныйБухгалтер,
| ДанныеОснований.Валюта КАК Валюта,
| ДанныеОснований.ВалютаНаименованиеПолное КАК ВалютаНаименованиеПолное,
| ДанныеОснований.ВалютаКод КАК ВалютаКод,
|
|
| ВЫБОР
| КОГДА НоменклатураДокументов.ЕстьУслуги
| И НЕ НоменклатураДокументов.ЕстьТовары
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ТолькоУслуги,
| НоменклатураДокументов.ЕстьПрослеживаемыеТовары КАК ЕстьПрослеживаемыеТовары,
| ДанныеДокумента.Перевыставленный КАК ПеревыставленныйСчетФактура,
| ПредставленияСтрок5а.ПредставлениеСтроки5а КАК ПредставлениеСтроки5а,
| ДанныеДокумента.РеализацияЧерезКомиссионера КАК РеализацияЧерезКомиссионера,
| ДанныеКомиссионера.ПредставлениеВыставленКомиссионеру КАК ПредставлениеВыставленКомиссионеру
|ИЗ
| СчетаФактурыОснованияПервые КАК СчетаФактурыОснования
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК ДанныеДокумента
| ПО СчетаФактурыОснования.Ссылка = ДанныеДокумента.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеОснований КАК ДанныеОснований
| ПО СчетаФактурыОснования.Ссылка = ДанныеОснований.Ссылка
| И ДанныеОснований.ПечататьСчетФактураВыданный
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураДокументов КАК НоменклатураДокументов
| ПО СчетаФактурыОснования.Ссылка = НоменклатураДокументов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОтветственныеЛица КАК ТаблицаОтветственныеЛица
| ПО СчетаФактурыОснования.ДокументОснование = ТаблицаОтветственныеЛица.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ОтветственныеЛицаСФ КАК ОтветственныеЛицаСФ
| ПО ДанныеДокумента.Ссылка = ОтветственныеЛицаСФ.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаПлатежноРасчетныеДокументы КАК ТаблицаПлатежноРасчетныеДокументы
| ПО СчетаФактурыОснования.Ссылка = ТаблицаПлатежноРасчетныеДокументы.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияСтрок5а КАК ПредставленияСтрок5а
| ПО ПредставленияСтрок5а.СчетФактура = СчетаФактурыОснования.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ПредставлениеВыставленКомиссионеру КАК ДанныеКомиссионера
| ПО ДанныеКомиссионера.СчетФактура = СчетаФактурыОснования.Ссылка
|";
Если ПечататьСчетаФактурыПолученные Тогда
ТекстЗапроса = ТекстЗапроса + "
|
|ОБЪЕДИНИТЬ ВСЕ
|" +
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеОснований.ДокументОснование КАК ДокументОснование,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторГосКонтракта,
| ДанныеОснований.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеОснований.СтранаРегистрации КАК СтранаРегистрации,
| &ПредставлениеСчетФактураПосредника КАК ПредставлениеДокумента,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.ДатаСоставления КАК Дата,
| ВЫБОР КОГДА ДанныеДокумента.Исправление ТОГДА
| ДанныеДокумента.НомерИсправления
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК НомерИсправления,
| ВЫБОР КОГДА ДанныеДокумента.Исправление ТОГДА
| ДанныеДокумента.ДатаИсправления
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДатаИсправления,
| ДанныеДокумента.Исправление КАК Исправление,
| ЛОЖЬ КАК КорректировочныйСчетФактура,
| """" КАК СтрокаПоДокументу,
| ДанныеДокумента.Валюта КАК ВалютаСчетаФактуры,
| ДанныеОснований.Контрагент КАК Контрагент,
| ДанныеОснований.КПППокупателя КАК КПППокупателя,
| ДанныеОснований.ИННПокупателя КАК ИННПокупателя,
| ДанныеОснований.Грузополучатель КАК Грузополучатель,
| ДанныеОснований.Организация КАК Организация,
| НЕОПРЕДЕЛЕНО КАК НалогообложениеНДС,
| ДанныеОснований.КПППоставщика КАК КПППоставщика,
| ДанныеОснований.Грузоотправитель КАК Грузоотправитель,
| ДанныеОснований.Префикс КАК Префикс,
| 0 КАК ИндексПодразделения,
| ДанныеОснований.КодСпециальныхОбстоятельств КАК КодСпециальныхОбстоятельств,
| """" КАК АдресДоставки,
| """" КАК Руководитель,
| """" КАК ДолжностьРуководителя,
| """" КАК ГлавныйБухгалтер,
| ДанныеОснований.Валюта КАК Валюта,
| ДанныеОснований.ВалютаНаименованиеПолное КАК ВалютаНаименованиеПолное,
| ДанныеОснований.ВалютаКод КАК ВалютаКод,
|
| ВЫБОР
| КОГДА НоменклатураДокументов.ЕстьУслуги
| И НЕ НоменклатураДокументов.ЕстьТовары
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ТолькоУслуги,
| ЛОЖЬ КАК ЕстьПрослеживаемыеТовары,
| ЛОЖЬ КАК ПеревыставленныйСчетФактура,
| ПредставленияСтрок5а.ПредставлениеСтроки5а КАК ПредставлениеСтроки5а,
| ЛОЖЬ КАК РеализацияЧерезКомиссионера,
| ДанныеКомиссионера.ПредставлениеВыставленКомиссионеру КАК ПредставлениеВыставленКомиссионеру
|
|ИЗ
| СчетаФактурыПолученныеОснованияПервые КАК СчетаФактурыОснования
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК ДанныеДокумента
| ПО СчетаФактурыОснования.Ссылка = ДанныеДокумента.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеОснованийСчетФактураПолученный КАК ДанныеОснований
| ПО СчетаФактурыОснования.Ссылка = ДанныеОснований.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураДокументовПолученные КАК НоменклатураДокументов
| ПО СчетаФактурыОснования.Ссылка = НоменклатураДокументов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияСтрок5а КАК ПредставленияСтрок5а
| ПО ПредставленияСтрок5а.СчетФактура = СчетаФактурыОснования.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ПредставлениеВыставленКомиссионеру КАК ДанныеКомиссионера
| ПО ДанныеКомиссионера.СчетФактура = СчетаФактурыОснования.Ссылка
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|////////////////////////////////////////////////////////////////////////////
|";
Если ПараметрыПечати.Свойство("ДополнитьДаннымиУПД") И ПараметрыПечати.ДополнитьДаннымиУПД Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//РеквизитыОснованийДляУПД",
" ДанныеОснований.Основание КАК Основание,
| ДанныеОснований.ОснованиеДата КАК ОснованиеДата,
| ДанныеОснований.ОснованиеНомер КАК ОснованиеНомер,
| ДанныеОснований.БанковскийСчетОрганизации КАК БанковскийСчетОрганизации,
| ДанныеОснований.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДанныеОснований.БанковскийСчетГрузоотправителя КАК БанковскийСчетГрузоотправителя,
| ДанныеОснований.БанковскийСчетГрузополучателя КАК БанковскийСчетГрузополучателя,
| ДанныеОснований.ДоверенностьНомер КАК ДоверенностьНомер,
| ДанныеОснований.ДоверенностьДата КАК ДоверенностьДата,
| ДанныеОснований.ДоверенностьВыдана КАК ДоверенностьВыдана,
| ДанныеОснований.ДоверенностьЛицо КАК ДоверенностьЛицо,
| ДанныеОснований.Менеджер КАК Менеджер,
| ДанныеОснований.Кладовщик КАК Кладовщик,
| ДанныеОснований.ДолжностьКладовщика КАК ДолжностьКладовщика,
| ВЫРАЗИТЬ(ДанныеОснований.АдресДоставкиЗначенияПолей КАК СТРОКА(1000)) КАК АдресДоставкиЗначенияПолей,
| ВЫРАЗИТЬ(ДанныеОснований.АдресДоставкиЗначение КАК СТРОКА(1000)) КАК АдресДоставкиЗначение,
| ДанныеОснований.Склад КАК Склад,
| ДанныеОснований.ДанныеТранспортнаяНакладная КАК ДанныеТранспортнаяНакладная,
| ДанныеОснований.СопроводительныеДокументы КАК СопроводительныеДокументы,
|");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеУПДВыданного",
" ИСТИНА КАК ВыводитьКодНоменклатуры,
| ИСТИНА КАК ТребуетсяНаличиеСФ,
| НЕ ДанныеДокумента.Корректировочный КАК ПечатьНеТребуется,
| 1 КАК СтатусУПД,");
Если ПараметрыПечати.Свойство("ПечатьЭДКСЧФ") = Ложь Или ПараметрыПечати.ПечатьЭДКСЧФ = Ложь Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//УсловиеУПДВыданного",
" КОГДА ТИПЗНАЧЕНИЯ(СчетФактураВыданный.ДокументОснование) = ТИП(Документ.ВозвратТоваровМеждуОрганизациями)
| И СчетФактураВыданный.Дата >= &ДатаОтраженияВозвратовКорректировочнымиСФ
| ТОГДА ЛОЖЬ");
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеУПДПолученного",
" НЕОПРЕДЕЛЕНО КАК Основание,
| НЕОПРЕДЕЛЕНО КАК ОснованиеДата,
| НЕОПРЕДЕЛЕНО КАК ОснованиеНомер,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетОрганизации,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетКонтрагента,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетГрузоотправителя,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетГрузополучателя,
| НЕОПРЕДЕЛЕНО КАК ДоверенностьНомер,
| НЕОПРЕДЕЛЕНО КАК ДоверенностьДата,
| НЕОПРЕДЕЛЕНО КАК ДоверенностьВыдана,
| НЕОПРЕДЕЛЕНО КАК ДоверенностьЛицо,
| НЕОПРЕДЕЛЕНО КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК Кладовщик,
| НЕОПРЕДЕЛЕНО КАК ДолжностьКладовщика,
| """" КАК АдресДоставкиЗначенияПолей,
| """" КАК АдресДоставкиЗначение,
| НЕОПРЕДЕЛЕНО КАК Склад,
| """" КАК ДанныеТранспортнаяНакладная,
| """" КАК СопроводительныеДокументы,
| ЛОЖЬ КАК ВыводитьКодНоменклатуры,
| ИСТИНА КАК ТребуетсяНаличиеСФ,
| ЛОЖЬ КАК ПечатьНеТребуется,
| 1 КАК СтатусУПД,");
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаИсходныхДокументовДляПечатиСчетаФактуры()
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетаФактурыОснования.Ссылка КАК Ссылка,
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура, ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка)) КАК ИсходныйДокумент,
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.ПредставлениеНомера, """") КАК НомерСчетаФактуры,
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.СчетФактураОснование.Дата, СчетФактураТовары.ПредыдущийСчетФактура.Дата) КАК ДатаСчетаФактуры,
| ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.НомерИсправления, """") КАК НомерИсправленияСчетаФактуры,
| ВЫБОР
| КОГДА СчетФактураТовары.ПредыдущийСчетФактура.Исправление
| ТОГДА ЕСТЬNULL(СчетФактураТовары.ПредыдущийСчетФактура.Дата, ДАТАВРЕМЯ(1, 1, 1))
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаИсправленияСчетаФактуры
|ИЗ
| СчетаФактурыОснования КАК СчетаФактурыОснования
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК СчетФактураТовары
| ПО СчетаФактурыОснования.Ссылка = СчетФактураТовары.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| ИсходныйДокумент
|ИТОГИ ПО
| Ссылка
|;
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДанныхТабличнойЧастиДляПечатиСчетаФактуры(ПараметрыПечати)
ПечататьСчетаФактурыПолученные = ПараметрыПечати.Свойство("МассивСчетФактураПолученный");
ТекстЗапроса =
"ВЫБРАТЬ
| СчетаФактурыОснования.Ссылка КАК Ссылка,
| АналитикиТаблицыТоваровСНомерамиСтрок.НомерСтрокиСФ КАК НомерСтроки,
| АналитикиТаблицыТоваровСНомерамиСтрок.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ,
| ТаблицаДокумента.Номенклатура КАК Номенклатура,
| ТаблицаДокумента.НоменклатураНаименование КАК НоменклатураНаименование,
| ТаблицаДокумента.НоменклатураКод КАК НоменклатураКод,
| ТаблицаДокумента.КодТНВЭД КАК КодТНВЭД,
| ТаблицаДокумента.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ДанныеЕдиницыИзмерения.Представление КАК ЕдиницаИзмеренияНаименование,
| ДанныеЕдиницыИзмерения.Код КАК ЕдиницаИзмеренияКод,
| ТаблицаДокумента.НомерГТД.ЕдиницаИзмерения КАК ЕдиницаИзмеренияТНВЭД,
| ТаблицаДокумента.НомерГТД.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияТНВЭДНаименование,
| ТаблицаДокумента.НомерГТД.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияТНВЭДКод,
| ТаблицаДокумента.Характеристика КАК Характеристика,
| ТаблицаДокумента.НоменклатураПартнера КАК НоменклатураПартнера,
| ЕСТЬNULL(ДанныеХарактеристики.НаименованиеПолное, """") КАК ХарактеристикаНаименование,
| ТаблицаДокумента.Серия КАК Серия,
| ТаблицаДокумента.Серия.Наименование КАК СерияНаименование,
| ТаблицаДокумента.НомерГТД КАК НомерГТДСсылка,
| ЕСТЬNULL(ТаблицаДокумента.НомерГТД.ТипНомераГТД, НЕОПРЕДЕЛЕНО) КАК ТипНомераГТД,
| ВЫБОР
| КОГДА ТаблицаДокумента.НомерГТД.РегистрационныйНомер = """"
| ТОГДА ТаблицаДокумента.НомерГТД
| ИНАЧЕ ТаблицаДокумента.НомерГТД.РегистрационныйНомер
| КОНЕЦ КАК НомерГТД,
| ДанныеСтраныПросхождения.Ссылка КАК СтранаПроисхождения,
| ДанныеСтраныПросхождения.Код КАК СтранаПроисхожденияКод,
| СУММА(ТаблицаДокумента.Количество) КАК Количество,
| СУММА(ТаблицаДокумента.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| ВЫБОР КОГДА СУММА(ТаблицаДокумента.Количество) = 0 И ТаблицаДокумента.Цена = 0
| ТОГДА ТаблицаДокумента.ЦенаДо
| ИНАЧЕ ТаблицаДокумента.Цена
| КОНЕЦ КАК Цена,
| СУММА(ТаблицаДокумента.СуммаБезНДС) КАК СуммаБезНДС,
| СУММА(ТаблицаДокумента.СуммаНДС) КАК СуммаНДС,
| СУММА(ТаблицаДокумента.СуммаБезНДС
| + ТаблицаДокумента.СуммаНДС) КАК СуммаСНДС,
| ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС,
| СУММА(ТаблицаДокумента.МежценоваяРазница) КАК МежценоваяРазница,
|
| СУММА(ТаблицаДокумента.КоличествоДо) КАК КоличествоДо,
| СУММА(ТаблицаДокумента.КоличествоПоРНПТДо) КАК КоличествоПоРНПТДо,
| СУММА(ТаблицаДокумента.КоличествоПоРНПТУвеличение) КАК КоличествоПрослежУвеличение,
| СУММА(ТаблицаДокумента.КоличествоПоРНПТУменьшение) КАК КоличествоПрослежУменьшение,
| ТаблицаДокумента.ЦенаДо КАК ЦенаДо,
| СУММА(ТаблицаДокумента.СуммаБезНДСДо) КАК СуммаБезНДСДо,
| СУММА(ТаблицаДокумента.МежценоваяРазницаДо) КАК МежценоваяРазницаДо,
| СУММА(ТаблицаДокумента.РазницаБезНДСУвеличение) КАК РазницаБезНДСУвеличение,
| СУММА(ТаблицаДокумента.РазницаБезНДСУменьшение) КАК РазницаБезНДСУменьшение,
| СУММА(ТаблицаДокумента.СуммаНДСДо) КАК СуммаНДСДо,
| СУММА(ТаблицаДокумента.РазницаНДСУвеличение) КАК РазницаНДСУвеличение,
| СУММА(ТаблицаДокумента.РазницаНДСУменьшение) КАК РазницаНДСУменьшение,
| СУММА(ТаблицаДокумента.СуммаБезНДСДо
| + ТаблицаДокумента.СуммаНДСДо) КАК СуммаСНДСДо,
| СУММА(ТаблицаДокумента.РазницаСНДСУвеличение) КАК РазницаСНДСУвеличение,
| СУММА(ТаблицаДокумента.РазницаСНДСУменьшение) КАК РазницаСНДСУменьшение,
| СУММА(ТаблицаДокумента.КоличествоБазовыхЕдиниц) КАК КоличествоБазовыхЕдиниц,
| СУММА(ТаблицаДокумента.КоличествоБазовыхЕдиницДо) КАК КоличествоБазовыхЕдиницДо,
|
|
|
| ЛОЖЬ КАК ЭтоВозвратнаяТара
|
|ИЗ
| ТаблицаТоваровДокументов КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования КАК СчетаФактурыОснования
| ПО (ВЫБОР
| КОГДА СчетаФактурыОснования.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОЗакупках
| ТОГДА СчетаФактурыОснования.Ссылка = ТаблицаДокумента.СсылкаСФ
| КОГДА СчетаФактурыОснования.ДокументОснование ССЫЛКА Документ.ОтчетКомиссионера
| ТОГДА СчетаФактурыОснования.ДокументОснование = ТаблицаДокумента.Ссылка
| И (ТаблицаДокумента.Покупатель, ТаблицаДокумента.НомерСчетаФактуры) В
| (ВЫБРАТЬ СчетаФактурыПокупатели.Покупатель,
| СчетаФактурыПокупатели.НомерСчетаФактуры
| ИЗ СчетаФактурыПокупатели КАК СчетаФактурыПокупатели
| ГДЕ
| СчетаФактурыПокупатели.Ссылка = СчетаФактурыОснования.Ссылка)
| ИНАЧЕ СчетаФактурыОснования.ДокументОснование = ТаблицаДокумента.Ссылка
| КОНЕЦ)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК ДанныеЕдиницыИзмерения
| ПО ТаблицаДокумента.ЕдиницаИзмерения = ДанныеЕдиницыИзмерения.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ДанныеХарактеристики
| ПО ТаблицаДокумента.Характеристика = ДанныеХарактеристики.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК ДанныеСтраныПросхождения
| ПО ТаблицаДокумента.НомерГТД.СтранаПроисхождения = ДанныеСтраныПросхождения.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ АналитикиТаблицыТоваровСНомерамиСтрок КАК АналитикиТаблицыТоваровСНомерамиСтрок
| ПО АналитикиТаблицыТоваровСНомерамиСтрок.СчетФактура = СчетаФактурыОснования.Ссылка
| И АналитикиТаблицыТоваровСНомерамиСтрок.НомерСтрокиИсходногоСФ = ТаблицаДокумента.НомерСтрокиИсходногоСФ
| И АналитикиТаблицыТоваровСНомерамиСтрок.Номенклатура = ТаблицаДокумента.Номенклатура
| И АналитикиТаблицыТоваровСНомерамиСтрок.НоменклатураНаименование = ТаблицаДокумента.НоменклатураНаименование
| И АналитикиТаблицыТоваровСНомерамиСтрок.КодТНВЭД = ТаблицаДокумента.КодТНВЭД
| И АналитикиТаблицыТоваровСНомерамиСтрок.Характеристика = ТаблицаДокумента.Характеристика
| И АналитикиТаблицыТоваровСНомерамиСтрок.Серия = ТаблицаДокумента.Серия
| И АналитикиТаблицыТоваровСНомерамиСтрок.НомерГТД = ТаблицаДокумента.НомерГТД
| И АналитикиТаблицыТоваровСНомерамиСтрок.Цена = ТаблицаДокумента.Цена
| И АналитикиТаблицыТоваровСНомерамиСтрок.СтавкаНДС = ТаблицаДокумента.СтавкаНДС
| И АналитикиТаблицыТоваровСНомерамиСтрок.ЦенаДо = ТаблицаДокумента.ЦенаДо
|
|ГДЕ
| НЕ ТаблицаДокумента.ЭтоВозвратнаяТара
|
|СГРУППИРОВАТЬ ПО
| СчетаФактурыОснования.Ссылка,
| АналитикиТаблицыТоваровСНомерамиСтрок.НомерСтрокиСФ,
| АналитикиТаблицыТоваровСНомерамиСтрок.НомерСтрокиИсходногоСФ,
| ТаблицаДокумента.Номенклатура,
| ТаблицаДокумента.НоменклатураНаименование,
| ТаблицаДокумента.НоменклатураКод,
| ТаблицаДокумента.КодТНВЭД,
| ТаблицаДокумента.ЕдиницаИзмерения,
| ДанныеЕдиницыИзмерения.Представление,
| ДанныеЕдиницыИзмерения.Код,
| ТаблицаДокумента.НомерГТД.ЕдиницаИзмерения,
| ТаблицаДокумента.НомерГТД.ЕдиницаИзмерения.Представление,
| ТаблицаДокумента.НомерГТД.ЕдиницаИзмерения.Код,
| ТаблицаДокумента.Характеристика,
| ТаблицаДокумента.НоменклатураПартнера,
| ДанныеХарактеристики.НаименованиеПолное,
| ТаблицаДокумента.Серия,
| ТаблицаДокумента.Серия.Наименование,
| ТаблицаДокумента.НомерГТД,
| ЕСТЬNULL(ТаблицаДокумента.НомерГТД.ТипНомераГТД, НЕОПРЕДЕЛЕНО),
| ВЫБОР
| КОГДА ТаблицаДокумента.НомерГТД.РегистрационныйНомер = """"
| ТОГДА ТаблицаДокумента.НомерГТД
| ИНАЧЕ ТаблицаДокумента.НомерГТД.РегистрационныйНомер
| КОНЕЦ,
| ДанныеСтраныПросхождения.Ссылка,
| ТаблицаДокумента.Цена,
| ТаблицаДокумента.ЦенаДо,
| ТаблицаДокумента.НомерГТД,
| ЕСТЬNULL(ТаблицаДокумента.НомерГТД.ТипНомераГТД, НЕОПРЕДЕЛЕНО),
|
| ТаблицаДокумента.СтавкаНДС";
Если ПараметрыПечати.ВыводитьНаборы Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДанныеНаборов",
"МИНИМУМ(ТаблицаДокумента.НомерСтрокиНаборы) КАК НомерСтрокиНаборы,
| ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ТаблицаДокумента.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ТаблицаДокумента.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаДокумента.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаДокумента.ЭтоКомплектующие КАК ЭтоКомплектующие,
| ТаблицаДокумента.ЭтоНабор КАК ЭтоНабор,
| ТаблицаДокумента.ПолныйНабор КАК ПолныйНабор,");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ГруппировкаНаборов",
"ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах,
| ТаблицаДокумента.ВариантРасчетаЦеныНабора,
| ТаблицаДокумента.НоменклатураНабора,
| ТаблицаДокумента.ХарактеристикаНабора,
| ТаблицаДокумента.ЭтоКомплектующие,
| ТаблицаДокумента.ЭтоНабор,
| ТаблицаДокумента.ПолныйНабор,");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//СоединениеНаборов",
"И АналитикиТаблицыТоваровСНомерамиСтрок.ВариантПредставленияНабораВПечатныхФормах = ТаблицаДокумента.ВариантПредставленияНабораВПечатныхФормах
| И АналитикиТаблицыТоваровСНомерамиСтрок.ВариантРасчетаЦеныНабора = ТаблицаДокумента.ВариантРасчетаЦеныНабора
| И АналитикиТаблицыТоваровСНомерамиСтрок.НоменклатураНабора = ТаблицаДокумента.НоменклатураНабора
| И АналитикиТаблицыТоваровСНомерамиСтрок.ХарактеристикаНабора = ТаблицаДокумента.ХарактеристикаНабора
| И АналитикиТаблицыТоваровСНомерамиСтрок.ЭтоКомплектующие = ТаблицаДокумента.ЭтоКомплектующие
| И АналитикиТаблицыТоваровСНомерамиСтрок.ЭтоНабор = ТаблицаДокумента.ЭтоНабор
| И АналитикиТаблицыТоваровСНомерамиСтрок.ПолныйНабор = ТаблицаДокумента.ПолныйНабор");
КонецЕсли;
Если ПечататьСчетаФактурыПолученные Тогда
ТекстЗапроса = ТекстЗапроса + "
|
|ОБЪЕДИНИТЬ ВСЕ
|" +
СтрЗаменить(ТекстЗапроса, "СчетаФактурыОснования", "СчетаФактурыПолученныеОснования");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "СчетаФактурыПолученныеОснования.РеализацияЧерезКомиссионера", "ЛОЖЬ");
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| //ПорядокНаборов
| НомерСтроки
|ИТОГИ ПО
| Ссылка
|;";
Если ПараметрыПечати.ВыводитьНаборы Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ПорядокНаборов",
"НомерСтрокиНаборы,
| НоменклатураНабора,
| ХарактеристикаНабора,
| ЭтоНабор УБЫВ,");
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Процедура ПоместитьВременнуюТаблицуДанныеПоследнейКорректировки(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Основной,
| ДанныеДокументов.ДокументОснование КАК ДокументОснование,
| ТекущийДокумент.ДокументОснование КАК Подчиненный,
| ТекущийДокумент.ДокументОснование.МоментВремени КАК МоментВремени
|ПОМЕСТИТЬ ВтСвязанныеДокументы
|ИЗ
| Документ.КорректировкаРеализации КАК ТекущийДокумент
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования_Шапка КАК ДанныеДокументов
| ПО ТекущийДокумент.Ссылка = ДанныеДокументов.ДокументОснование
|ГДЕ
| НЕ ТекущийДокумент.ВидКорректировки В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияПерепоставленногоТовара),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокументов.Ссылка,
| ДанныеДокументов.ДокументОснование,
| ПредыдущиеДокументы.Ссылка,
| ПредыдущиеДокументы.МоментВремени
|ИЗ
| Документ.КорректировкаРеализации КАК ТекущийДокумент
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования_Шапка КАК ДанныеДокументов
| ПО ТекущийДокумент.Ссылка = ДанныеДокументов.ДокументОснование
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации КАК ПредыдущиеДокументы
| ПО ТекущийДокумент.ДокументОснование = ПредыдущиеДокументы.ДокументОснование
| И (ТекущийДокумент.Дата >= ПредыдущиеДокументы.Дата
| ИЛИ (ТекущийДокумент.Дата = ПредыдущиеДокументы.Дата
| И ТекущийДокумент.Ссылка >= ПредыдущиеДокументы.Ссылка))
|ГДЕ
| ПредыдущиеДокументы.Проведен
| И НЕ ТекущийДокумент.ВидКорректировки В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияПерепоставленногоТовара),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратНедопоставленногоТовара))
|;
|
|ВЫБРАТЬ
| СвязанныеДокументы.Основной КАК Основной,
| СвязанныеДокументы.Подчиненный КАК Предыдущий
|ИЗ
| ВтСвязанныеДокументы КАК СвязанныеДокументы
|
|ГДЕ
| СвязанныеДокументы.Подчиненный <> СвязанныеДокументы.ДокументОснование
| И (СвязанныеДокументы.Основной.Корректировочный
| ИЛИ СвязанныеДокументы.Основной.Исправление)
|
|УПОРЯДОЧИТЬ ПО
| СвязанныеДокументы.МоментВремени УБЫВ
|
|ИТОГИ ПО
| СвязанныеДокументы.Основной
|
|;
|
|УНИЧТОЖИТЬ ВтСвязанныеДокументы";
РезультатЗапроса = Запрос.Выполнить();
ТаблицаПредыдущихДокументов = Новый ТаблицаЗначений;
ТаблицаПредыдущихДокументов.Колонки.Добавить("Основной", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный"));
ТаблицаПредыдущихДокументов.Колонки.Добавить("Предыдущий", Новый ОписаниеТипов("ДокументСсылка.КорректировкаРеализации,
|ДокументСсылка.РеализацияТоваровУслуг"));
ВыборкаПоСсылкам = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСсылкам.Следующий() Цикл
Выборка = ВыборкаПоСсылкам.Выбрать();
Если Выборка.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ТаблицаПредыдущихДокументов.Добавить(), Выборка);
КонецЕсли;
КонецЦикла;
Запрос.Текст = "
|////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПредыдущиеДокументы.Основной КАК Основной,
| ПредыдущиеДокументы.Предыдущий КАК Предыдущий
|
|ПОМЕСТИТЬ ПредыдущиеДокументы
|ИЗ
| &ПредыдущиеДокументы КАК ПредыдущиеДокументы ";
Запрос.УстановитьПараметр("ПредыдущиеДокументы", ТаблицаПредыдущихДокументов);
РезультатЗапроса = Запрос.Выполнить();
КонецПроцедуры
Функция ТекстЗапросаДанныхМаркировки(ЗаполнитьДанныеШтрихкодовДляУКДДо = Ложь)
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаШтрихкодыУпаковок.ШтрихкодУпаковки КАК Штрихкод,
| СчетаФактурыОснования.Ссылка КАК Ссылка
|ИЗ
| СчетаФактурыОснования КАК СчетаФактурыОснования
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК ДокументыОснования
| ПО ДокументыОснования.Ссылка = СчетаФактурыОснования.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ШтрихкодыУпаковок КАК ТаблицаШтрихкодыУпаковок
| ПО ДокументыОснования.ДокументОснование = ТаблицаШтрихкодыУпаковок.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровИСМП КАК ДокументыПрямогоОбмена
| ПО СчетаФактурыОснования.ДокументОснование = ДокументыПрямогоОбмена.ДокументОснование
| И НЕ ДокументыПрямогоОбмена.ПометкаУдаления
|ГДЕ
| ДокументыПрямогоОбмена.Ссылка ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ТаблицаШтрихкодыУпаковок.ШтрихкодУпаковки КАК Штрихкод,
| ТаблицаШтрихкодыУпаковок.Ссылка КАК Ссылка
|ИЗ
| ШтрихкодыУпаковок КАК ТаблицаШтрихкодыУпаковок
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования КАК СчетаФактурыОснования
| ПО СчетаФактурыОснования.Ссылка = ТаблицаШтрихкодыУпаковок.Ссылка
|
|ГДЕ
| СчетаФактурыОснования.Корректировочный";
Если ЗаполнитьДанныеШтрихкодовДляУКДДо Тогда
ТекстЗапроса = ТекстЗапроса +
"
|;
|////////////////////////////////////////////////////////////////////////////
|
|ВЫБРАТЬ
| ТаблицаШтрихкодыУпаковокДо.ШтрихкодУпаковки КАК Штрихкод,
| ТаблицаШтрихкодыУпаковокДо.Ссылка КАК Ссылка
|ИЗ
| ШтрихкодыУпаковокДо КАК ТаблицаШтрихкодыУпаковокДо
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СчетаФактурыОснования КАК СчетаФактурыОснования
| ПО СчетаФактурыОснования.Ссылка = ТаблицаШтрихкодыУпаковокДо.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровИСМП КАК ДокументыПрямогоОбмена
| ПО ТаблицаШтрихкодыУпаковокДо.ДокументРеализации = ДокументыПрямогоОбмена.ДокументОснование
| И НЕ ДокументыПрямогоОбмена.ПометкаУдаления
|
|ГДЕ
| ДокументыПрямогоОбмена.Ссылка ЕСТЬ NULL
| И СчетаФактурыОснования.Корректировочный";
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДанныхПоПеревыставленномуСчетуФактуре()
ТекстЗапроса =
"
|
|;
|
|////////////////////////////////////////////////////////////////////////////
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетаФактурыОснования.Ссылка КАК Ссылка,
| ДанныеДокумента.СчетФактураПолученныйОтПродавца.Контрагент КАК Поставщик,
| ДанныеДокумента.СчетФактураПолученныйОтПродавца.ИННКонтрагента КАК ИННПоставщика,
| ДанныеДокумента.СчетФактураПолученныйОтПродавца.КППКонтрагента КАК КПППоставщика
|ИЗ
| СчетаФактурыОснованияПервые КАК СчетаФактурыОснования
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК ДанныеДокумента
| ПО СчетаФактурыОснования.Ссылка = ДанныеДокумента.Ссылка
| ГДЕ
| ДанныеДокумента.Ссылка.Перевыставленный
|УПОРЯДОЧИТЬ ПО
| Ссылка
|ИТОГИ ПО
| Ссылка
|////////////////////////////////////////////////////////////////////////////
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДанныхПрослеживаемость()
ТекстЗапроса = РеализацияУслугПрочихАктивовЛокализация.ТекстЗапросаДанныхПрослеживаемость();
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДанныхПрослеживаемыеКомплектующие()
ТекстЗапроса = "
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДокумента.НомерГТД КАК НомерГТД,
| Комплектующие.НомерРНПТ КАК НомерРНПТ,
| ВЫБОР
| КОГДА Комплектующие.НомерРНПТ.РегистрационныйНомер = """"
| ТОГДА Комплектующие.НомерРНПТ
| ИНАЧЕ Комплектующие.НомерРНПТ.РегистрационныйНомер
| КОНЕЦ КАК НомерТовара,
| НомераГТД.СуммаПоРНПТ КАК ОбщаяСуммаПоКомплекту,
| Комплектующие.СуммаПоРНПТ КАК СуммаПоРНПТ,
| Комплектующие.КоличествоПоРНПТ КАК Количество,
| Комплектующие.ЕдиницаИзмеренияТНВЭД КАК ЕдиницаИзмерения,
| Комплектующие.ЕдиницаИзмеренияТНВЭД.Код КАК ЕдиницаИзмеренияКод,
| Комплектующие.ЕдиницаИзмеренияТНВЭД.Представление КАК ЕдиницаИзмеренияНаименование
|ИЗ
| ТаблицаТоваров КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НомераГТД.ПрослеживаемыеКомплектующие КАК Комплектующие
| ПО ТаблицаДокумента.НомерГТД = Комплектующие.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НомераГТД КАК НомераГТД
| ПО ТаблицаДокумента.НомерГТД = НомераГТД.Ссылка";
Возврат ТекстЗапроса;
КонецФункции
Функция ПолучитьТекстЗапросаПлатежныхДокументов()
ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПлатежныеДокументы.ДокументОплаты КАК РасчетныйДокумент
|ПОМЕСТИТЬ ВтТаблицаДокументов
|ИЗ
| РасчетыСКлиентами_ОснованияИДокументыОплаты КАК ПлатежныеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаОтбора
| ПО ПлатежныеДокументы.ОснованиеОплаты = ТаблицаОтбора.ДокументОснование
| И ПлатежныеДокументы.Организация = ТаблицаОтбора.Организация
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПлатежныеДокументы.ДокументОплаты
|ИЗ
| РасчетыСПоставщиками_ОснованияИДокументыОплаты КАК ПлатежныеДокументы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаОтбора
| ПО ПлатежныеДокументы.ОснованиеОплаты = ТаблицаОтбора.ДокументОснование
| И ПлатежныеДокументы.Организация = ТаблицаОтбора.Организация
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокумента.ДатаВходящегоДокумента КАК ДатаПлатежноРасчетногоДокумента,
| ДанныеДокумента.НомерВходящегоДокумента КАК НомерПлатежноРасчетногоДокумента
|ИЗ
| Документ.ПоступлениеБезналичныхДенежныхСредств КАК ДанныеДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаДокументов КАК ТаблицаДокументов
| ПО ДанныеДокумента.Ссылка = ТаблицаДокументов.РасчетныйДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокумента.Дата,
| ДанныеДокумента.Номер
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ДанныеДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаДокументов КАК ТаблицаДокументов
| ПО ДанныеДокумента.Ссылка = ТаблицаДокументов.РасчетныйДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокумента.ДатаВходящегоДокумента,
| ДанныеДокумента.НомерВходящегоДокумента
|ИЗ
| Документ.ПервичныйДокумент КАК ДанныеДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаДокументов КАК ТаблицаДокументов
| ПО ДанныеДокумента.Ссылка = ТаблицаДокументов.РасчетныйДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокумента.ДатаВходящегоДокумента,
| ДанныеДокумента.НомерВходящегоДокумента
|ИЗ
| Документ.СписаниеБезналичныхДенежныхСредств КАК ДанныеДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаДокументов КАК ТаблицаДокументов
| ПО ДанныеДокумента.Ссылка = ТаблицаДокументов.РасчетныйДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокумента.Дата,
| ДанныеДокумента.Номер
|ИЗ
| Документ.РасходныйКассовыйОрдер КАК ДанныеДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаДокументов КАК ТаблицаДокументов
| ПО ДанныеДокумента.Ссылка = ТаблицаДокументов.РасчетныйДокумент";
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗаполнитьПлатежноРасчетныеДокументыПоОтчетуКомитенту(ДокументОтчета, СчетаФактурыПолученные, ПлатежноРасчетныеДокументы) Экспорт
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтчетКомитентуОЗакупкахТовары.СчетФактураПолученный КАК ДокументОснование,
| ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка) КАК Ссылка,
| ОтчетКомитентуОЗакупкахТовары.Ссылка.Организация КАК Организация
|ПОМЕСТИТЬ ТаблицаЗаполненияПлатежноРасчетныхДокументов
|ИЗ
| Документ.ОтчетКомитентуОЗакупках.Товары КАК ОтчетКомитентуОЗакупкахТовары
|ГДЕ
| ОтчетКомитентуОЗакупкахТовары.Ссылка = &ДокументОтчета
| И ОтчетКомитентуОЗакупкахТовары.СчетФактураПолученный В(&СчетаФактурыПолученные)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтчетКомитентуОЗакупкахТовары.ДокументПриобретения,
| ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка),
| ОтчетКомитентуОЗакупкахТовары.Ссылка.Организация
|ИЗ
| Документ.ОтчетКомитентуОЗакупках.Товары КАК ОтчетКомитентуОЗакупкахТовары
|ГДЕ
| ОтчетКомитентуОЗакупкахТовары.Ссылка = &ДокументОтчета
| И ОтчетКомитентуОЗакупкахТовары.СчетФактураПолученный В(&СчетаФактурыПолученные)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтчетКомитентуОЗакупках.Ссылка,
| ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка),
| ОтчетКомитентуОЗакупках.Организация
|ИЗ
| Документ.ОтчетКомитентуОЗакупках КАК ОтчетКомитентуОЗакупках
|ГДЕ
| ОтчетКомитентуОЗакупках.Ссылка = &ДокументОтчета
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтчетКомитентуОЗакупкахТовары.Назначение.Заказ,
| ЗНАЧЕНИЕ(Документ.СчетФактураВыданный.ПустаяСсылка),
| ОтчетКомитентуОЗакупкахТовары.Ссылка.Организация
|ИЗ
| Документ.ОтчетКомитентуОЗакупках.Товары КАК ОтчетКомитентуОЗакупкахТовары
|ГДЕ
| ОтчетКомитентуОЗакупкахТовары.Ссылка = &ДокументОтчета
| И ОтчетКомитентуОЗакупкахТовары.СчетФактураПолученный В(&СчетаФактурыПолученные)
|
|ИНДЕКСИРОВАТЬ ПО
| ДокументОснование
|";
Запрос.УстановитьПараметр("ДокументОтчета", ДокументОтчета);
Запрос.УстановитьПараметр("СчетаФактурыПолученные", СчетаФактурыПолученные);
УстановитьПривилегированныйРежим(Истина);
Запрос.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
ПараметрыПоиска = ВзаиморасчетыСервер.ИнициализироватьПараметрыПоискаОснованийИДокументовОплаты();
ПараметрыПоиска.ПараметрыОтбораПоТаблицеДокументов.ИмяПоля = "ДокументОснование";
ПараметрыПоиска.ПараметрыОтбораПоТаблицеДокументов.ИмяТаблицыОтбора =
"ТаблицаЗаполненияПлатежноРасчетныхДокументов";
ПараметрыПоиска.ОграничитьТипыДокументовОплаты = Истина;
ВзаиморасчетыСервер.ПодготовитьВТ_РасчетыСКлиентами_ОснованияИДокументыОплаты(
Запрос.МенеджерВременныхТаблиц,
ПараметрыПоиска);
ВзаиморасчетыСервер.ПодготовитьВТ_РасчетыСПоставщиками_ОснованияИДокументыОплаты(
Запрос.МенеджерВременныхТаблиц,
ПараметрыПоиска);
Запрос.Текст = ПолучитьТекстЗапросаПлатежныхДокументов();
ДанныеПоПлатежнымДокументам = Запрос.Выполнить().Выгрузить();
ПлатежноРасчетныеДокументы.Загрузить(ДанныеПоПлатежнымДокументам);
КонецПроцедуры
#КонецОбласти
#Область ПечатьПоДаннымСчетовФактур
Процедура ПоместитьВременнуюТаблицуТоваров(МенеджерВременныхТаблиц, ПараметрыЗаполнения = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.НомерСтрокиИсходногоСФ КАК НомерСтрокиИсходногоСФ,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.ЕдиницаИзмерения КАК Упаковка,
| ТаблицаТовары.НомерГТД КАК НомерГТД,
| ТаблицаТовары.КодТНВЭД КАК КодТНВЭД,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Количество КАК КоличествоУпаковок,
| ТаблицаТовары.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТовары.Сумма - ТаблицаТовары.СуммаНДС КАК СуммаБезНДС,
| ВЫБОР
| КОГДА ДанныеДокументов.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДССМежценовойРазницы)
| ТОГДА ТаблицаТовары.МежценоваяРазница
| ИНАЧЕ
| 0
| КОНЕЦ КАК МежценоваяРазница,
| ТаблицаТовары.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТовары.СуммаНДС КАК СуммаНДС,
| ТаблицаТовары.Содержание КАК Содержание,
| ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.ВариантыКомплектацииНоменклатуры.ПустаяСсылка)) КАК ВариантКомплектацииНоменклатуры,
| ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.ВариантПредставленияНабораВПечатныхФормах, ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ПустаяСсылка)) КАК ВариантПредставленияНабораВПечатныхФормах,
| ЕСТЬNULL(ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора, ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка)) КАК ВариантРасчетаЦеныНабора,
| ТаблицаТовары.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТовары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТовары.Количество - ТаблицаТовары.КоличествоУвеличение + ТаблицаТовары.КоличествоУменьшение КАК КоличествоДо,
| ТаблицаТовары.Количество - ТаблицаТовары.КоличествоУвеличение + ТаблицаТовары.КоличествоУменьшение КАК КоличествоУпаковокДо,
| ТаблицаТовары.КоличествоПоРНПТ - ТаблицаТовары.КоличествоПоРНПТУвеличение + ТаблицаТовары.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТДо,
| ТаблицаТовары.КоличествоПоРНПТУвеличение КАК КоличествоПоРНПТУвеличение,
| ТаблицаТовары.КоличествоПоРНПТУменьшение КАК КоличествоПоРНПТУменьшение,
| ТаблицаТовары.Сумма - ТаблицаТовары.СуммаУвеличение + ТаблицаТовары.СуммаУменьшение - (ТаблицаТовары.СуммаНДС - ТаблицаТовары.СуммаНДСУвеличение + ТаблицаТовары.СуммаНДСУменьшение) КАК СуммаБезНДСДо,
| ВЫБОР
| КОГДА ДанныеДокументов.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДССМежценовойРазницы)
| ТОГДА ТаблицаТовары.МежценоваяРазница - ТаблицаТовары.МежценоваяРазницаУвеличение + ТаблицаТовары.МежценоваяРазницаУменьшение
| ИНАЧЕ
| 0
| КОНЕЦ КАК МежценоваяРазницаДо,
| ТаблицаТовары.СуммаНДС - ТаблицаТовары.СуммаНДСУвеличение + ТаблицаТовары.СуммаНДСУменьшение КАК СуммаНДСДо,
| ВЫБОР
| КОГДА ДанныеДокументов.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДССМежценовойРазницы)
| ТОГДА ТаблицаТовары.МежценоваяРазницаУвеличение
| ИНАЧЕ
| ТаблицаТовары.СуммаУвеличение - ТаблицаТовары.СуммаНДСУвеличение
| КОНЕЦ КАК РазницаБезНДСУвеличение,
| ВЫБОР
| КОГДА ДанныеДокументов.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДССМежценовойРазницы)
| ТОГДА ТаблицаТовары.МежценоваяРазницаУменьшение
| ИНАЧЕ
| ТаблицаТовары.СуммаУменьшение - ТаблицаТовары.СуммаНДСУменьшение
| КОНЕЦ КАК РазницаБезНДСУменьшение,
| ТаблицаТовары.СуммаНДСУвеличение КАК РазницаНДСУвеличение,
| ТаблицаТовары.СуммаНДСУменьшение КАК РазницаНДСУменьшение,
| ТаблицаТовары.СуммаУвеличение КАК РазницаСНДСУвеличение,
| ТаблицаТовары.СуммаУменьшение КАК РазницаСНДСУменьшение,
| ВЫБОР
| КОГДА ТаблицаТовары.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И ТаблицаТовары.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЭтоТовар,
| ЛОЖЬ КАК ВернутьМногооборотнуюТару
|ПОМЕСТИТЬ СчетФактураВыданныйТаблицаТоваров
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаДанныхДокументов КАК ДанныеДокументов
| ПО ТаблицаТовары.Ссылка = ДанныеДокументов.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
| ПО ТаблицаТовары.НоменклатураНабора = ВариантыКомплектацииНоменклатуры.Владелец
| И ТаблицаТовары.ХарактеристикаНабора = ВариантыКомплектацииНоменклатуры.Характеристика
| И (ВариантыКомплектацииНоменклатуры.Основной)";
Если ПараметрыЗаполнения <> Неопределено И ПараметрыЗаполнения.ПоОтчетуДавальцу Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "СчетФактураВыданныйТаблицаТоваров", "СчетФактураВыданныйДляОтчетаДавальцуТаблицаТоваров");
КонецЕсли;
Запрос.Выполнить();
КонецПроцедуры
Функция ТекстЗапросаДанныхОснованияДляПечатнойФормыСчетФактура() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| МАКСИМУМ(ДанныеДокументов.ХозяйственнаяОперация) КАК ХозяйственнаяОперация,
| ДанныеДокументов.Ссылка.Валюта КАК Валюта,
| ДанныеДокументов.Ссылка.Организация КАК Организация,
| ДанныеДокументов.Ссылка.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеДокументов.Ссылка.Подразделение КАК Подразделение,
| ДанныеДокументов.Ссылка.Склад КАК Склад,
|
|
|
| ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Грузоотправитель,
| ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Грузополучатель,
| ЛОЖЬ КАК РасчетыЧерезОтдельногоКонтрагента,
| НЕОПРЕДЕЛЕНО КАК Номенклатура,
| НЕОПРЕДЕЛЕНО КАК Содержание,
| ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Комиссионер,
| НЕОПРЕДЕЛЕНО КАК Основание,
| ДАТАВРЕМЯ(1,1,1) КАК ОснованиеДата,
| НЕОПРЕДЕЛЕНО КАК ОснованиеНомер,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетОрганизации,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетКонтрагента,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетГрузоотправителя,
| НЕОПРЕДЕЛЕНО КАК БанковскийСчетГрузополучателя,
| НЕОПРЕДЕЛЕНО КАК ДоверенностьНомер,
| ДАТАВРЕМЯ(1,1,1) КАК ДоверенностьДата,
| НЕОПРЕДЕЛЕНО КАК ДоверенностьВыдана,
| НЕОПРЕДЕЛЕНО КАК ДоверенностьЛицо,
| НЕОПРЕДЕЛЕНО КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК Кладовщик,
| НЕОПРЕДЕЛЕНО КАК ДолжностьКладовщика,
| """" КАК АдресДоставки,
| """" КАК АдресДоставкиЗначенияПолей,
| """" КАК АдресДоставкиЗначение,
| """" КАК ДанныеТранспортнаяНакладная,
| """" КАК СопроводительныеДокументы,
|
|
| ДанныеДокументов.Ссылка.Дата КАК Период,
| """" КАК КодСпециальныхОбстоятельств
|
|
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ДанныеДокументов
|ГДЕ
| ДанныеДокументов.Ссылка В (&ДокументОснование_СчетФактураВыданный)
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокументов.Ссылка";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Прочее
Функция АналитикиУчетаПоПартнерамДляАктуализацииПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц)
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Расчеты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам
|ИЗ
| РегистрНакопления.РасчетыСКлиентами КАК Расчеты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов
| ПО Расчеты.Регистратор = ТаблицаДокументов.ДокументОснование
|ГДЕ
| Расчеты.Активность
| И Расчеты.АналитикаУчетаПоПартнерам.Организация = ТаблицаДокументов.Организация";
ТаблицаАналитик = Запрос.Выполнить().Выгрузить();
Возврат ТаблицаАналитик.ВыгрузитьКолонку("АналитикаУчетаПоПартнерам");
КонецФункции
Функция КонецРасчетаДляАктуализацииПлатежноРасчетныхДокументов(МенеджерВременныхТаблиц)
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(МАКСИМУМ(Расчеты.Период), ДАТАВРЕМЯ(1,1,1)) КАК Период
|ИЗ
| РегистрНакопления.РасчетыСКлиентами КАК Расчеты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов
| ПО Расчеты.Регистратор = ТаблицаДокументов.ДокументОснование
|ГДЕ
| Расчеты.Активность
| И Расчеты.АналитикаУчетаПоПартнерам.Организация = ТаблицаДокументов.Организация
|ИМЕЮЩИЕ
| МАКСИМУМ(Расчеты.Период) ЕСТЬ НЕ NULL";
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
ТаблицаПериод = Результат.Выгрузить();
КонецРасчета = КонецМесяца(ТаблицаПериод[0].Период) + 1;
Иначе
КонецРасчета = КонецМесяца(ТекущаяДатаСеанса())+1;
КонецЕсли;
Возврат КонецРасчета;
КонецФункции
Функция ТекстЗапросаПолученияНомеровИДатПлатежноРасчетныхДокументов()
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеПервичныхДокументов.Дата КАК ДатаВходящегоДокумента,
| ДанныеПервичныхДокументов.Номер КАК НомерВходящегоДокумента,
| ТаблицаДокументов.Ссылка КАК СчетФактура
|ИЗ
| РасчетыСКлиентами_ОснованияИДокументыОплаты КАК ПлатежныеДокументы
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов
| ПО
| ПлатежныеДокументы.ОснованиеОплаты = ТаблицаДокументов.ДокументОснование
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
| ПО
| ПлатежныеДокументы.Организация = ДанныеПервичныхДокументов.Организация
| И ПлатежныеДокументы.ДокументОплаты = ДанныеПервичныхДокументов.Документ
|
|ГДЕ
| ТИПЗНАЧЕНИЯ(ПлатежныеДокументы.ДокументОплаты) <> ТИП(Документ.ВзаимозачетЗадолженности)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеПервичныхДокументов.Дата КАК ДатаВходящегоДокумента,
| ДанныеПервичныхДокументов.Номер КАК НомерВходящегоДокумента,
| ТаблицаДокументов.Ссылка КАК СчетФактура
|ИЗ
| РасчетыСКлиентами_ОснованияИДокументыОплаты КАК ПлатежныеДокументы
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ТаблицаЗаполненияПлатежноРасчетныхДокументов КАК ТаблицаДокументов
| ПО
| ПлатежныеДокументы.ОснованиеОплаты = ТаблицаДокументов.ДокументОснование
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| РегистрСведений.ДанныеПервичныхДокументов КАК ДанныеПервичныхДокументов
| ПО
| ПлатежныеДокументы.Организация = ДанныеПервичныхДокументов.Организация
| И ПлатежныеДокументы.ДокументОплаты = ДанныеПервичныхДокументов.Документ
|
|ГДЕ
| ТИПЗНАЧЕНИЯ(ПлатежныеДокументы.ДокументОплаты) = ТИП(Документ.ВзаимозачетЗадолженности)
| И ПлатежныеДокументы.ДокументОплаты.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийВзаимозачетаЗадолженности.ОтражениеОплатыЧерезКомиссионера)
|
|ИТОГИ ПО
| СчетФактура
|;
|
|
|УНИЧТОЖИТЬ РасчетыСКлиентами_ОснованияИДокументыОплаты
|;
|
|
|УНИЧТОЖИТЬ ТаблицаЗаполненияПлатежноРасчетныхДокументов";
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗаполнитьТаблицуПлатежноРасчетныхДокументовПоВыборке(ПлатежноРасчетныеДокументы, ДанныеВыборки)
Выборка = ДанныеВыборки.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ПлатежноРасчетныеДокументы.Добавить();
НоваяСтрока.НомерПлатежноРасчетногоДокумента = Выборка.НомерВходящегоДокумента;
НоваяСтрока.ДатаПлатежноРасчетногоДокумента = Выборка.ДатаВходящегоДокумента;
КонецЦикла;
ПлатежноРасчетныеДокументы.Свернуть("ДатаПлатежноРасчетногоДокумента, НомерПлатежноРасчетногоДокумента", "");
ПлатежноРасчетныеДокументы.Сортировать("ДатаПлатежноРасчетногоДокумента Возр, НомерПлатежноРасчетногоДокумента Возр");
КонецПроцедуры
Функция ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтОснований";
ТекстЗапроса = "
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПустаяСсылка)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту)
| ИНАЧЕ ДанныеДокумента.ХозяйственнаяОперация
| КОНЕЦ КАК ХозяйственнаяОперация,
| МИНИМУМ(ДанныеДокумента.НомерСтроки <> 1) КАК ДополнительнаяЗапись
|ПОМЕСТИТЬ ВтОснований
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПустаяСсылка)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту)
| ИНАЧЕ ДанныеДокумента.ХозяйственнаяОперация
| КОНЕЦ,
| ДанныеДокумента.Ссылка
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтОснований", ТекстыЗапроса) Тогда
ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &Контрагент КАК Контрагент,
| &Подразделение КАК Подразделение,
| &Ответственный КАК Ответственный,
| &Автор КАК Автор,
| &Комментарий КАК Комментарий,
| &ВалютаСчетаФактуры КАК Валюта,
| 0 КАК Сумма,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| &ИнформацияПоИсправлению КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| &Склад КАК МестоХранения,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Партнер КАК Партнер,
| &Договор КАК Договор,
| &Период КАК ДатаОтраженияВУчете,
| ЛОЖЬ КАК СторноИсправление,
| НЕОПРЕДЕЛЕНО КАК СторнируемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ЕСТЬNULL(ДанныеОснований.ДополнительнаяЗапись, ЛОЖЬ) КАК ДополнительнаяЗапись,
| ЕСТЬNULL(ДанныеОснований.ХозяйственнаяОперация, ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту)) КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК Приоритет
|ИЗ
| Документ.СчетФактураВыданный КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВтОснований КАК ДанныеОснований
| ПО ДанныеДокумента.Ссылка = ДанныеОснований.Ссылка
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено) Экспорт
Если ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтСуммыДокументовВВалютахУчета", ТекстыЗапроса, Запрос.МенеджерВременныхТаблиц) Тогда
Возврат;
КонецЕсли;
Если Запрос.Параметры.НачислениеНДСПриОтгрузке Тогда
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтОбъектыРасчетов", ТекстыЗапроса, Запрос.МенеджерВременныхТаблиц) Тогда
ТекстЗапросаВтОбъектыРасчетов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапросаДанных =
"ВЫБРАТЬ
| ""Товары"" КАК ИсточникДанных,
| ЛОЖЬ КАК РаспределятьОбщуюСумму,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Ссылка.Дата КАК Дата,
| ТаблицаДокумента.Ссылка.Организация КАК Организация,
| ТаблицаДокумента.Ссылка.Валюта КАК ВалютаДокумента,
| ТаблицаДокумента.Ссылка.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| &ДатаОтгрузки КАК ПериодБазыНДС,
| &ДатаОтгрузки КАК ДатаКурса,
|
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.СуммаУвеличение - ТаблицаДокумента.СуммаУменьшение + ТаблицаДокумента.Сумма * ВЫБОР
| КОГДА &Корректировочный ТОГДА
| 0
| ИНАЧЕ
| 1
| КОНЕЦ - (ТаблицаДокумента.СуммаНДСУвеличение - ТаблицаДокумента.СуммаНДСУменьшение + ТаблицаДокумента.СуммаНДС * ВЫБОР
| КОГДА &Корректировочный ТОГДА
| 0
| ИНАЧЕ
| 1
| КОНЕЦ) КАК СуммаБезНДС,
| ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС,
| ТаблицаДокумента.СуммаНДСУвеличение - ТаблицаДокумента.СуммаНДСУменьшение + ТаблицаДокумента.СуммаНДС * ВЫБОР
| КОГДА &Корректировочный ТОГДА
| 0
| ИНАЧЕ
| 1
| КОНЕЦ КАК СуммаНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
| ТаблицаДокумента.СуммаНДСУвеличение - ТаблицаДокумента.СуммаНДСУменьшение + ТаблицаДокумента.СуммаНДС * ВЫБОР
| КОГДА &Корректировочный ТОГДА
| 0
| ИНАЧЕ
| 1
| КОНЕЦ КАК СуммаНДСРегл,
| &КоэффициентПересчетаВВалютуУпрРегл * (ТаблицаДокумента.СуммаНДСУвеличение - ТаблицаДокумента.СуммаНДСУменьшение + ТаблицаДокумента.СуммаНДС * ВЫБОР
| КОГДА &Корректировочный ТОГДА
| 0
| ИНАЧЕ
| 1
| КОНЕЦ) КАК СуммаНДСУпр,
|
| ЛОЖЬ КАК ОтражаетсяВРасчетах,
| ЕСТЬNULL(ОбъектыРасчетов.ОбъектРасчетов, НЕОПРЕДЕЛЕНО) КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
|ИЗ
| Документ.СчетФактураВыданный.Товары КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВтОбъектыРасчетов КАК ОбъектыРасчетов
| ПО ИСТИНА
|
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
| И НЕ &ВводОстатков
|";
НеПересчитыватьСуммыНДС = Запрос.Параметры.НачислениеНДСПриОтгрузке
И НЕ (Запрос.Параметры.ВалютаСчетаФактуры <> Запрос.Параметры.ВалютаРегламентированногоУчета
И Запрос.Параметры.ОплатаВВалюте);
РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(
Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанных, НеПересчитыватьСуммыНДС);
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| ""Товары"" КАК ИсточникДанных,
| ЛОЖЬ КАК РаспределятьОбщуюСумму,
| &Ссылка КАК Ссылка,
| &Период КАК Дата,
| &Организация КАК Организация,
| НЕОПРЕДЕЛЕНО КАК ВалютаДокумента,
| НЕОПРЕДЕЛЕНО КАК ВалютаВзаиморасчетов,
| ДАТАВРЕМЯ(1,1,1) КАК ПериодБазыНДС,
|
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
| НЕОПРЕДЕЛЕНО КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
| 0 КАК СуммаСНДС,
| 0 КАК СуммаНДС,
| 0 КАК СуммаБезНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| ЛОЖЬ КАК ОтражаетсяВРасчетах,
| НЕОПРЕДЕЛЕНО КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов,
| ИСТИНА КАК НеПересчитыватьСуммыНДС,
| 0 КАК СуммаСНДСУпр,
| 0 КАК СуммаБезНДСУпр,
| 0 КАК СуммаНДСУпр,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаНДСРегл,
| 0 КАК СуммаСНДСРегл,
| 0 КАК БазаНДСРегл,
| 0 КАК СуммаПриведенная,
| 0 КАК СуммаПриведеннаяРегл,
| 0 КАК СуммаПриведеннаяУпр,
| ЛОЖЬ КАК ИзРегистра
|ПОМЕСТИТЬ ВтСуммыДокументовВВалютахУчета";
Запрос.Выполнить();
КонецЕсли;
КонецПроцедуры
Функция ТекстЗапросаТаблицаОснований()
Возврат
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаОснований.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА НЕ ТаблицаОснований.Ссылка.Корректировочный
| И НЕ ТаблицаОснований.Ссылка.Исправление
| И НЕ ТаблицаОснований.Ссылка.Перевыставленный
| И НЕ ТаблицаОснований.Ссылка.НДССМежценовойРазницы
| И НЕ ТаблицаОснований.Ссылка.НачислениеНДСПриОтгрузке
| ТОГДА ТаблицаОснований.ДокументОснование
| ИНАЧЕ ТаблицаОснований.Ссылка
| КОНЕЦ КАК ДокументОснование,
| ВЫБОР
| КОГДА НЕ ТаблицаОснований.Ссылка.Корректировочный
| И НЕ ТаблицаОснований.Ссылка.Исправление
| И НЕ ТаблицаОснований.Ссылка.Перевыставленный
| ТОГДА ТаблицаОснований.ДокументОснование
| ИНАЧЕ ТаблицаОснований.Ссылка
| КОНЕЦ КАК ДокументОснованиеДляПечати,
| ТаблицаОснований.Ссылка.Корректировочный КАК Корректировочный,
| ТаблицаОснований.Ссылка.Дата КАК Дата,
| ТаблицаОснований.Ссылка.РеализацияЧерезКомиссионера КАК РеализацияЧерезКомиссионера
|ПОМЕСТИТЬ СчетаФактурыОснования
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
|ГДЕ
| ТаблицаОснований.Ссылка В(&МассивОбъектов)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетаФактурыОснования.ДокументОснование КАК ДокументОснование
|ИЗ
| СчетаФактурыОснования КАК СчетаФактурыОснования
|ГДЕ
| НЕ СчетаФактурыОснования.ДокументОснование ССЫЛКА Документ.ПервичныйДокумент
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаОснований.Ссылка КАК Ссылка,
| ТаблицаОснований.ДокументОснование КАК ДокументОснование,
| ТаблицаОснований.Ссылка.Корректировочный КАК Корректировочный,
| ТаблицаОснований.Ссылка.Дата КАК Дата,
| ТаблицаОснований.Ссылка.Перевыставленный КАК Перевыставленный
|ПОМЕСТИТЬ СчетаФактурыОснования_Шапка
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
|ГДЕ
| ТаблицаОснований.Ссылка В(&МассивОбъектов)
| И (НЕ ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ВозвратТоваровОтКлиента
| И НЕ ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ВозвратТоваровМеждуОрганизациями
| ИЛИ НЕ ТаблицаОснований.Ссылка.Корректировочный)
| И (НЕ ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОЗакупках
| ИЛИ НЕ ТаблицаОснований.Ссылка.Перевыставленный)
| И НЕ ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ПервичныйДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаОснований.Ссылка,
| ЕСТЬNULL(СчетФактураВыданныйДокументыОснования.ДокументОснование, ТаблицаОснований.Ссылка),
| ТаблицаОснований.Ссылка.Корректировочный,
| ТаблицаОснований.Ссылка.Дата,
| ТаблицаОснований.Ссылка.Перевыставленный КАК Перевыставленный
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК ТаблицаТовары
| ПО ТаблицаОснований.Ссылка = ТаблицаТовары.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
| ПО (ТаблицаТовары.ИсходныйСчетФактура = СчетФактураВыданныйДокументыОснования.Ссылка)
| И (НЕ СчетФактураВыданныйДокументыОснования.ДокументОснование ССЫЛКА Документ.ПервичныйДокумент)
|ГДЕ
| ТаблицаОснований.Ссылка В(&МассивОбъектов)
| И (ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ВозвратТоваровОтКлиента
| ИЛИ ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ВозвратТоваровМеждуОрганизациями)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаОснований.Ссылка,
| ТаблицаОснований.ДокументОснование КАК ДокументОснование,
| ТаблицаОснований.Ссылка.Корректировочный,
| ТаблицаОснований.Ссылка.Дата,
| ТаблицаОснований.Ссылка.Перевыставленный КАК Перевыставленный
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК ТаблицаОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Товары КАК ТаблицаТоварыСчетаФактуры
| ПО ТаблицаОснований.Ссылка = ТаблицаТоварыСчетаФактуры.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетКомитентуОЗакупках.Товары КАК ТаблицаТоваровОтчета
| ПО (ТаблицаТоваровОтчета.Ссылка = ТаблицаОснований.ДокументОснование
| И ТаблицаТоваровОтчета.СчетФактураПолученный = ТаблицаТоварыСчетаФактуры.СчетФактураПолученныйОтПродавца)
|ГДЕ
| ТаблицаОснований.Ссылка В(&МассивОбъектов)
| И (ТаблицаОснований.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОЗакупках
| И ТаблицаОснований.Ссылка.Перевыставленный)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СчетаФактурыОснования_Шапка.ДокументОснование КАК ДокументОснование
|ИЗ
| СчетаФактурыОснования_Шапка КАК СчетаФактурыОснования_Шапка";
КонецФункции
Функция ПолучитьПредставлениеНомера(СчетФактураОбъект) Экспорт
ТаблицаСчетовФактур = Новый ТаблицаЗначений;
ТаблицаСчетовФактур.Колонки.Добавить("СчетФактура", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный"));
ТаблицаСчетовФактур.Колонки.Добавить("Номер", Новый ОписаниеТипов("Строка"));
ТаблицаСчетовФактур.Колонки.Добавить("ДокументОснование", Документы.ТипВсеСсылки());
ТаблицаСчетовФактур.Колонки.Добавить("Исправление", Новый ОписаниеТипов("Булево"));
ТаблицаСчетовФактур.Колонки.Добавить("СчетФактураОснование", Новый ОписаниеТипов("ДокументСсылка.СчетФактураВыданный"));
ТаблицаСчетовФактур.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
НоваяСтрока = ТаблицаСчетовФактур.Добавить();
НоваяСтрока.СчетФактура = СчетФактураОбъект.Ссылка;
НоваяСтрока.Номер = СчетФактураОбъект.Номер;
НоваяСтрока.ДокументОснование = ?(СчетФактураОбъект.ДокументыОснования.Количество() = 0, Неопределено,
СчетФактураОбъект.ДокументыОснования[0].ДокументОснование);
НоваяСтрока.Исправление = СчетФактураОбъект.Исправление;
НоваяСтрока.СчетФактураОснование = СчетФактураОбъект.СчетФактураОснование;
НоваяСтрока.Организация = СчетФактураОбъект.Организация;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(Т.СчетФактура КАК Документ.СчетФактураВыданный) КАК СчетФактура,
| Т.Номер,
| Т.ДокументОснование,
| Т.Исправление,
| Т.СчетФактураОснование,
| Т.Организация
|ПОМЕСТИТЬ вт_ТаблицаСчетовФактур
|ИЗ
| &ТаблицаСчетовФактур КАК Т";
Запрос.УстановитьПараметр("ТаблицаСчетовФактур", ТаблицаСчетовФактур);
Запрос.Выполнить();
Результат = РассчитатьПредставлениеНомеров(Запрос.МенеджерВременныхТаблиц);
Возврат Результат.Получить(СчетФактураОбъект.Ссылка);
КонецФункции
Функция РассчитатьПредставлениеНомеров(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| вт_ТаблицаСчетовФактур.ДокументОснование КАК ДокументОснование
|ИЗ
| вт_ТаблицаСчетовФактур КАК вт_ТаблицаСчетовФактур
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних КАК Регистрации
| ПО вт_ТаблицаСчетовФактур.Организация = Регистрации.Организация
| И (НЕ Регистрации.РегистрацияВНалоговомОргане.ЦифровойИндексОбособленногоПодразделения = 0)
|ГДЕ
| НЕ Регистрации.РегистрацияВНалоговомОргане ЕСТЬ NULL
| И НЕ вт_ТаблицаСчетовФактур.ДокументОснование = НЕОПРЕДЕЛЕНО
| И НЕ вт_ТаблицаСчетовФактур.ДокументОснование ССЫЛКА Документ.ПервичныйДокумент";
УстановитьПривилегированныйРежим(Истина);
МассивОснований = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ДокументОснование");
УстановитьПривилегированныйРежим(Ложь);
Если МассивОснований.Количество() = 0 Тогда
ТаблицаДанныхДокументов = Новый ТаблицаЗначений;
ТаблицаДанныхДокументов.Колонки.Добавить("Ссылка", Документы.ТипВсеСсылки());
ТаблицаДанныхДокументов.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ТаблицаДанныхДокументов.Колонки.Добавить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
Запрос.Текст = "ВЫБРАТЬ Т.* ПОМЕСТИТЬ ТаблицаДанныхДокументов ИЗ &ТаблицаДанныхДокументов КАК Т";
Запрос.УстановитьПараметр("ТаблицаДанныхДокументов", ТаблицаДанныхДокументов);
Запрос.Выполнить();
Иначе
ПоместитьВременнуюТаблицуДанныхОснований(МенеджерВременныхТаблиц, МассивОснований);
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ
| СчетФактураВыданный.СчетФактура КАК СчетФактура,
| ВЫБОР
| КОГДА СчетФактураВыданный.Исправление
| ТОГДА СчетФактураВыданный.СчетФактураОснование.Номер
| ИНАЧЕ СчетФактураВыданный.Номер
| КОНЕЦ КАК Номер,
| ВЫБОР
| КОГДА НЕ ДанныеСкладов.РегистрацияВНалоговомОргане ЕСТЬ NULL
| ТОГДА ДанныеСкладов.РегистрацияВНалоговомОргане.ЦифровойИндексОбособленногоПодразделения
| КОГДА НЕ ДанныеПодразделений.РегистрацияВНалоговомОргане ЕСТЬ NULL
| ТОГДА ДанныеПодразделений.РегистрацияВНалоговомОргане.ЦифровойИндексОбособленногоПодразделения
| КОГДА ЕСТЬNULL(Организации.ОбособленноеПодразделение, ЛОЖЬ)
| ТОГДА Организации.ЦифровойИндексОбособленногоПодразделения
| ИНАЧЕ 0
| КОНЕЦ КАК ЦифровойИндекс
|ИЗ
| вт_ТаблицаСчетовФактур КАК СчетФактураВыданный
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаДанныхДокументов КАК ДанныеОснований
| ПО СчетФактураВыданный.ДокументОснование = ДанныеОснований.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО СчетФактураВыданный.Организация = Организации.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних КАК ДанныеСкладов
| ПО СчетФактураВыданный.Организация = ДанныеСкладов.Организация
| И (ДанныеСкладов.Подразделение = ДанныеОснований.Склад.Подразделение)
| И (НЕ ДанныеСкладов.Подразделение = ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка))
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних КАК ДанныеПодразделений
| ПО СчетФактураВыданный.Организация = ДанныеПодразделений.Организация
| И (ДанныеПодразделений.Подразделение = ДанныеОснований.Подразделение)
| И (НЕ ДанныеПодразделений.Подразделение = ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка))";
Результат = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Номер = УчетНДСПереопределяемый.НомерСчетаФактурыНаПечать(
Выборка.Номер,
Истина,
ЗначениеЗаполнено(Выборка.ЦифровойИндекс),
Выборка.ЦифровойИндекс);
Результат.Вставить(Выборка.СчетФактура, Номер);
КонецЦикла;
Возврат Результат;
КонецФункции
Процедура ПеревыставитьСчетаФактурыПолученные(ПараметрыСчетовФактурДляПеревыставления, АдресРезультата) Экспорт
Замер = ОценкаПроизводительности.НачатьЗамерДлительнойОперации(
"Документ.СчетФактураВыданный.МодульМенеджера.ПеревыставитьСчетаФактурыПолученныеДлительная");
КоличествоОбработанныхДанных = 0;
Для Каждого ПараметрыДляЗаполнения Из ПараметрыСчетовФактурДляПеревыставления Цикл
ПеревыставленныйСчетФактураСсылка = ПараметрыДляЗаполнения.СчетФактураВыданный;
Если ЗначениеЗаполнено(ПеревыставленныйСчетФактураСсылка) Тогда
СчетФактураОбъект = ПеревыставленныйСчетФактураСсылка.ПолучитьОбъект();
СчетФактураОбъект.ДокументыОснования.Очистить();
СчетФактураОбъект.Товары.Очистить();
Иначе
СчетФактураОбъект = Документы.СчетФактураВыданный.СоздатьДокумент();
КонецЕсли;
СтруктураДанных = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(ПараметрыДляЗаполнения);
Если ПараметрыДляЗаполнения.СводныйКомиссионный Тогда
СтруктураДанных.Вставить("КодВидаОперации", "27");
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтруктураДанных, ПараметрыДляЗаполнения);
Попытка
СчетФактураОбъект.Заполнить(СтруктураДанных);
СчетаФактурыПолученные = Новый Массив;
Для Каждого СтрокаПоставщика из ПараметрыДляЗаполнения.Поставщики Цикл
Если СчетаФактурыПолученные.Найти(СтрокаПоставщика.СчетФактураПолученный) = Неопределено Тогда
СчетаФактурыПолученные.Добавить(СтрокаПоставщика.СчетФактураПолученный);
КонецЕсли;
КонецЦикла;
Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументыПоОтчетуКомитенту(СчетФактураОбъект.ДокументОснование, СчетаФактурыПолученные, СчетФактураОбъект.ПлатежноРасчетныеДокументы);
СчетФактураОбъект.СтрокаПлатежноРасчетныеДокументы =
Документы.СчетФактураВыданный.СтрокаРасчетноПлатежныхДокументов(СчетФактураОбъект.ПлатежноРасчетныеДокументы);
СчетФактураОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
СписокСообщений = ПолучитьСообщенияПользователю(Истина);
Если СписокСообщений.Количество() > 0 Тогда
ПоместитьВоВременноеХранилище(СписокСообщений, АдресРезультата);
КонецЕсли;
ТекстОшибки = НСтр("ru='Не удалось записать %Документ%. %ОписаниеОшибки%'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", СчетФактураОбъект);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%ОписаниеОшибки%", ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки, , ,);
ВызватьИсключение ТекстОшибки;
КонецПопытки;
КоличествоОбработанныхДанных = КоличествоОбработанныхДанных + 1;
КонецЦикла;
ОценкаПроизводительности.ЗакончитьЗамерДлительнойОперации(Замер, КоличествоОбработанныхДанных / 100);
КонецПроцедуры
Функция ПолучитьПокупателейПоОснованию(ДокументыОснования, ДатаСведений) Экспорт
Результат = Новый ТаблицаЗначений;
Если ДокументыОснования.Количество() > 0 Тогда
Результат = ПолучитьПокупателей(ОбщегоНазначения.ЗначениеРеквизитаОбъектов(ДокументыОснования, "КлиентКонтрагент"), ДатаСведений, Истина);
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ПолучитьПокупателей(СписокПокупателей, ДатаСведений, ПолучатьИННКПП = Ложь) Экспорт
Возврат ЗаполнитьСлужебныеРеквизитыПокупателей(СписокПокупателей, ДатаСведений, ПолучатьИННКПП);
КонецФункции
Функция ЗаполнитьСлужебныеРеквизитыПокупателей(СписокПокупателей, ДатаСведений, ЗаполнятьИННКПП = Ложь)
Покупатели = Новый ТаблицаЗначений;
Покупатели.Колонки.Добавить("ДокументОснование");
Покупатели.Колонки.Добавить("Покупатель");
Покупатели.Колонки.Добавить("НомерСчетаФактуры");
Покупатели.Колонки.Добавить("КПППокупателя");
Покупатели.Колонки.Добавить("ИННПокупателя");
Для Каждого Элемент Из СписокПокупателей Цикл
НоваяСтрока = Покупатели.Добавить();
Если ТипЗнч(Элемент.Значение) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(НоваяСтрока, Элемент.Значение);
Иначе
НоваяСтрока.ДокументОснование = Элемент.Ключ;
НоваяСтрока.Покупатель = Элемент.Значение;
КонецЕсли;
КонецЦикла;
Если ЗаполнятьИННКПП Тогда
Контрагенты = Новый Массив;
Для каждого Строка Из Покупатели Цикл
Если ЗначениеЗаполнено(Строка.Покупатель) Тогда
Контрагенты.Добавить(Строка.Покупатель);
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| МАКСИМУМ(ИсторияКППКонтрагентов.Период) КАК Период,
| ИсторияКППКонтрагентов.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ЗначенияКПП
|ИЗ
| Справочник.Контрагенты.ИсторияКПП КАК ИсторияКППКонтрагентов
|ГДЕ
| ИсторияКППКонтрагентов.Ссылка В (&Контрагенты)
| И ИсторияКППКонтрагентов.Период <= &ДатаСведений
|
|СГРУППИРОВАТЬ ПО
| ИсторияКППКонтрагентов.Ссылка
|;
|
|
|
|ВЫБРАТЬ
| ИсторияКППКонтрагентов.КПП КАК КПП,
| ИсторияКППКонтрагентов.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ИсторическоеЗначениеКПП
|ИЗ
| ЗначенияКПП КАК ЗначенияКПП
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты.ИсторияКПП КАК ИсторияКППКонтрагентов
| ПО ЗначенияКПП.Ссылка = ИсторияКППКонтрагентов.Ссылка
| И ЗначенияКПП.Период = ИсторияКППКонтрагентов.Период
|;
|
|
|
|ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка,
| ЕСТЬNULL(ИсторическоеЗначениеКПП.КПП, Контрагенты.КПП) КАК КПППокупателя,
| Контрагенты.ИНН КАК ИННПокупателя,
| ВЫБОР
| КОГДА Контрагенты.ОбособленноеПодразделение
| И Контрагенты.ГоловнойКонтрагент = &ПустойКонтрагент
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НеЗаполненГоловнойКонтрагент,
| ВЫБОР
| КОГДА Контрагенты.ЮрФизЛицо = &ЮрЛицо
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЮрЛицо
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ ИсторическоеЗначениеКПП КАК ИсторическоеЗначениеКПП
| ПО ИсторическоеЗначениеКПП.Ссылка = Контрагенты.Ссылка
|ГДЕ
| Контрагенты.Ссылка В (&Контрагенты)
|";
Запрос.УстановитьПараметр("Контрагенты", Контрагенты);
Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка());
Запрос.УстановитьПараметр("ЮрЛицо", Перечисления.ЮрФизЛицо.ЮрЛицо);
Запрос.УстановитьПараметр("ДатаСведений", ДатаСведений);
Выборка = Запрос.Выполнить().Выбрать();
Отбор = Новый Структура("Покупатель");
Пока Выборка.Следующий() Цикл
Отбор.Покупатель = Выборка.Ссылка;
Строки = Покупатели.НайтиСтроки(Отбор);
Для каждого Строка Из Строки Цикл
ЗаполнитьЗначенияСвойств(Строка, Выборка);
КонецЦикла;
КонецЦикла;
КонецЕсли;
Возврат Покупатели;
КонецФункции
Процедура УстановитьСтавкуНДСДляМежценовойРазницы(СтрокаТовары, Организация, Дата)
СтавкаНДСНоменклатуры = УчетНДСУП.СтавкаНДСНоменклатуры(СтрокаТовары.Номенклатура, Организация, Дата);
РасчетнаяСтавкаНДСНоменклатуры = УчетНДСРФКлиентСерверПовтИсп.СоответствующаяРасчетнаяСтавкаНДС(СтавкаНДСНоменклатуры);
СтавкаНДСПеречислением = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РасчетнаяСтавкаНДСНоменклатуры, "ПеречислениеСтавкаНДС");
СтрокаТовары.СтавкаНДС = УчетНДСЛокализация.СтавкаНДСПоПеречислению(СтавкаНДСПеречислением, Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДССМежценовойРазницы, Ложь);
КонецПроцедуры
Функция ОпределитьДатуОтгрузки(ПараметрыСчетаФактуры, ДатаДляПолученияКурса = Ложь) Экспорт
Если ТипЗнч(ПараметрыСчетаФактуры.ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаТоваровКлиенту") Тогда
РеквизитыДокументаОснования = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ПараметрыСчетаФактуры.ДокументОснование, "Дата, ОтгрузкаПоЗаказам, ЗаказКлиента, Исправление, ИсправляемыйДокумент");
Иначе
РеквизитыДокументаОснования = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ПараметрыСчетаФактуры.ДокументОснование, "Дата");
КонецЕсли;
Если ПараметрыСчетаФактуры.Исправление
И ПараметрыСчетаФактуры.Корректировочный Тогда
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПараметрыСчетаФактуры.СчетФактураОснование, "Дата");
ИначеЕсли ПараметрыСчетаФактуры.Исправление
И ТипЗнч(ПараметрыСчетаФактуры.ДокументОснование) = Тип("ДокументСсылка.ОтгрузкаТоваровКлиенту")
И РеквизитыДокументаОснования.Исправление Тогда
Возврат НачалоДня(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РеквизитыДокументаОснования.ИсправляемыйДокумент, "Дата")) - ?(ДатаДляПолученияКурса, 0, 1);
ИначеЕсли ПараметрыСчетаФактуры.Корректировочный Тогда
Возврат ПараметрыСчетаФактуры.Период;
Иначе
Возврат НачалоДня(РеквизитыДокументаОснования.Дата) - ?(ДатаДляПолученияКурса, 0, 1);
КонецЕсли;
КонецФункции
#КонецОбласти
#Область ФормированиеГиперссылкиВЖурналеПродаж
Функция СформироватьГиперссылкуКОформлению(Параметры) Экспорт
Параметры.Вставить("МассивОрганизаций",?(ЗначениеЗаполнено(Параметры.Организация),
ОбщегоНазначенияУТКлиентСервер.Массив(Параметры.Организация),
Неопределено));
Параметры.Вставить("БезОграниченияПериода");
ПоказыватьСчетаФактуры = ПравоДоступа("Чтение", Метаданные.РегистрыСведений.ТребуетсяОформлениеСчетаФактуры)
И ПравоДоступа("Изменение", Метаданные.Документы.СчетФактураВыданный);
Гиперссылка = Неопределено;
Если Не ПоказыватьСчетаФактуры Тогда
Возврат Гиперссылка
КонецЕсли;
Если Параметры.Свойство("КраткоеПредставление") Тогда
ТекстГиперссылки = НСтр("ru = 'СФ выданные'");
Иначе
ТекстГиперссылки = НСтр("ru = 'Счета-фактуры выданные'");
КонецЕсли;
Если Параметры.Свойство("ПеревыставлениеКомитентам") И Параметры.ПеревыставлениеКомитентам
И ПолучитьФункциональнуюОпцию("ИспользоватьОказаниеАгентскихУслугПриЗакупке") Тогда
ГиперссылкаПеревыставление = Неопределено;
Если Параметры.Свойство("КраткоеПредставление") Тогда
ТекстГиперссылкиПеревыставление = НСтр("ru = 'Перевыставление комитентам'");
Иначе
ТекстГиперссылкиПеревыставление = НСтр("ru = 'Перевыставление комитентам'");
КонецЕсли;
Параметры.Вставить("ТолькоПеревыставление", Истина);
Если ЕстьСчетаФактурыКОформлению(Параметры) Тогда
ГиперссылкаПеревыставление = Новый ФорматированнаяСтрока(ТекстГиперссылкиПеревыставление,,,,
ИмяФормыПеревыставления());
Иначе
ГиперссылкаПеревыставление = Новый ФорматированнаяСтрока(ТекстГиперссылкиПеревыставление,,ЦветаСтиля.НезаполненноеПолеТаблицы,,
ИмяФормыПеревыставления());
КонецЕсли;
Параметры.Вставить("ТолькоПеревыставление", Ложь);
Параметры.Вставить("ТолькоОформление", Истина);
Если ЕстьСчетаФактурыКОформлению(Параметры) Тогда
Гиперссылка = Новый ФорматированнаяСтрока(ТекстГиперссылки,,,,
ИмяФормыСпискаСчетФактураВыданный());
Иначе
Гиперссылка = Новый ФорматированнаяСтрока(ТекстГиперссылки,,ЦветаСтиля.НезаполненноеПолеТаблицы,,
ИмяФормыСпискаСчетФактураВыданный());
КонецЕсли;
Гиперссылка = Новый ФорматированнаяСтрока(Гиперссылка, "; ", ГиперссылкаПеревыставление);
Иначе
Если ЕстьСчетаФактурыКОформлению(Параметры) Тогда
Гиперссылка = Новый ФорматированнаяСтрока(ТекстГиперссылки,,,,
ИмяФормыСпискаСчетФактураВыданный());
Иначе
Гиперссылка = Новый ФорматированнаяСтрока(ТекстГиперссылки,,ЦветаСтиля.НезаполненноеПолеТаблицы,,
ИмяФормыСпискаСчетФактураВыданный());
КонецЕсли;
КонецЕсли;
МассивГиперссылок = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Гиперссылка);
Если ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5") Тогда
ТекстГиперссылки = НСтр("ru = 'ИСФ/КСФ по отгрузкам'", ОбщегоНазначения.КодОсновногоЯзыка());
Если ЕстьСчетаФактурыПоОтгрузкамКОформлению(Параметры) Тогда
Гиперссылка = Новый ФорматированнаяСтрока(ТекстГиперссылки,,,,
ИмяФормыОтгрузкаТоваров());
Иначе
Гиперссылка = Новый ФорматированнаяСтрока(ТекстГиперссылки,,ЦветаСтиля.НезаполненноеПолеТаблицы,,
ИмяФормыОтгрузкаТоваров());
КонецЕсли;
МассивГиперссылок.Добавить(Гиперссылка);
КонецЕсли;
Возврат МассивГиперссылок;
КонецФункции
Функция ИмяФормыСпискаСчетФактураВыданный() Экспорт
Возврат "Документ.СчетФактураВыданный.Форма.ФормаСпискаДокументов";
КонецФункции
Функция ИмяФормыПеревыставления() Экспорт
Возврат "Документ.СчетФактураВыданный.Форма.ФормаРабочееМестоДляОформленияСчетовФактурКомитенту";
КонецФункции
Функция ИмяФормыОтгрузкаТоваров() Экспорт
Возврат "Документ.СчетФактураВыданный.Форма.ФормаРабочееМестоДляОформленияИсправленныхСчетовФактурПоОтгрузкам";
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли