Журнал регистрации / Разделение данных сеанса / Модуль формы

файл
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2024, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

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

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

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

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

&НаКлиенте
Процедура ОтметитьВсе(Команда)
	Для Каждого ЭлементСписка Из РазделениеДанныхСеанса Цикл
		ЭлементСписка.Флажок = Истина;
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура СнятьФлажки(Команда)
	Для Каждого ЭлементСписка Из РазделениеДанныхСеанса Цикл
		ЭлементСписка.Флажок = Ложь;
	КонецЦикла;
КонецПроцедуры

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

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

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

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