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

файл

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

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


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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ПодключитьОбработчикОжидания("ПроверкаНеобходимостиОтраженияВУчете", 60);
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура РежимНастройкиПравилПриИзменении(Элемент)
	
	УправлениеФормой();
	
КонецПроцедуры

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

&НаКлиенте
Процедура СтатьиБюджетовПриАктивизацииСтроки(Элемент)
	УстановитьДоступностьКоманд(Элементы, "СтатьиБюджетов", "СтатьиБюджетовНастроитьПравила");
КонецПроцедуры

&НаКлиенте
Процедура ПоказателиБюджетовПриАктивизацииСтроки(Элемент)
	УстановитьДоступностьКоманд(Элементы, "ПоказателиБюджетов", "ПоказателиБюджетовНастроитьПравила");
КонецПроцедуры

&НаКлиенте
Процедура ХозяйственныеОперацииПриАктивизацииСтроки(Элемент)
	УстановитьДоступностьКоманд(Элементы, "ХозяйственныеОперации", "ХозяйственныеОперацииНастроитьПравила");
КонецПроцедуры

&НаКлиенте
Процедура СтатьиАктивовПассивовПриАктивизацииСтроки(Элемент)
	УстановитьДоступностьКоманд(Элементы, "СтатьиАктивовПассивов", "СтатьиАктивовПассивовНастроитьПравила");
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ОтразитьВУчете(Команда)
	
	ОтразитьВУчетеНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура НадписьРасписаниеНажатие(Элемент)
	
	ПараметрыФормы = ПараметрыФормыНастройкиРегламентногоЗадания();
	ОткрытьФорму("Обработка.РегламентныеИФоновыеЗадания.Форма.РегламентноеЗадание",
		ПараметрыФормы,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

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

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

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

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

	
	Возврат ВозвращаемоеЗначение;

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПроверкаНеобходимостиОтраженияВУчете()
	
	УправлениеФормой();
	
КонецПроцедуры

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

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

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

&НаКлиентеНаСервереБезКонтекста 
Процедура УстановитьДоступностьКоманд(Элементы, ИмяДинамическогоСписка, ИмяЭлементаФормы)
	
	Если Элементы[ИмяДинамическогоСписка].ТекущаяСтрока = Неопределено
		Или Элементы[ИмяДинамическогоСписка].ТекущиеДанные.ЭтоГруппа Тогда
		Элементы[ИмяЭлементаФормы].Доступность = Ложь;
	Иначе
		Элементы[ИмяЭлементаФормы].Доступность = Истина;
	КонецЕсли;
	
КонецПроцедуры


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

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