Инвентаризация ОС / Модуль менеджера

файл

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

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

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

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

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

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

// Определяет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//  Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	Команда = Документы.ПринятиеКУчетуОС.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 1);
	Если Команда <> Неопределено Тогда
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
			Команда, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ИнвентаризацияОС);
	КонецЕсли;
	
	Команда = Документы.ПринятиеКУчетуОС2_4.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 2);
	Если Команда <> Неопределено Тогда
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
			Команда, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ИнвентаризацияОС);
	КонецЕсли;
	
	Команда = Документы.ПеремещениеОС.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 3);
	Если Команда <> Неопределено Тогда
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
			Команда, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ИнвентаризацияОС);
	КонецЕсли;
	
	Команда = Документы.ПеремещениеОС2_4.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 4);
	Если Команда <> Неопределено Тогда
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
			Команда, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ИнвентаризацияОС);
	КонецЕсли;
	
	Команда = Документы.ПереоценкаОС2_4.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 5);
	Если Команда <> Неопределено Тогда
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
			Команда, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ИнвентаризацияОС);
	КонецЕсли;
	
	Команда = Документы.СписаниеОС.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 6);
	Если Команда <> Неопределено Тогда
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
			Команда, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ИнвентаризацияОС);
	КонецЕсли;
	
	Команда = Документы.СписаниеОС2_4.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 7);
	Если Команда <> Неопределено Тогда
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
			Команда, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ИнвентаризацияОС);
	КонецЕсли;
	
	Команда = Документы.ПрекращениеДоговораАренды.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 8);
	Если Команда <> Неопределено Тогда
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
			Команда, "ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ИнвентаризацияОС);
	КонецЕсли;
	
КонецПроцедуры

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

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

