УстановитьОтборПоЗначениюВТекущейКолонке (БСП)

Автор: 1С
ОбщийМодуль.ЖурналРегистрацииКлиент
БСП

Установить отбор по значению текущей колонке. Заполняет отбор в соответствии с значением в текущей колонке событий.

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

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

Рекомендации

Похожие публикации

УстановитьЗначенияОтборовНаУзле (БСП)

Открытие значения текущей строки колонки ТабличногоПоля на УФ

Установить отбор пользовательских настроек динамического списка

УстановитьПризнакЗавершитьВсеСеансыКромеТекущего (БСП)

УстановитьФиксированныеОтборы (БСП)

УстановитьПараметрРаботыРасширения (БСП)

РазличияЗначенийКолонки (БСП)

Отбор по таблице значений

ДобавитьИтераторТаблице

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз