Отражение прочих доходов и расходов / Форма документа / Модуль формы

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

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

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

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
	
КонецПроцедуры

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

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

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

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

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

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

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

// Закладка "Основное"

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

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

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

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

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
	
	ИмяТЧ = ?(ЭтоРасходы,"ПрочиеРасходы","ПрочиеДоходы");
	Для Каждого СтрокаТЧ Из Объект[ИмяТЧ] Цикл
		Если СтрокаТЧ.ДатаОтражения = КэшДата Тогда
			СтрокаТЧ.ДатаОтражения = Объект.Дата;
		КонецЕсли;
	КонецЦикла;
	КэшДата = НачалоДня(Объект.Дата);
	УправлениеФормойСервер();
	
КонецПроцедуры

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

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

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

// Закладка "Расходы"

&НаКлиенте
Процедура ПереключательРасшифровкиРасходыПриИзменении(Элемент)
	ПриИзмененииПереключателяРасшифровкиРасходы(ПереключательРасшифровкиРасходы);
КонецПроцедуры

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

// Закладка "Расходы". Расходы "Без разбиения", активы/пассивы "Без разбиения".

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

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

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

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

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

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

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

// Закладка "Расходы". Расходы "Без разбиения"

&НаКлиенте
Процедура РасходыПодразделениеБезРазбиенияПриИзменении(Элемент)
	ИмяТЧ = "ПрочиеРасходы";
	ИмяРеквизита = "Подразделение";
	ЗаполнитьРеквизитВТабличнойЧасти(ИмяТЧ, ИмяРеквизита, Элементы[ИмяТЧ].ТекущиеДанные[ИмяРеквизита]);
КонецПроцедуры

&НаКлиенте
Процедура РасходыНаправлениеДеятельностиБезРазбиенияПриИзменении(Элемент)
	ИмяТЧ = "ПрочиеРасходы";
	ИмяРеквизита = "НаправлениеДеятельности";
	ЗаполнитьРеквизитВТабличнойЧасти(ИмяТЧ, ИмяРеквизита, Элементы[ИмяТЧ].ТекущиеДанные[ИмяРеквизита]);
КонецПроцедуры

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

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

// Закладка "Расходы". Активы/пассивы "Без разбиения"

&НаКлиенте
Процедура РасходыКорПодразделениеБезРазбиенияПриИзменении(Элемент)
	ИмяТЧ = "ПрочиеРасходы";
	ИмяРеквизита = "КорПодразделение";
	ЗаполнитьРеквизитВТабличнойЧасти(ИмяТЧ, ИмяРеквизита, Элементы[ИмяТЧ].ТекущиеДанные[ИмяРеквизита]);
КонецПроцедуры

&НаКлиенте
Процедура РасходыКорНаправлениеДеятельностиБезРазбиенияПриИзменении(Элемент)
	ИмяТЧ = "ПрочиеРасходы";
	ИмяРеквизита = "КорНаправлениеДеятельности";
	ЗаполнитьРеквизитВТабличнойЧасти(ИмяТЧ, ИмяРеквизита, Элементы[ИмяТЧ].ТекущиеДанные[ИмяРеквизита]);
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура РасходыПредставлениеОтраженияВРеглУчетеБезРазбиенияНажатие(Элемент, СтандартнаяОбработка)
	
	
	Возврат; // В УТ обработчик пустой
	
КонецПроцедуры

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

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

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

// Закладка "Доходы"

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

&НаКлиенте
Процедура ПереключательРасшифровкиДоходыКорЧастьПриИзменении(Элемент)
	ПриИзмененииПереключателяРасшифровкиДоходы(ПереключательРасшифровкиДоходыКорЧасть);
КонецПроцедуры

// Закладка "Доходы". Доходы "Без разбиения", активы/пассивы "Без разбиения"

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

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

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

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

// Закладка "Доходы". Доходы "Без разбиения"

&НаКлиенте
Процедура ДоходыПодразделениеБезРазбиенияПриИзменении(Элемент)
	ИмяТЧ = "ПрочиеДоходы";
	ИмяРеквизита = "Подразделение";
	ЗаполнитьРеквизитВТабличнойЧасти(ИмяТЧ, ИмяРеквизита, Элементы[ИмяТЧ].ТекущиеДанные[ИмяРеквизита]);
КонецПроцедуры

