Учетная политика финансового учета / Форма записи / Модуль формы

файл
#Область ОбработчикиСобытийФормы

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

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

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

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	//++ НЕ УТ
	УчетРасходовПоИсследованиямИРазработкамКлиент.УстановитьПараметрыВыбораСтатьиРасхода(Элементы.СтатьяРасходовПоИсследованиям);
	//-- НЕ УТ
	
	УстановитьДоступностьРеквизитовДисконтирования();
	
КонецПроцедуры

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

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура МетодОценкиСтоимостиТоваровПриИзменении(Элемент)

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

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

&НаКлиенте
Процедура ВариантОтраженияОтклоненийВСтоимостиПродукцииПриИзменении(Элемент)
	Запись.СписыватьОтклоненияВСтоимостиПродукцииНаСебестоимостьПродаж = 
		(ВариантОтраженияОтклоненийВСтоимостиПродукции = "СписыватьНаСебестоимостьПродаж");
КонецПроцедуры

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
	Организация = Запись.Организация;
	ПрочитатьЗаписьРегистраПриИзмененииРеквизита(,ДатаИзменения);
КонецПроцедуры

&НаКлиенте
Процедура ДатаИзмененияПриИзменении(Элемент)
	ТекстВопроса = НСтр("ru = 'Создать новую учетную политику на %1?'");
	ТекстВопроса = СтрШаблон(ТекстВопроса, Формат(НачалоМесяца(ДатаИзменения),"ДЛФ=D"));
	ПоказатьВопрос(Новый ОписаниеОповещения("ДатаИзмененияПриИзмененииЗавершение", ЭтотОбъект), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры

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

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

&НаКлиенте
Процедура ВариантОтраженияРезервовПодОбесценениеЗапасовПриСписанииЗапасовНаРасходыПриИзменении(Элемент)
	Запись.ВосстанавливатьРезервПриСписанииЗапасовНаРасходы = 
		ВариантОтраженияРезервовПодОбесценениеЗапасовПриСписанииЗапасовНаРасходы = "ВосстановитьРезерв";
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьВыделениеДолгосрочныхАктивовОбязательствПриИзменении(Элемент)

	ИспользоватьВыделениеДолгосрочныхАктивовОбязательствПриИзмененииНаСервере();
	
КонецПроцедуры

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

&НаКлиенте
Процедура СтавкаДисконтированияНажатие(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ОткрытьСтавкиДисконтирования();
КонецПроцедуры

&НаКлиенте
Процедура ЗаписьУчетДисконтированнойКредиторскойЗадолженностиПоставщикамПриИзменении(Элемент)
	
	УстановитьДоступностьРеквизитовДисконтирования();
	ОбновитьНастройкиСтатейИАналитикНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура СтатьяСписанияПроцентныхРасходовПриИзменении(Элемент)

	ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);

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

&НаКлиенте
Процедура СтатьяСписанияПроцентныхРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура АналитикаСписанияПроцентныхРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура АналитикаСписанияПроцентныхРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура АналитикаСписанияПроцентныхРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

#Область ВнеоборотныеАктивы

&НаКлиенте
Процедура ЗаписьПорядокУчетаВНАПоСтандартамМУПриИзменении(Элемент)
	
	//++ НЕ УТ
	
	Если Запись.ПорядокУчетаВНА = ПредопределенноеЗначение("Перечисление.ПорядокУчетаВНА.ПоСтандартамРегл") Тогда
		
		Запись.ПорядокНачисленияАмортизацииОС = ПредопределенноеЗначение("Перечисление.ПорядокНачисленияАмортизации.СоСледующегоМесяца");
		Запись.ПорядокНачисленияАмортизацииАренда = ПредопределенноеЗначение("Перечисление.ПорядокНачисленияАмортизации.СоСледующегоМесяца");
		Запись.ПорядокНачисленияАмортизацииНМА = ПредопределенноеЗначение("Перечисление.ПорядокНачисленияАмортизации.СоСледующегоМесяца");
		
		Запись.МетодПереоценкиОС = ПредопределенноеЗначение("Перечисление.МетодыПереоценкиВНА.ПустаяСсылка");
		Запись.МетодПереоценкиНМА = ПредопределенноеЗначение("Перечисление.МетодыПереоценкиВНА.ПустаяСсылка");
		
	Иначе

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

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

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

	УстановитьВидимостьЭлементов(ЭтотОбъект);

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗаписьПорядокУчетаВНАРеглСовпадаетСУпрУчетомПриИзменении(Элемент)
	
	//++ НЕ УТ
	Если Запись.ПорядокУчетаВНАРегл = ПредопределенноеЗначение("Перечисление.ПорядокУчетаВНАРегл.СовпадаетСУпрУчетом") Тогда
		Запись.ПорядокНачисленияАмортизацииОСРегл = Запись.ПорядокНачисленияАмортизацииОС;
		Запись.ПорядокНачисленияАмортизацииАрендаРегл = Запись.ПорядокНачисленияАмортизацииАренда;
		Запись.ПорядокНачисленияАмортизацииНМАРегл = Запись.ПорядокНачисленияАмортизацииНМА;
	КонецЕсли;
	//-- НЕ УТ

	УстановитьВидимостьЭлементов(ЭтотОбъект);

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

&НаКлиенте
Процедура ЗаписьПорядокУчетаВНАРеглНезависимыйПриИзменении(Элемент)
	
	УстановитьВидимостьЭлементов(ЭтотОбъект);

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

&НаКлиенте
Процедура ЗаписьСтатьяРасходовПоИсследованиямПриИзменении(Элемент)

	ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);

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

