Виды бюджетов / Форма списка / Модуль формы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Процедура ЗаписатьВыбраннуюМодельБюджетирования(Модель)
	ХранилищеНастроекДанныхФорм.Сохранить("Справочник.ВидыБюджетов.Форма.ФормаСписка", "МодельБюджетирования", Модель);
КонецПроцедуры

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

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


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

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