#Область ЗаполнениеНаОсновании

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ТекущиеДанныеУчета = Новый ТаблицаЗначений;
	ТекущиеДанныеУчета.Колонки.Добавить("ОбъектУчета", Новый ОписаниеТипов("СправочникСсылка.ОбъектыЭксплуатации, СправочникСсылка.ОбъектыСтроительства"));
	ТекущиеДанныеУчета.Колонки.Добавить("ОрганизацияПоДаннымУчета", Новый ОписаниеТипов("СправочникСсылка.Организации"));
	ТекущиеДанныеУчета.Колонки.Добавить("ПодразделениеПоДаннымУчета", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
	ТекущиеДанныеУчета.Колонки.Добавить("МОЛ", Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица"));
	ТекущиеДанныеУчета.Колонки.Добавить("МОЛПоДаннымУчета", Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица"));
	ТекущиеДанныеУчета.Колонки.Добавить("ОрганизацииВзаимосвязаны", Новый ОписаниеТипов("Булево"));
	ТекущиеДанныеУчета.Колонки.Добавить("ПолученоВАренду", Новый ОписаниеТипов("Булево"));
	ТекущиеДанныеУчета.Колонки.Добавить("Договор", Новый ОписаниеТипов("СправочникСсылка.ДоговорыАренды, СправочникСсылка.ДоговорыКонтрагентов"));
	ТекущиеДанныеУчета.Колонки.Добавить("НаличиеПоДаннымУчета", Новый ОписаниеТипов("Булево"));
	ТекущиеДанныеУчета.Колонки.Добавить("Состояние", Новый ОписаниеТипов("ПеречислениеСсылка.СостоянияОС"));
	ТекущиеДанныеУчета.Колонки.Добавить("СтоимостьПоДаннымУчета");
	ТекущиеДанныеУчета.Колонки.Добавить("ИнвентарныйНомер");
	ТекущиеДанныеУчета.Колонки.Добавить("Код");
	ТекущиеДанныеУчета.Колонки.Добавить("ХозяйственнаяОперация");
	
	Если СписокОС <> Неопределено И СписокОС.Количество() = 0 Тогда
		Возврат ТекущиеДанныеУчета;
	КонецЕсли;
	
	ТекстЗапроса = ?(ВнеоборотныеАктивы.ИспользуетсяУправлениеВНА_2_4(Дата),
		ТекстЗапросаДанныеУчета24(ХозяйственнаяОперация),
		ТекстЗапросаДанныеУчета22(ХозяйственнаяОперация));

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

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

	Возврат ТекущиеДанныеУчета;
	
КонецФункции

Процедура ЗаполнитьДанныеУчета(Объект, КоллекцияСтрок, ЭтоЧтениеОбъекта, ЗаполнитьСлужебныеРеквизиты = Ложь) Экспорт

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

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

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

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

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

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

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

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

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

Функция ЗначенияПараметровПроведения(Реквизиты = Неопределено)

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

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

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

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

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

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

// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	// ИНВ-1 (Инвентаризационная опись)
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "ИНВ1";
	КомандаПечати.Представление = НСтр("ru = 'ИНВ-1 (Инвентаризационная опись)'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	
	// ИНВ-18 (Сличительная ведомость)
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "ИНВ18";
	КомандаПечати.Представление = НСтр("ru = 'ИНВ-18 (Сличительная ведомость)'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	
	// ИНВ-22 (Приказ о проведении инвентаризации)
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "ИНВ22";
	КомандаПечати.МенеджерПечати = "Обработка.ПечатьИНВ22";
	КомандаПечати.Представление = НСтр("ru = 'ИНВ-22 (Приказ о проведении инвентаризации)'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	
КонецПроцедуры

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

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

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

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

		КонецЕсли;
		
		// Выведем строку над таблицей
		ТабличныйДокумент.Вывести(СтрокаНадТаблицей);
		
		// Выведем заголовок таблицы	
		ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
		
		// Создадим переменные для накопления итогов по каждой странице
		ИтогИзлишекКоличество   = 0;
		ИтогИзлишекСтоимость    = 0;
		ИтогНедостачаКоличество = 0;
		ИтогНедостачаСтоимость  = 0;
		
		// Выведем строки таблицы
		Пока Док.Следующий() Цикл
			
			СтрокаТаблицы.Параметры.Заполнить(Док);
			
			СтрокаСПодвалом = Новый Массив;
			СтрокаСПодвалом.Добавить(СтрокаТаблицы);
			СтрокаСПодвалом.Добавить(ПодвалТаблицы);
			Если Док.МаксНомерСтроки = Док.Количество() Тогда  // если последняя строка, должна
				СтрокаСПодвалом.Добавить(ПодписьГлавногоБухгалтера); // помещаться и подпись гл.бухгалтера
			КонецЕсли;
			
			Если НЕ ОбщегоНазначенияБПВызовСервера.ПроверитьВыводТабличногоДокумента(ТабличныйДокумент, СтрокаСПодвалом) Тогда
				
				// Выведем подвал таблицы
				ПодвалТаблицы.Параметры.ИтогИзлишекКоличество   = ИтогИзлишекКоличество;
				ПодвалТаблицы.Параметры.ИтогИзлишекСтоимость    = ИтогИзлишекСтоимость;
				ПодвалТаблицы.Параметры.ИтогНедостачаКоличество = ИтогНедостачаКоличество;
				ПодвалТаблицы.Параметры.ИтогНедостачаСтоимость  = ИтогНедостачаСтоимость;
				
				ТабличныйДокумент.Вывести(ПодвалТаблицы);
				
				// Обнулим переменные для накопления итогов по каждой странице
				ИтогИзлишекКоличество   = 0;
				ИтогИзлишекСтоимость    = 0;
				ИтогНедостачаКоличество = 0;
				ИтогНедостачаСтоимость  = 0;
				
				// Выведем разрыв страницы
				ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
				
				// Выведем заголовок таблицы	
				ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
				
			КонецЕсли;
			
			РазницаПоНаличию   = Док.НаличиеФактическое - Док.НаличиеПоДаннымУчета;
			РазницаПоСтоимости = Док.СтоимостьФактическая - Док.СтоимостьПоДаннымУчета;
			
			ИзлишекКоличество   = ?(РазницаПоНаличию > 0, РазницаПоНаличию, 0);
			ИзлишекСтоимость    = ?(РазницаПоСтоимости > 0, РазницаПоСтоимости, 0);
			НедостачаКоличество = ?(РазницаПоНаличию < 0, -РазницаПоНаличию, 0);
			НедостачаСтоимость  = ?(РазницаПоСтоимости < 0, -РазницаПоСтоимости, 0);
			
			ИтогИзлишекКоличество   = ИтогИзлишекКоличество + ИзлишекКоличество;
			ИтогИзлишекСтоимость    = ИтогИзлишекСтоимость + ИзлишекСтоимость;
			ИтогНедостачаКоличество = ИтогНедостачаКоличество + НедостачаКоличество;
			ИтогНедостачаСтоимость  = ИтогНедостачаСтоимость + НедостачаСтоимость;
			
			СтрокаТаблицы.Параметры.ИзлишекКоличество   = ИзлишекКоличество;
			СтрокаТаблицы.Параметры.ИзлишекСтоимость    = ИзлишекСтоимость;
			СтрокаТаблицы.Параметры.НедостачаКоличество = НедостачаКоличество;
			СтрокаТаблицы.Параметры.НедостачаСтоимость  = НедостачаСтоимость;
			
			ТабличныйДокумент.Вывести(СтрокаТаблицы);
			
		КонецЦикла;
		
		// Выведем подвал таблицы
		ПодвалТаблицы.Параметры.ИтогИзлишекКоличество   = ИтогИзлишекКоличество;
		ПодвалТаблицы.Параметры.ИтогИзлишекСтоимость    = ИтогИзлишекСтоимость;
		ПодвалТаблицы.Параметры.ИтогНедостачаКоличество = ИтогНедостачаКоличество;
		ПодвалТаблицы.Параметры.ИтогНедостачаСтоимость  = ИтогНедостачаСтоимость;
		
		ТабличныйДокумент.Вывести(ПодвалТаблицы);
		
		// Выведем подпись бухгалтера
		Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(Док.Организация, Док.Дата, Док.Подразделение);
		
		ПодписьГлавногоБухгалтера.Параметры.РасшифровкаПодписи = Руководители.ГлавныйБухгалтерПредставление;
		
		ТабличныйДокумент.Вывести(ПодписьГлавногоБухгалтера);
		
		// Проверим, помещаются ли шапка подписей и одна подпись
		Подписи = Новый Массив;
		Подписи.Добавить(ШапкаПодписейМОЛ);
		Подписи.Добавить(Подпись);
		
		Если НЕ ОбщегоНазначенияБПВызовСервера.ПроверитьВыводТабличногоДокумента(ТабличныйДокумент, Подписи) Тогда
				
			// Выведем разрыв страницы
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();

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

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

#Область ЗаполнениеНаОсновании

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

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

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

Функция ТекстЗапросаДанныеУчета22(ХозяйственнаяОперация)

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

КонецФункции
 
Функция ТекстЗапросаДанныеУчета24(ХозяйственнаяОперация)

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

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

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

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

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

#КонецЕсли

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