Запись книги покупок / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

#Область Проведение

// Описывает учетные механизмы используемые в документе для регистрации в механизме проведения.
//
// Параметры:
//  МеханизмыДокумента - Массив из Строка - список имен учетных механизмов, для которых будет выполнена
//              регистрация в механизме проведения.
//
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
	

	//++ НЕ УТ
	МеханизмыДокумента.Добавить("РегламентированныйУчет");
	МеханизмыДокумента.Добавить("ПрослеживаемостьИмпортныхТоваров");
	//-- НЕ УТ
	МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
	МеханизмыДокумента.Добавить("УчетНДС");
	МеханизмыДокумента.Добавить("РеестрДокументов");
	
КонецПроцедуры

// Возвращает таблицы для движений, необходимые для проведения документа по регистрам учетных механизмов.
//
// Параметры:
//  Документ - ДокументСсылка, ДокументОбъект - ссылка на документ или объект, по которому необходимо получить данные
//  Регистры - Структура - список имен регистров, для которых необходимо получить таблицы
//  ДопПараметры - Структура - дополнительные параметры для получения данных, определяющие контекст проведения.
//
// Возвращаемое значение:
//  Структура - коллекция элементов:
//     * Таблица<ИмяРегистра> - ТаблицаЗначений - таблица данных для отражения в регистр.
//
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
	
	Если ДопПараметры = Неопределено Тогда
		ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
	КонецЕсли;
	
	Если ТипЗнч(Документ) = Тип("ДокументОбъект.ЗаписьКнигиПокупок") Тогда
		ДокументСсылка = Документ.Ссылка;
	Иначе
		ДокументСсылка = Документ;
	КонецЕсли;
	
	Запрос			= Новый Запрос;
	ТекстыЗапроса	= Новый СписокЗначений;
	
	Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
		////////////////////////////////////////////////////////////////////////////
		// Создадим запрос инициализации движений
		
		ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
		
		////////////////////////////////////////////////////////////////////////////
		// Сформируем текст запроса
		СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры);
		
		ТекстЗапросаТаблицаНДСЗаписиКнигиПокупок(Запрос, ТекстыЗапроса, Регистры);
		ТекстЗапросаТаблицаЖурналУчетаСчетовФактур(Запрос, ТекстыЗапроса, Регистры);
		ТекстЗапросаТаблицаДвиженияПоНДС(Запрос, ТекстыЗапроса, Регистры);
		//++ НЕ УТ
		ТекстЗапросаТаблицаОтражениеДокументовВРеглУчете(Запрос, ТекстыЗапроса, Регистры); 
		ТекстЗапросаТаблицаОперацииСПрослеживаемымиТоварами(Запрос, ТекстыЗапроса, Регистры);
		//-- НЕ УТ
		ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
		
	КонецЕсли;
	
	////////////////////////////////////////////////////////////////////////////
	// Получим таблицы для движений
	
	Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
	
КонецФункции

#КонецОбласти

// Определяет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//  Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
КонецПроцедуры

// Добавляет команду создания документа "Запись книги покупок".
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
// Возвращаемое значение:
//  СтрокаТаблицыЗначений
//
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
	Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаписьКнигиПокупок) Тогда
		КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
		КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаписьКнигиПокупок.ПолноеИмя();
		КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаписьКнигиПокупок);
		КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
		КомандаСоздатьНаОсновании.ФункциональныеОпции = "ФормироватьОтчетностьПоНДС";
	
		Возврат КомандаСоздатьНаОсновании;
	КонецЕсли;

	Возврат Неопределено;
КонецФункции

// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
//   Параметры - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
КонецПроцедуры

// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

КонецПроцедуры

// Возвращает представление счета-фактуры с учетом состояния проведения.
//
// Параметры:
// 	Номер - Строка - Номер счета-фактуры.
// 	Дата - Дата - Дата счета-фактуры.
// 	Проведен - Булево - Признак проведения документа.
//
// Возвращаемое значение:
//  Массив из Строка
//
Функция ПредставлениеЗаписиКнигиПокупок(Номер, Дата, Проведен) Экспорт
	
	МассивПодстрок = Новый Массив;
	МассивПодстрок.Добавить(СтрШаблон(НСтр("ru='Запись книги покупок № %1 от %2 г.'"), СокрЛП(Номер), Формат(Дата, "ДЛФ=D")));
	Если Не Проведен Тогда
		МассивПодстрок.Добавить(НСтр("ru='(не проведен)'"));
	КонецЕсли;
	
	Возврат СтрСоединить(МассивПодстрок, " ");
	
КонецФункции