&НаКлиенте
Процедура ДоходыНаправлениеДеятельностиБезРазбиенияПриИзменении(Элемент)
	ИмяТЧ = "ПрочиеДоходы";
	ИмяРеквизита = "НаправлениеДеятельности";
	ЗаполнитьРеквизитВТабличнойЧасти(ИмяТЧ, ИмяРеквизита, Элементы[ИмяТЧ].ТекущиеДанные[ИмяРеквизита]);
КонецПроцедуры

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

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

// Закладка "Доходы". Активы/пассивы "Без разбиения"

&НаКлиенте
Процедура ДоходыКорПодразделениеБезРазбиенияПриИзменении(Элемент)
	ИмяТЧ = "ПрочиеДоходы";
	ИмяРеквизита = "КорПодразделение";
	ЗаполнитьРеквизитВТабличнойЧасти(ИмяТЧ, ИмяРеквизита, Элементы[ИмяТЧ].ТекущиеДанные[ИмяРеквизита]);
КонецПроцедуры

&НаКлиенте
Процедура ДоходыКорНаправлениеДеятельностиБезРазбиенияПриИзменении(Элемент)
	ИмяТЧ = "ПрочиеДоходы";
	ИмяРеквизита = "КорНаправлениеДеятельности";
	ЗаполнитьРеквизитВТабличнойЧасти(ИмяТЧ, ИмяРеквизита, Элементы[ИмяТЧ].ТекущиеДанные[ИмяРеквизита]);
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

	РассчитатьИтоговыеПоказатели();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПрочиеДоходыПриИзменении(Элемент)

	РассчитатьИтоговыеПоказатели();

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПрочиеДоходыСуммаПриИзменении(Элемент)
	СуммаПриИзменении(Элемент, "ПрочиеДоходы");
КонецПроцедуры

&НаКлиенте
Процедура ПрочиеДоходыСуммаРеглПриИзменении(Элемент)
	СуммаРеглПриИзменении(Элемент, "ПрочиеДоходы");
КонецПроцедуры

&НаКлиенте
Процедура ПрочиеДоходыСуммаНУПриИзменении(Элемент)
	СуммаНУПриИзменении(Элемент, "ПрочиеДоходы");
КонецПроцедуры

&НаКлиенте
Процедура ПрочиеДоходыПостояннаяРазницаПриИзменении(Элемент)
	ПостояннаяРазницаПриИзменении(Элемент, "ПрочиеДоходы");
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);

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


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

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

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

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


&НаКлиенте
Процедура ОтобразитьСуммыПРИВР(Команда)
		

	Возврат; // В УТ обработчик пустой
	
КонецПроцедуры

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

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

// СтандартныеПодсистемы.Свойства

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

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

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

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

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

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

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

//НаСервере
Функция ЭтоДоходы()

	ХозяйственныеОперацииДоходы = Новый Массив();
	ХозяйственныеОперацииДоходы.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПрочиеДоходы"));
	ХозяйственныеОперацииДоходы.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СторнированиеПрочихДоходов"));
	ХозяйственныеОперацииДоходы.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеклассификацияДоходов"));
	
	Возврат ХозяйственныеОперацииДоходы.Найти(Объект.ХозяйственнаяОперация) <> Неопределено

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

//НаСервере
Функция ЭтоРасходы()

	Возврат Не ЭтоДоходы()

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

//НаСервере
Функция ПолучитьИсточникНастроекНУ()
	
	СписаниеПрочихРасходов = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеПрочихРасходов");
	РеклассификацияРасходов = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеклассификацияРасходов");
	ПередачаПрочихРасходовМеждуФилиалами = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаПрочихРасходовМеждуФилиалами");
	РеклассификацияДоходов = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеклассификацияДоходов");

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

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

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

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

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

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

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

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

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

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

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


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

&НаКлиенте
Процедура ОбработкаПодбора(АдресВоВременномХранилище, ДополнительныеПараметры) Экспорт
	
	Если АдресВоВременномХранилище = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ОбработкаПодбораСервер(АдресВоВременномХранилище);
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ЗаполнитьРеквизитВТабличнойЧасти(ИмяТЧ, ИмяРеквизита, Значение);
	
	Таблица = Объект[ИмяТЧ].Выгрузить(,);
	Таблица.ЗаполнитьЗначения(Значение, ИмяРеквизита);
	Объект[ИмяТЧ].Загрузить(Таблица);
	
