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

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

&НаКлиенте
Процедура ПодборОстатковИсточника(Команда)
	
	ПодборОстатков("Источник");
	
КонецПроцедуры

&НаКлиенте
Процедура ПодборОстатковПолучателя(Команда)
	
	ПодборОстатков("Получатель");
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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