// Функция находит записи книги покупок, созданные на основании документа.
//
// Параметры:
//	ДокументОснование - ДокументСсылка - Документ, для которого необходимо найти запись книги покупок;
//	Организация - СправочникСсылка.Организации - Организация, для которой формируется запись книги покупок;
//	Проведен - Булево - Поиск только проведенных документов.
//
// Возвращаемое значение:
//	ТаблицаЗначений - ТаблицаДокументов - Таблица найденных документов.
//
Функция ЗаписиКнигиПокупокПоОснованию(ДокументОснование, Организация = Неопределено, Проведен = Истина) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ЗаписьКнигиПокупок.Ссылка КАК Ссылка,
	|	ЗаписьКнигиПокупок.Дата КАК Дата,
	|	ЗаписьКнигиПокупок.Номер КАК Номер,
	|	ЗаписьКнигиПокупок.Проведен КАК Проведен
	|
	|ИЗ
	|	Документ.ЗаписьКнигиПокупок КАК ЗаписьКнигиПокупок
	|ГДЕ
	|	ЗаписьКнигиПокупок.Ссылка.ПометкаУдаления = ЛОЖЬ
	|	И ЗаписьКнигиПокупок.ДокументОснование = &ДокументОснование
	|	И (ЗаписьКнигиПокупок.Организация = &Организация
	|		ИЛИ &Организация = НЕОПРЕДЕЛЕНО)
	|";
	Запрос.УстановитьПараметр("ДокументОснование",   ДокументОснование);
	Запрос.УстановитьПараметр("Организация", Организация);
	
	Если Проведен Тогда
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПометкаУдаления = ЛОЖЬ", "Проведен");
	КонецЕсли;
	
	ТаблицаДокументов = Запрос.Выполнить().Выгрузить();
	
	Возврат ТаблицаДокументов;
	
КонецФункции

//++ НЕ УТ

// Возвращает порядок отражения в регл. учете по виду ценности НДС
//
// Параметры:
// 	ВидЦенности - ПеречислениеСсылка.ВидыЦенностей - Вид ценности НДС
// 	Контрагент - СправочникСсылка.Контрагенты, СправочникСсылка.Организации -  Значение заполнения субконто "Контрагенты"
// 	ДокументРасчетов - ДокументСсылка -  Значение для заполнения субконто "СФПолученный".
//
// Возвращаемое значение:
// 	 Структура:
//   * СчетУчета - ПланСчетовСсылка.Хозрасчетный
//   * Субконто1 - СправочникСсылка.Контрагенты,СправочникСсылка.Организации
//   * Субконто2 - ДокументСсылка
//   * Субконто3 - Неопределено
//
Функция ОтражениеВРеглУчете(ВидЦенности, Контрагент, ДокументРасчетов) Экспорт
	
	СчетУчета = ПланыСчетов.Хозрасчетный.ПустаяСсылка();
	Если ВидЦенности = Перечисления.ВидыЦенностей.ОбъектыНезавершенногоСтроительства Тогда
		СчетУчета = ПланыСчетов.Хозрасчетный.НДСприСтроительствеОсновныхСредств;
	ИначеЕсли ВидЦенности = Перечисления.ВидыЦенностей.ОС Тогда
		СчетУчета = ПланыСчетов.Хозрасчетный.НДСприПриобретенииОсновныхСредств;
	ИначеЕсли ВидЦенности = Перечисления.ВидыЦенностей.НМА Тогда
		СчетУчета = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымНематериальнымАктивам;
	ИначеЕсли ВидЦенности = Перечисления.ВидыЦенностей.Товары Тогда
		СчетУчета = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымМПЗ;
	ИначеЕсли ВидЦенности = Перечисления.ВидыЦенностей.Возврат Тогда
		СчетУчета = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымМПЗ;
	ИначеЕсли ВидЦенности = Перечисления.ВидыЦенностей.Материалы Тогда
		СчетУчета = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымМПЗ;
	ИначеЕсли ВидЦенности = Перечисления.ВидыЦенностей.ПрочиеРаботыИУслуги Тогда
		СчетУчета = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымУслугам;
	ИначеЕсли ВидЦенности = Перечисления.ВидыЦенностей.ТаможенныеПлатежи Тогда
		СчетУчета = ПланыСчетов.Хозрасчетный.НДСуплачиваемыйТаможеннымОрганам;
	ИначеЕсли ВидЦенности = Перечисления.ВидыЦенностей.АвансыВыданные Тогда
		СчетУчета = ПланыСчетов.Хозрасчетный.НДСпоАвансамИПредоплатамВыданным;
	ИначеЕсли ВидЦенности = Перечисления.ВидыЦенностей.НалоговыйАгентАренда
			ИЛИ ВидЦенности = Перечисления.ВидыЦенностей.НалоговыйАгентИностранцы
			ИЛИ ВидЦенности = Перечисления.ВидыЦенностей.НалоговыйАгентЭлектронныеУслуги
			ИЛИ ВидЦенности = Перечисления.ВидыЦенностей.НалоговыйАгентКомитент
			ИЛИ ВидЦенности = Перечисления.ВидыЦенностей.НалоговыйАгентРеализацияИмущества Тогда
		СчетУчета = ПланыСчетов.Хозрасчетный.НДСУплачиваемыйНалоговымАгентом;
	КонецЕсли;
	
	Результат = Новый Структура;
	Результат.Вставить("СчетУчета", СчетУчета);
	Результат.Вставить("Субконто1", Контрагент);
	Результат.Вставить("Субконто2", ДокументРасчетов);
	Результат.Вставить("Субконто3", Неопределено);
	
	Возврат Результат;
	
