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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура УстановитьСтатусВПодготовке(Команда)
	
	УстановитьСтатус("ВПодготовке", НСтр("ru = 'В подготовке'"));
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьСтатусНаУтверждении(Команда)
	
	УстановитьСтатус("НаУтверждении", НСтр("ru = 'На утверждении'"));
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьСтатусУтвержден(Команда)
	
	УстановитьСтатус("Утвержден", НСтр("ru = 'Утвержден'"));
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьСтатусОтменен(Команда)
	
	УстановитьСтатус("Отменен", НСтр("ru = 'Отменен'"));
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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