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

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

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

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

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

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

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);

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

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

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

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

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

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	Оповестить("Запись_РаспределениеДоходовПоНаправлениямДеятельности");

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВариантРаспределенияПоВыбраннымОрганизациямПриИзменении(Элемент)
	
	ВариантРаспределенияПоОрганизациямПриИзменении();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

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

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

	ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Доходы.АналитикаДоходов");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
	
	ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Доходы.НаправлениеДеятельности");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
	
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Не требуется'"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);

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

#Область ПриИзмененииРеквизитов

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

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

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

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

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

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

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

#Область Прочее

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

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

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

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

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

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

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

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

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

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

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

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

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

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