&НаКлиенте
Процедура ФормироватьРезервыПоСомнительнымДолгамПриИзменении(Элемент)
	УстановитьВидимостьЭлементов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ЗаписьСтатьяРасходовПоИсследованиямНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ЗаписьАналитикаРасходовПоИсследованиямНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаписьПризнаватьРасходыПоИсследованиямПриИзменении(Элемент)
	
	ОбновитьНастройкиСтатейИАналитикНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаписьУчетДисконтированияРезервовПредстоящихРасходовПриИзменении(Элемент)
	
	ОбновитьНастройкиСтатейИАналитикНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаписьУчетАрендыПоФСБУ25_2018ПриИзменении(Элемент)
	
	ОбновитьНастройкиСтатейИАналитикНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура СтатьяСписанияПроцентныхРасходовДисконтированияРезервовПриИзменении(Элемент)

	ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);

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

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

&НаКлиенте
Процедура АналитикаСписанияПроцентныхРасходовДисконтированияРезервовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура АналитикаСписанияПроцентныхРасходовДисконтированияРезервовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура АналитикаСписанияПроцентныхРасходовДисконтированияРезервовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура СтатьяПроцентныхДоходовФинансовойАрендыПриИзменении(Элемент)

	ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);

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

&НаКлиенте
Процедура СтатьяПроцентныхДоходовФинансовойАрендыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура СтатьяДоходовДляУслугФинансовойАрендыПриИзменении(Элемент)

	ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);

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

&НаКлиенте
Процедура СтатьяДоходовДляУслугФинансовойАрендыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
	Если ЗаписатьИзменения(Истина) Тогда
		Закрыть();
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Записать(Команда)
	ЗаписатьИзменения();
КонецПроцедуры

&НаКлиенте
Процедура НастроитьПорядокОценкиЗадолженности(Команда)

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

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

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

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

&НаКлиенте
Процедура ПрочитатьЗаписьРегистраПриИзмененииРеквизита(КлючЗаписи = Неопределено, ПериодЗаписи = Неопределено, СоздатьНовую = Ложь)
	Если НЕ Копирование Тогда
		ПрочитатьЗаписьРегистра(КлючЗаписи, ПериодЗаписи, СоздатьНовую);
	КонецЕсли;
	УстановитьДоступностьРеквизитовДисконтирования();
КонецПроцедуры

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

&НаКлиенте
Процедура ОповеститьПослеЗаписи()
	
	ПараметрыОповещения = Новый Структура("Организация, Период", Запись.Организация, Запись.Период);
	ИмяСобытия = "Запись_" + ИмяРегистра;
	Оповестить(ИмяСобытия, ПараметрыОповещения);
	
КонецПроцедуры

&НаСервере
Функция ЗаписатьИзмененияНаСервере(Закрытие = Ложь)

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

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

&НаСервере
Процедура ПроверитьИзменениеМетодаОценки(Отказ)
	
	ИспользуетсяСреднескользящая = (Запись.МетодОценкиСтоимостиТоваров = Перечисления.МетодыОценкиСтоимостиТоваров.Среднескользящая);

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

			Если НЕ Выборка.УчетнаяПолитикаСуществует
			 ИЛИ Выборка.МетодОценкиСтоимостиТоваров <> Перечисления.МетодыОценкиСтоимостиТоваров.Среднескользящая Тогда

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

&НаКлиенте
Функция ЗаписатьИзменения(Закрытие = Ложь)
	ОчиститьСообщения();
	ЗаписьУспешна = ЗаписатьИзмененияНаСервере(Закрытие);
	Если ЗаписьУспешна Тогда
		ОповеститьПослеЗаписи();
	КонецЕсли;
	Возврат ЗаписьУспешна;
КонецФункции

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

&НаКлиенте
Процедура ВопросПередЗакрытиемЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = КодВозвратаДиалога.Нет Тогда
		
		Модифицированность = Ложь;
		Закрыть();
		
	ИначеЕсли Результат = КодВозвратаДиалога.Да Тогда
		Если НЕ ЗаписатьИзменения(Истина) Тогда
			Возврат;
		КонецЕсли;
		Модифицированность = Ложь;
		Закрыть();
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьИсториюИзменений()
	ОткрытьФорму("РегистрСведений.УчетнаяПолитикаФинансовогоУчета.Форма.РедактированиеИстории",
		Новый Структура("ТолькоПросмотр, Организация", ТолькоПросмотр, Организация),
		ЭтотОбъект,,,,
		Новый ОписаниеОповещения("ОткрытьИсториюИзмененийЗавершение", ЭтотОбъект));
