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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

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

	ТекстыОтражения = Новый Массив;
	ТекстыОтражения.Добавить(ТекстНачислениеИВосстановлениеНДС);
	ТекстыОтражения.Добавить(ТекстИсправлениеПрочегоНачисленияНДС);
	
	Возврат СтрСоединить(ТекстыОтражения, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());

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

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

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

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

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

//-- НЕ УТ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	Возврат ТекстЗапроса;
	
КонецФункции

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

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	Возврат ТекстЗапроса;
	
КонецФункции

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

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

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

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

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

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

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

#Область Печать

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

	// Счет-фактура
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.МенеджерПечати = "Обработка.ПечатьОбщихФорм";
	КомандаПечати.Идентификатор = "СчетФактура";
	КомандаПечати.Представление = НСтр("ru = 'Счет-фактура'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	КомандаПечати.ДополнительныеПараметры.Вставить("ПечатьВВалюте", Ложь);

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

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

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

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

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

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

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

#КонецЕсли

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