КонецФункции

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

// Функция возвращает текст запроса дополнительных временных таблиц,
// необходимых для отражения в регламентированном учете.
//
// Возвращаемое значение:
//	Строка - Текст запроса создания временных таблиц.
//
Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт
	
	Возврат "";
	
КонецФункции

// Возвращает параметры настройки счетов учета в документе.
//
// Возвращаемое значение:
// 	Структура: см. НастройкаСчетовУчетаСервер.ПараметрыНастройки.
//
Функция ПараметрыНастройкиСчетовУчета() Экспорт
	
	ПараметрыНастройки = НастройкаСчетовУчетаСервер.ПараметрыНастройки();
	ПараметрыНастройки.ПутьКДанным = "Объект.Ценности";
	ПараметрыНастройки.СтатьяАктивовПассивов = "";
	ПараметрыНастройки.АналитикаАктивовПассивов = "";
	ПараметрыНастройки.Представление = "ПредставлениеОтраженияВРеглУчете";
	ПараметрыНастройки.ДоступностьПоОперации = Истина;
	
	ПараметрыНастройки.Организация = "Объект.Организация";

	ПараметрыНастройки.ЭлементыФормы.Добавить("ЦенностиСчетРеглУчета");
	
	Возврат ПараметрыНастройки;
	
КонецФункции

//-- НЕ УТ

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.УправлениеДоступом

// Параметры:
//   Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение.
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)";

КонецПроцедуры

// Конец СтандартныеПодсистемы.УправлениеДоступом

#КонецОбласти

// СтандартныеПодсистемы.ВерсионированиеОбъектов
// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
// Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область Проведение

Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт

	ИсточникиДанных = Новый Соответствие;

	Возврат ИсточникиДанных; 

КонецФункции

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

//++ НЕ УТ
Функция ТекстЗапросаВтТаблицаТоваров(Запрос, ТекстыЗапроса)
	
	ИмяРегистра = "ВТТаблицаТоваров";
	
	СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса);
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	ТаблицаЦенности.Ссылка КАК Ссылка,
	|	ВЫБОР
	|		КОГДА ЕСТЬNULL(ТаблицаЦенности.Номенклатура.ТипНоменклатуры, НЕОПРЕДЕЛЕНО) В (&ТипыНоменклатурыТовар)
	|			ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
	|		ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Услуга)
	|	КОНЕЦ КАК ТипЗапасов,
	|	ТаблицаЦенности.ВидЦенности КАК ВидЦенности,
	|	ТаблицаЦенности.Событие КАК Событие,
	|	ТаблицаЦенности.НомерГТД КАК НомерГТД,
	|	ТаблицаЦенности.НаправлениеДеятельности КАК НаправлениеДеятельности,
	|	СУММА(ТаблицаЦенности.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
	|	ТаблицаЦенности.СтавкаНДС.ПеречислениеСтавкаНДС КАК СтавкаНДС,
	|	СУММА(Суммы.БазаНДСРегл) КАК СуммаБезНДС,
	|	СУММА(Суммы.СуммаНДСРегл) КАК НДС
	|ПОМЕСТИТЬ ВТТаблицаТоваров
	|ИЗ
	|	Документ.ЗаписьКнигиПокупок.Ценности КАК ТаблицаЦенности
	|	ЛЕВОЕ СОЕДИНЕНИЕ
	|		ВтСуммыДокументовВВалютахУчета КАК Суммы
	|	ПО
	|		ТаблицаЦенности.Ссылка = Суммы.Ссылка
	|		И ТаблицаЦенности.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
	|
	|ГДЕ
	|	ТаблицаЦенности.Ссылка = &Ссылка
	|	
	|СГРУППИРОВАТЬ ПО
	|	ТаблицаЦенности.Ссылка,
	|	ВЫБОР
	|		КОГДА ЕСТЬNULL(ТаблицаЦенности.Номенклатура.ТипНоменклатуры, НЕОПРЕДЕЛЕНО) В (&ТипыНоменклатурыТовар)
	|			ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
	|		ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Услуга)
	|	КОНЕЦ,
	|	ТаблицаЦенности.ВидЦенности,
	|	ТаблицаЦенности.Событие,
	|	ТаблицаЦенности.НаправлениеДеятельности,
	|	ТаблицаЦенности.СтавкаНДС.ПеречислениеСтавкаНДС,
	|	ТаблицаЦенности.НомерГТД";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;
	