КонецПроцедуры

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

&НаКлиенте
Процедура ОткрытьИсториюИзмененийЗавершение(Результат, ДополнительныеПараметры) Экспорт
	Если ЗначениеЗаполнено(Результат) Тогда
		ПрочитатьЗаписьРегистра(Результат);
	КонецЕсли;
КонецПроцедуры

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

	Элементы.ЗаписьПорядокНачисленияАмортизацииНМАРеглСДатыПринятияКУчету.ТолькоПросмотр = ЗначениеСвойства;
	Элементы.ЗаписьПорядокНачисленияАмортизацииНМАРеглСоСледующегоМесяца.ТолькоПросмотр = ЗначениеСвойства;

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

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

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

&НаСервере
Функция ПроверяемыеПоляРегистра()
	
	СписокПроверяемыхПолей = Новый СписокЗначений;
	
	МетаданныеРегистра = Метаданные.РегистрыСведений.УчетнаяПолитикаФинансовогоУчета;

	СписокПроверяемыхПолей.Добавить(
		МетаданныеРегистра.Ресурсы.СтатьяРасходовПоИсследованиям.Имя,
		МетаданныеРегистра.Ресурсы.СтатьяРасходовПоИсследованиям.Синоним);

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

&НаСервере
Процедура СформироватьНадписьСтавкаДисконтирования()
	
	Если ЗначенияСтавокДисконтирования.Количество() Тогда 
		СтавкаДисконтирования = НСтр("ru='Ставки дисконтирования'");
	Иначе
		СтавкаДисконтирования = НСтр("ru='Ставки не указаны'");
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура НастроитьПорядокОценкиЗадолженностиОбработкаРезультата(Результат, ДополнительныеПараметры) Экспорт
	Если Результат = Истина Тогда
		Модифицированность = Истина;
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура НастроитьВнеоборотныеАктивыПриСозданииФормы()
	
	ДоступнаНастройкаВНА = Ложь;
	РегламентированныйУчетВНА = Ложь;

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

		Элементы.ДекорацияПорядокНачисленияАмортизацииРеглАренда.Видимость = Ложь;
		Элементы.ЗаписьПорядокНачисленияАмортизацииРеглАрендаСДатыПринятияКУчету.Видимость = Ложь;
		Элементы.ЗаписьПорядокНачисленияАмортизацииРеглАрендаСоСледующегоМесяца.Видимость = Ложь;
		
		Элементы.ДекорацияПорядокНачисленияАмортизацииНМАРегл.Видимость = Ложь;
		Элементы.ЗаписьПорядокНачисленияАмортизацииНМАРеглСДатыПринятияКУчету.Видимость = Ложь;
		Элементы.ЗаписьПорядокНачисленияАмортизацииНМАРеглСоСледующегоМесяца.Видимость = Ложь;

		Элементы.ВариантПроводокПоОбесценению.Видимость = Ложь;
		Элементы.ЗаписьУчетАрендыПоФСБУ25_2018.Видимость = Ложь;

		Элементы.ДекорацияОтступФинАренда.Видимость = Ложь;
		Элементы.ЗаписьСтатьяПроцентныхДоходовФинансовойАренды.Видимость = Ложь;
		Элементы.ЗаписьАналитикаПроцентныхДоходовФинансовойАренды.Видимость = Ложь;
		Элементы.ЗаписьСтатьяДоходовДляУслугФинансовойАренды.Видимость = Ложь;
		Элементы.ЗаписьАналитикаДоходовДляУслугФинансовойАренды.Видимость = Ложь;

		Элементы.ОтступМетодПереоценкиОС.Видимость = Ложь;
		Элементы.ОтступМетодПереоценкиНМА.Видимость = Ложь;
		
	КонецЕсли;
	
	ВключеноОбесценение = Ложь;
	
	//++ НЕ УТ
	
	ВключеноОбесценение = 
		ПолучитьФункциональнуюОпцию("ИспользоватьВнеоборотныеАктивы2_4")
		 И ПолучитьФункциональнуюОпцию("ИспользоватьОбесценениеВНА");
	//-- НЕ УТ
	
	Если НЕ ВключеноОбесценение Тогда
		Элементы.ВариантПроводокПоОбесценению.Видимость = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция ПоддерживаетсяСреднескользящая()
	Возврат Истина;
КонецФункции
 
&НаСервереБезКонтекста
Функция РаспределятьВзаиморасчетыФоновымЗаданием()
	УстановитьПривилегированныйРежим(Истина);
	Возврат Константы.РаспределятьВзаиморасчетыФоновымЗаданием.Получить();
КонецФункции
 
#КонецОбласти

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