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