КонецФункции
//-- НЕ УТ

Функция ТекстЗапросаТаблицаНДСЗаписиКнигиПокупок(Запрос, ТекстыЗапроса, Регистры)
	
	ИмяРегистра = "НДСЗаписиКнигиПокупок";
	
	Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат "";
	КонецЕсли; 
	
	СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса);
	
	ТекстЗапроса = "
	|ВЫБРАТЬ
	|	&СчетФактура КАК СчетФактура,
	|	ВЫБОР 
	|		КОГДА &ЗаписьДополнительногоЛиста
	|			ТОГДА &Период
	|		КОГДА &ПредъявленСчетФактура
	|			ТОГДА &ДатаПолучения
	|		ИНАЧЕ &Период
	|	КОНЕЦ КАК Период,
	|	&Организация КАК Организация,
	|	&Поставщик КАК Поставщик,
	|	&ЗаписьДополнительногоЛиста КАК ЗаписьДополнительногоЛиста,
	|	&КорректируемыйПериод КАК КорректируемыйПериод,
	|	ТаблицаЦенности.ВидЦенности КАК ВидЦенности,
	|	ТаблицаЦенности.Событие КАК Событие,
	|	&Период КАК ДатаСобытия,
	|	ТаблицаЦенности.СтавкаНДС.ПеречислениеСтавкаНДС КАК СтавкаНДС,
	|	ВЫБОР
	|		КОГДА &ЭтоТаможеннаяДекларация
	|			ТОГДА 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 КАК СуммаБезНДСУпр,
	|
	|	ЛОЖЬ КАК ОтражаетсяВРасчетах,
	|	НЕОПРЕДЕЛЕНО КАК ОбъектРасчетов,
	|	ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
	|
	|ИЗ
	|	Документ.ЗаписьКнигиПокупок.Ценности КАК ТаблицаДокумента
	|
	|ГДЕ
	|	ТаблицаДокумента.Ссылка В (&Ссылка)
	|";
	
	РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(
		Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанных);

КонецПроцедуры

//++ НЕ УТ

Функция ТекстЗапросаТаблицаОтражениеДокументовВРеглУчете(Запрос, ТекстыЗапроса, Регистры)
	
	ИмяРегистра = "ОтражениеДокументовВРеглУчете";
	
	Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат "";
	КонецЕсли;
	
	ТекстЗапроса =
	"ВЫБРАТЬ
	|	&Период                                 КАК Период,
	|	&Организация                            КАК Организация,
	|	ВЫБОР 
	|		КОГДА &ЗаписьДополнительногоЛиста
	|			ТОГДА НАЧАЛОПЕРИОДА(&Период, ДЕНЬ)
	|		КОГДА &ПредъявленСчетФактура
	|			ТОГДА НАЧАЛОПЕРИОДА(&ДатаПолучения, ДЕНЬ)
	|		ИНАЧЕ НАЧАЛОПЕРИОДА(&Период, ДЕНЬ)
	|	КОНЕЦ                                   КАК ДатаОтражения
	|";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;
	
КонецФункции  

