Акт выполненных внутренних работ / Модуль менеджера

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

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

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

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

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

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

#Область СтандартныеПодсистемыКоманды

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

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

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

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

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

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

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

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

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

// СтандартныеПодсистемы.Печать

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

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

// Конец СтандартныеПодсистемы.Печать

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

#Область СменаСтатуса

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Инициализация

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

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

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

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

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

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

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

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

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

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

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

Процедура ИнициализироватьКлючиАналитикиНоменклатуры(Запрос)

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

	Запрос.УстановитьПараметр("КлючиАналитикиНоменклатурыИнициализированы", Истина);
	
КонецПроцедуры

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

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

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

	Возврат АктВыполненныхВнутреннихРаботЛокализация.ТекстОтраженияВРеглУчете();

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

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

	Возврат АктВыполненныхВнутреннихРаботЛокализация.ТекстЗапросаВТОтраженияВРеглУчете();

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

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

#Область ТекстыЗапросовПроведения

#Область ТекстыЗапросовВременныеТаблицы

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

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

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

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

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

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

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

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

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

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

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

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

#Область ПартионныйУчет

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

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

Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
	
	ДополнительныеТаблицы = Новый Массив;
	ДополнительныеТаблицы.Добавить("ВтТовары");
	ДополнительныеТаблицы.Добавить("ВтВидыЗапасов");
	
	Если Запрос <> Неопределено Тогда
	
		Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[0], ТекстыЗапроса) Тогда
			ТекстЗапросаВтТовары(Запрос, ТекстыЗапроса);
		КонецЕсли;
	
		Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[1], ТекстыЗапроса) Тогда
			ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
		КонецЕсли;
		
	КонецЕсли;
	
	Возврат ДополнительныеТаблицы;
	
КонецФункции

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

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

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

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

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

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

Функция СписокОпераций() Экспорт

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

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

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

#Область ОбновлениеИнформационнойБазы

// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

	Обработчик = Обработчики.Добавить();
	Обработчик.Процедура = "Документы.АктВыполненныхВнутреннихРабот.ОбработатьДанныеДляПереходаНаНовуюВерсию";
	Обработчик.Версия = "2.5.23.18";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор = Новый УникальныйИдентификатор("7344728c-a805-4938-a7d4-52a2ec44bcee");
	Обработчик.Многопоточный = Истина;
	Обработчик.ПроцедураЗаполненияДанныхОбновления = "Документы.АктВыполненныхВнутреннихРабот.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
	Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
	Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Некритичный;
	СписокОписаний = Новый Массив;
	СписокОписаний.Добавить(НСтр("ru = 'Обновление документов ""Акт выполненных внутренних работ"":'"));
	СписокОписаний.Добавить(НСтр("ru = '- заполняет реквизит ""Статус"" значением ""Принят"".'"));
	
	Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
	
	Читаемые = Новый Массив;
	Читаемые.Добавить(Метаданные.Документы.АктВыполненныхВнутреннихРабот.ПолноеИмя());
	Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
	
	Изменяемые = Новый Массив;
	Изменяемые.Добавить(Метаданные.Документы.АктВыполненныхВнутреннихРабот.ПолноеИмя());
	Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
	
	Блокируемые = Новый Массив;
	Блокируемые.Добавить(Метаданные.Документы.АктВыполненныхВнутреннихРабот.ПолноеИмя());
	Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");

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

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

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

	Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
	
КонецПроцедуры

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

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

#КонецЕсли

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