Распределение расходов будущих периодов / Форма документа / Модуль формы

файл

#Область ОписаниеПеременных

&НаКлиенте
Перем КэшированныеЗначения; //используется механизмом обработки изменения реквизитов ТЧ

&НаКлиенте
Перем ОтветПередЗаписью;

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	НастройкиСистемыЛокализация.УстановитьВидимостьЭлементовЛокализации(ЭтаФорма);
	
	ВедетсяУчетПоНДД = ВедетсяУчетПоНДД(Объект.Дата, Объект.Организация);
	Объект.НДД = ?(ВедетсяУчетПоНДД, Объект.НДД, Ложь);
	Элементы.НДД.Видимость = ВедетсяУчетПоНДД;
	
КонецПроцедуры

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

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

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

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

	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
	
	СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	
	ПринудительноЗакрытьФорму = Истина;
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВариантУказанияСуммыУпрПриИзменении(Элемент)
	УправлениеЭлементамиФормыНаКлиенте();
КонецПроцедуры

&НаКлиенте
Процедура ВариантУказанияСуммыРеглПриИзменении(Элемент)
	УправлениеЭлементамиФормыНаКлиенте();
КонецПроцедуры

&НаКлиенте
Процедура ПравилоРаспределенияПриИзменении(Элемент)
	ПерезаполнитьТабличнуюЧасть();
КонецПроцедуры

&НаКлиенте
Процедура КоличествоМесяцевПриИзменении(Элемент)
	ЗаполнитьКонецПериода();
	ПерезаполнитьТабличнуюЧасть();
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура СуммаДокументаПРПриИзменении(Элемент)
	СуммаДокументаРеглПриИзменении(Элемент);
	ПересчитатьВременнуюРазницуДокумента();
КонецПроцедуры

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

&НаКлиенте
Процедура ОВЗПриИзменении(Элемент)
	Модифицированность = Истина;
	Объект.АналитикаРасходов = ОВЗ;
КонецПроцедуры

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

&НаКлиенте
Процедура УправленческийУчетПриИзменении(Элемент)
	УправлениеЭлементамиФормыНаКлиенте();
КонецПроцедуры

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

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

&НаКлиенте
Процедура НДДПриИзменении(Элемент)
	УправлениеЭлементамиФормыНаКлиенте();
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыРаспределениеРасходов

&НаКлиенте
Процедура РаспределениеРасходовПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
	
	Если НоваяСтрока И Не Копирование Тогда
		
		СуммаОстаток     = Объект.СуммаДокумента - Объект.РаспределениеРасходов.Итог("Сумма");
		СуммаОстатокУпр  = Объект.СуммаДокументаУпр - Объект.РаспределениеРасходов.Итог("СуммаУпр");
		СуммаОстатокРегл = Объект.СуммаДокументаРегл - Объект.РаспределениеРасходов.Итог("СуммаРегл");
		СуммаОстатокНУ   = СуммаДокументаНУ - Объект.РаспределениеРасходов.Итог("СуммаНУ");
		СуммаОстатокПР   = Объект.СуммаДокументаПР - Объект.РаспределениеРасходов.Итог("ПостояннаяРазница");
		СуммаОстатокВР   = Объект.СуммаДокументаВР - Объект.РаспределениеРасходов.Итог("ВременнаяРазница");
		СуммаОстатокНДД  = Объект.СуммаДокументаНДД - Объект.РаспределениеРасходов.Итог("СуммаНДД");
		
		Элемент.ТекущиеДанные.Сумма             = СуммаОстаток;
		Элемент.ТекущиеДанные.СуммаУпр          = СуммаОстатокУпр;
		Элемент.ТекущиеДанные.СуммаРегл         = СуммаОстатокРегл;
		Элемент.ТекущиеДанные.СуммаНУ           = СуммаОстатокНУ;
		Элемент.ТекущиеДанные.ПостояннаяРазница = СуммаОстатокПР;
		Элемент.ТекущиеДанные.ВременнаяРазница  = СуммаОстатокВР;
		Элемент.ТекущиеДанные.СуммаНДД          = СуммаОстатокНДД;
		
		КоличествоСтрок = Объект.РаспределениеРасходов.Количество();
		Если КоличествоСтрок > 1 Тогда
			Дата = ДобавитьМесяц(НачалоМесяца(Объект.РаспределениеРасходов[КоличествоСтрок - 2].Дата), 1);
			Элемент.ТекущиеДанные.Дата = Дата;
		Иначе
			Элемент.ТекущиеДанные.Дата = Объект.НачалоПериода;
		КонецЕсли;
		
		ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, Элемент.ТекущиеДанные, "Объект.РаспределениеРасходов");
	
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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


&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
	ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры


&НаКлиенте
Процедура ЗаполнитьРаспределение(Команда)

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

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

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

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

&НаКлиенте
Процедура ЗаполнитьПодразделение(Команда)
	
	ЗаполнитьПодразделениеВТабличнойЧасти(Элементы.РаспределениеРасходов.ВыделенныеСтроки);
	
КонецПроцедуры

&НаКлиенте
Процедура ПровестиДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
	
КонецПроцедуры

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

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

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

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

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

&НаКлиенте
Процедура ЗаполнитьКонецПериода()
	Если Объект.КоличествоМесяцев > 0 И ЗначениеЗаполнено(Объект.НачалоПериода) Тогда
		Объект.КонецПериода = ДобавитьМесяц(Объект.НачалоПериода, Объект.КоличествоМесяцев)-1;
	КонецЕсли;
КонецПроцедуры

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

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
	
	//
	
	Элемент = УсловноеОформление.Элементы.Добавить();

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

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.РаспределениеРасходов.ИзменениеЗапрещено");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Истина;

	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветНедоступногоТекста);
	
КонецПроцедуры

&НаСервере
Функция РазностьДатВДнях(Знач Дата1, Знач Дата2)
	
	ДлинаСуток = 86400; // в секундах
	Возврат Окр((НачалоДня(Дата1) - НачалоДня(Дата2)) / ДлинаСуток);
	
КонецФункции

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

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

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

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

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

&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
	
	Закрыть();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ЗаполнитьПодразделениеВТабличнойЧастиЗавершение(Результат, ДополнительныеПараметры) Экспорт

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

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

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

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

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

&НаСервере
Процедура ПересчитатьВременнуюРазницуДокумента()

	Объект.СуммаДокументаВР = Объект.СуммаДокументаРегл - СуммаДокументаНУ - Объект.СуммаДокументаПР;

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

&НаКлиенте
Процедура ПересчитатьВременнуюРазницуСтроки(СтрокаТаблицы)

	СтрокаТаблицы.ВременнаяРазница = СтрокаТаблицы.СуммаРегл - СтрокаТаблицы.СуммаНУ - СтрокаТаблицы.ПостояннаяРазница;

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

&НаСервереБезКонтекста
Функция СтатьяРасходовПризнаетсяВРасходахНДД(СтатьяРасходов)
	Возврат РасчетСебестоимостиЛокализация.СтатьяРасходовПризнаетсяВРасходахНДД(СтатьяРасходов)
КонецФункции

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

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

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

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

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