Настройки учета налога на прибыль / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

//++ Локализация
#Область КурсовыеРазницы67ФЗ

// Возвращает дату начала года вступления в силу закона 67-ФЗ
// Возвращаемое значение:
//  Дата
Функция НачалоВступленияВСилу67ФЗ() Экспорт
	
	Возврат Дата(2022,1,1);
	
КонецФункции

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

// Возвращает дату начала применения закона 67-ФЗ по расходам.
// Возвращаемое значение:
//  Дата
Функция НачалоПрименения67ФЗПоРасходам() Экспорт
	
	Возврат Дата(2023,1,1);
	
КонецФункции

#КонецОбласти
//-- Локализация
#КонецОбласти

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

#КонецЕсли

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