Признание расходов по исследованиям и разработкам / Модуль менеджера

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

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

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

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

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

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

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

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

#Область ПодключаемыеКоманды

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

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

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

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

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

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

//-- НЕ УТ

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ФормированиеГиперссылки

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

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

Функция ПолучитьТекстЗапросаТемКОтнесениюРасходов(Параметры)

	Текст = "";

	Если Параметры.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗавершениеЭтаповИсследованийИРазработок Тогда

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

	ИначеЕсли Параметры.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПризнаниеРасходовПоИсследованиям Тогда

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

	Возврат Текст;

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

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

	РезультатЗапроса = Запрос.Выполнить();

	Возврат РезультатЗапроса.Выгрузить();

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

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

#КонецЕсли

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