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