КонецПроцедуры

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

&НаСервере
Функция РасходыВСтрокахОдинаковые()
	
	Таблица = Объект.ПрочиеРасходы.Выгрузить(,);
	Таблица.Свернуть("Подразделение, НаправлениеДеятельности, СтатьяРасходов, АналитикаРасходов, ДатаОтражения");
	Возврат (Таблица.Количество() < 2);
	
КонецФункции

&НаСервере
Функция КорРасходыВСтрокахОдинаковые()
	
	Таблица = Объект.ПрочиеРасходы.Выгрузить(,);
	Таблица.Свернуть("КорПодразделение, КорНаправлениеДеятельности, КорСтатьяРасходов, КорАналитикаРасходов");
	Возврат (Таблица.Количество() < 2);
	
КонецФункции

&НаСервере
Функция КорЧастьВСтрокахОдинаковая(ИмяТЧ)
	
	КолонкиСвертки = "КорПодразделение,КорНаправлениеДеятельности,СтатьяАктивовПассивов,АналитикаАктивовПассивов";
	
	Таблица = Объект[ИмяТЧ].Выгрузить(, КолонкиСвертки);
	Таблица.Свернуть(КолонкиСвертки);
	
	Если Таблица.Количество() > 1 Тогда
		Возврат Ложь;
	КонецЕсли;
	
	
	Возврат Истина;
	
КонецФункции

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

&НаСервере
Функция ДоходыВСтрокахОдинаковые()
	
	Таблица = Объект.ПрочиеДоходы.Выгрузить(,);
	Таблица.Свернуть("Подразделение, НаправлениеДеятельности, СтатьяДоходов, АналитикаДоходов, ДатаОтражения");
	Возврат (Таблица.Количество() < 2);
	
КонецФункции

&НаСервере
Функция КорДоходыВСтрокахОдинаковые()
	
	Таблица = Объект.ПрочиеДоходы.Выгрузить(,);
	Таблица.Свернуть("КорПодразделение, КорНаправлениеДеятельности, КорСтатьяДоходов, КорАналитикаДоходов");
	Возврат (Таблица.Количество() < 2);
	
КонецФункции

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

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

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

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

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

&НаКлиенте
Процедура СуммаПриИзменении(Элемент, ИмяТЧ)
	
	ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
	Если ЗначениеЗаполнено(ТекущиеДанные.Сумма) Тогда
		ТекущиеДанные.СуммаУпр = ТекущиеДанные.Сумма;
		ТекущиеДанные.СуммаРегл = ТекущиеДанные.Сумма * КоэффициентПересчетаВВалютуРегл;
		СуммаРеглПриИзменении(Элемент, ИмяТЧ);
		РассчитатьИтоговыеПоказатели();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СуммаРеглПриИзменении(Элемент, ИмяТЧ)
	СтрокаТаблицы = Элементы[ИмяТЧ].ТекущиеДанные;
	Если СтрокаТаблицы.ПринятиеКНалоговомуУчету Тогда
		СтрокаТаблицы.СуммаНУ = СтрокаТаблицы.СуммаРегл;
		СтрокаТаблицы.ПостояннаяРазница = 0;
		СтрокаТаблицы.ВременнаяРазница = 0;
	Иначе
		СтрокаТаблицы.СуммаНУ = 0;
		СтрокаТаблицы.ПостояннаяРазница = СтрокаТаблицы.СуммаРегл;
		СтрокаТаблицы.ВременнаяРазница = 0;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура СуммаНУПриИзменении(Элемент, ИмяТЧ)
	СтрокаТаблицы = Элементы[ИмяТЧ].ТекущиеДанные;
	СтрокаТаблицы.ВременнаяРазница = СтрокаТаблицы.СуммаРегл - СтрокаТаблицы.СуммаНУ - СтрокаТаблицы.ПостояннаяРазница;
КонецПроцедуры

&НаКлиенте
Процедура ПостояннаяРазницаПриИзменении(Элемент, ИмяТЧ)
	СтрокаТаблицы = Элементы[ИмяТЧ].ТекущиеДанные;
	СтрокаТаблицы.ВременнаяРазница = СтрокаТаблицы.СуммаРегл - СтрокаТаблицы.СуммаНУ - СтрокаТаблицы.ПостояннаяРазница;
КонецПроцедуры

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

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

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

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

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

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