Единицы, генерирующие денежные средства / Форма элемента / Модуль формы

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ПриЧтенииСозданииНаСервере();
	УправлениеФормойНаСервере();

	ДатаАктуальности = ТекущаяДатаСеанса();

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)

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

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

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

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

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

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

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

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

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ДатаАктуальностиПриИзменении(Элемент)

	СоставАктивов.Параметры.УстановитьЗначениеПараметра("Период", КонецДня(ДатаАктуальности));
	ОбновитьСтоимостьЕГДС();

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

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

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

	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);

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

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

#Область ИзменениеСоставаОбъектовЕГДС

&НаКлиенте
Процедура ДобавитьАктивыВЕГДС(Команда)
	ПроверитьЕГДСИИзменитьСостав(Истина);
КонецПроцедуры

&НаКлиенте
Процедура ИсключитьАктивыИзЕГДС(Команда)
	ПроверитьЕГДСИИзменитьСостав(Ложь);
КонецПроцедуры

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

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

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

&НаСервере
Процедура УправлениеФормойНаСервере()
	
	Элементы.СоставАктивовДатаВключенияВЕГДС.Формат = "ДЛФ=D;";
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОбновитьСтоимостьЕГДСПоКнопке(Команда)
	ОценкаПроизводительностиКлиент.ЗамерВремени(
	"Справочник.ЕдиницыГенерирующиеДенежныеСредства.Форма.ФормаЭлемента.ОбновлениеСуммовыхПолей");
	
	ОбновитьСтоимостьЕГДС();
КонецПроцедуры

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

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

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