Функция ТекстЗапросаТаблицаОперацииСПрослеживаемымиТоварами(Запрос, ТекстыЗапроса, Регистры)

	ИмяРегистра = "ОперацииСПрослеживаемымиТоварами";
	
	Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат "";
	КонецЕсли; 

	Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВТТаблицаТоваров", ТекстыЗапроса) Тогда
		ТекстЗапросаВтТаблицаТоваров(Запрос, ТекстыЗапроса);
	КонецЕсли;

	ТекстЗапроса =
	"ВЫБРАТЬ
	|	&Период КАК Период,
	|	&Организация КАК Организация,
	|	ВТТаблицаТоваров.ТипЗапасов КАК ТипЗапасов,
	|	ЗНАЧЕНИЕ(Справочник.КодыОперацийПрослеживаемости.ПустаяСсылка) КАК КодОперации,
	|	&Контрагент КАК Контрагент,
	|	ЗНАЧЕНИЕ(Справочник.ТипыДокументов.Накладная) КАК ТипДокументаВПрослеживаемости,
	|	ЗНАЧЕНИЕ(Перечисление.ПорядокОтраженияВОтчетностиПоПрослеживаемости.КнигаПокупок) КАК ОтражениеВОтчетности
	|ИЗ
	|	ВТТаблицаТоваров КАК ВТТаблицаТоваров
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НомераГТД КАК НомераГТД
	|		ПО ВТТаблицаТоваров.НомерГТД = НомераГТД.Ссылка
	|			И (НомераГТД.ТипНомераГТД = ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерРНПТ)
	|				ИЛИ НомераГТД.ТипНомераГТД = ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерРНПТКомплекта))
	|ГДЕ
	|	ВТТаблицаТоваров.КоличествоПоРНПТ <> 0
	|
	|СГРУППИРОВАТЬ ПО
	|	ВТТаблицаТоваров.ТипЗапасов";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;

КонецФункции
//-- НЕ УТ

Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
	
	ИмяРегистра = "РеестрДокументов";
	
	Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат "";
	КонецЕсли;
	
	ТекстЗапроса = "
	|ВЫБРАТЬ
	|	&ИдентификаторМетаданных КАК ТипСсылки,
	|	&ХозОперацияДляРеестра КАК ХозяйственнаяОперация,
	|	&Организация КАК Организация,
	|	НЕОПРЕДЕЛЕНО КАК Партнер,
	|	НЕОПРЕДЕЛЕНО КАК МестоХранения,
	|	&Контрагент КАК Контрагент,
	|	&Подразделение КАК Подразделение,
	|	&Период КАК ДатаДокументаИБ,
	|	&Ссылка КАК Ссылка,
	|	&Номер КАК НомерДокументаИБ,
	|	НЕОПРЕДЕЛЕНО КАК Статус,
	|	НЕОПРЕДЕЛЕНО КАК Ответственный,
	|	НЕОПРЕДЕЛЕНО КАК Автор,
	|	ЛОЖЬ КАК ДополнительнаяЗапись,
	|	НЕОПРЕДЕЛЕНО КАК Дополнительно,
	|	&Комментарий КАК Комментарий,
	|	&Проведен КАК Проведен,
	|	&ПометкаУдаления КАК ПометкаУдаления,
	|	&Период КАК ДатаПервичногоДокумента,
	|	&НомерНаПечать КАК НомерПервичногоДокумента,
	|	&СуммаДокумента КАК Сумма,
	|	&Валюта КАК Валюта,
	|	НЕОПРЕДЕЛЕНО КАК Договор,
	|	НЕОПРЕДЕЛЕНО КАК НаправлениеДеятельности,
	|	ЛОЖЬ КАК СторноИсправление,
	|	НЕОПРЕДЕЛЕНО КАК СторнируемыйДокумент,
	|	НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
	|	&Период КАК ДатаОтраженияВУчете,
	|	НЕОПРЕДЕЛЕНО КАК Приоритет";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;
	
КонецФункции

Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
	
	Запрос = Новый Запрос;
	ТекстыЗапроса = Новый СписокЗначений;
	
	ПолноеИмяДокумента = "Документ.ЗаписьКнигиПокупок";
	ЗначенияПараметров = Новый Структура;
	ЗначенияПараметров.Вставить("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.ЗаписьКнигиПокупок"));
	ЗначенияПараметров.Вставить("ХозОперацияДляРеестра", Перечисления.ХозяйственныеОперации.ЗаписьКнигиПокупок);
	
	Если ИмяРегистра = "РеестрДокументов" Тогда
		ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
		СинонимТаблицыДокумента = "";
	Иначе
		ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
		ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
		ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
		ВызватьИсключение ТекстИсключения;
	КонецЕсли;
	
	Если ИмяРегистра = "РеестрДокументов" Тогда
		ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
			ТекстЗапроса, ПолноеИмяДокумента, СинонимТаблицыДокумента, Ложь);
	Иначе
		ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
			ТекстЗапроса, ПолноеИмяДокумента, СинонимТаблицыДокумента);
	КонецЕсли;
	
	Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
	Результат.ЗначенияПараметров = ЗначенияПараметров;
	Результат.ТекстЗапроса = ТекстЗапроса;
	
	Возврат Результат;
	
КонецФункции

#КонецОбласти

#КонецОбласти

#КонецЕсли

Связанные материалы