Подготовка к передаче ОС / Модуль менеджера

файл

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

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

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

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

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

		ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка, ДопПараметры);
		
		ТекстЗапросаТаблицаДокументыПоОС(ТекстыЗапроса, Регистры);
		ТекстЗапросаТаблицаРеестрДокументов(ТекстыЗапроса, Регистры);
		
		ТекстЗапросаТаблицаПервоначальныеСведенияОС(ТекстыЗапроса, Регистры);
		ТекстЗапросаТаблицаПорядокУчетаОСБУ(ТекстыЗапроса, Регистры);
		ТекстЗапросаТаблицаПорядокУчетаОСУУ(ТекстыЗапроса, Регистры);
		ТекстЗапросаТаблицаПереданныеВАрендуОС(ТекстыЗапроса, Регистры);	
		
		
		ПодготовкаКПередачеОСЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);

	КонецЕсли;
	
	ТаблицыДвижений = ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
	
	Возврат ТаблицыДвижений;
	
КонецФункции

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

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

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

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

#Область Команды

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

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

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

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

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

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

#Область УчетНДС

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

	ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи();
	
	ПараметрыЗаполнения.Организация = Объект.Организация;
	ПараметрыЗаполнения.Дата = Объект.Дата;
	ПараметрыЗаполнения.РеализацияПрочихАктивов = Истина;

	Возврат ПараметрыЗаполнения;
	
КонецФункции

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

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

// СтандартныеПодсистемы.ВерсионированиеОбъектов

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

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

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

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

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

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

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

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

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

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

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

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

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

Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт

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

	Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
	Результат.ЗначенияПараметров = ЗначенияПараметров;
	Результат.ТекстЗапроса = ТекстЗапроса;
	
	Возврат Результат;
	
КонецФункции

Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка, ДопПараметры)
	
	ПроведениеДокументов.ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка, ДопПараметры);
	
	СформироватьТаблицуВтСписокДокументов(Запрос);
	ПолучитьДанныеДокумента(Запрос);

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

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

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

Функция ЗначенияПараметровПроведения(Реквизиты = Неопределено)
	
	ЗначенияПараметровПроведения = Новый Структура;
	ВнеоборотныеАктивы.ДополнитьЗначенияПараметровПроведенияПриСписанииОС(ЗначенияПараметровПроведения);

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

	Если Реквизиты <> Неопределено Тогда
		ЗначенияПараметровПроведения.Вставить("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
	КонецЕсли;
	
	Возврат ЗначенияПараметровПроведения;
	
КонецФункции

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

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

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

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

Процедура ТекстЗапросаТаблицаПорядокУчетаОСБУ(ТекстыЗапроса, Регистры)

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

Процедура ТекстЗапросаТаблицаПорядокУчетаОСУУ(ТекстыЗапроса, Регистры)

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

Процедура ТекстЗапросаТаблицаПереданныеВАрендуОС(ТекстыЗапроса, Регистры)

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

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

Процедура ТекстЗапросаТаблицаАмортизацияОС(ТекстыЗапроса)

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

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

Процедура ТекстЗапросаТаблицаОбесценениеВНА(ТекстыЗапроса)

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

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

Процедура ТекстЗапросаТаблицаСтоимостьОС(ТекстыЗапроса)

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

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

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

Процедура ТекстЗапросаТаблицаПрочиеАктивыПассивы(ТекстыЗапроса)

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

Процедура ТекстЗапросаТаблицаДвиженияПоПрочимАктивамПассивам(ТекстыЗапроса)

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

Процедура ТекстЗапросаТаблицаДвиженияДоходыРасходыПрочиеАктивыПассивы(ТекстыЗапроса)

	ИмяРегистра = "ДвиженияДоходыРасходыПрочиеАктивыПассивы";

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

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

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

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

	Возврат ТекстЗапроса;
	
КонецФункции

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

Функция ПолноеИмяОбъекта()

	Возврат "Документ.ПодготовкаКПередачеОС2_4";

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

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

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

Функция ТекстОтраженияВРеглУчете() Экспорт

	Возврат ПодготовкаКПередачеОСЛокализация.ТекстОтраженияВРеглУчете();

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

Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт

	Возврат ПодготовкаКПередачеОСЛокализация.ТекстЗапросаВТОтраженияВРеглУчете();

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

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

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

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	ПодготовкаКПередачеОСЛокализация.ДобавитьКомандыПечати(КомандыПечати);

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

Функция ПолучитьДанныеДляПечатнойФормыОС1(ПараметрыПечати, МассивОбъектов) Экспорт

	Возврат ПодготовкаКПередачеОСЛокализация.ПолучитьДанныеДляПечатнойФормыОС1(ПараметрыПечати, МассивОбъектов);

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

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

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

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

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

	Если ДоступныеСтатьи.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Если ДоступныеСтатьи.Количество() = 1
		ИЛИ НЕ ЗначениеЗаполнено(СтатьяРасходовВыбытие) Тогда
			
		СтатьяРасходовВыбытие = ДоступныеСтатьи[0];
		
	КонецЕсли;
	
КонецПроцедуры

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

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

#КонецЕсли

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