Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
08 ноя 2024, 05:16

Изменение вида списка

Автор Nosferatu112, 02 мая 2023, 09:48

0 Пользователей и 1 гость просматривают эту тему.

Nosferatu112

Как сделать кнопку которая будет менять вид списка между список и древо? когда я в ручную в конфигураторе у списка меняю отображение ни чего не меняеться програмно тоже всё остаёться так же что я делаю не так?
&НаКлиенте
Процедура ВидИерархия(Команда)

Если Не ВидИерархия Или ОтображатьСтруктуруПредприятия Тогда
ВидИерархия = Истина;
ОтображатьСтруктуруПредприятия = Ложь;
ОбработатьИзменениеВидаСписка();
КонецЕсли;

ПодключитьОбработчикОжидания("ПриИзмененииСохраняемойНастройки", 0.2, Истина);

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

&НаКлиенте
Процедура ВидСписок(Команда)

Если ВидИерархия Или ОтображатьСтруктуруПредприятия Тогда

ВидИерархия = Ложь;
ОтображатьСтруктуруПредприятия = Ложь;

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

ОбработатьИзменениеВидаСписка();

КонецЕсли;

ПодключитьОбработчикОжидания("ПриИзмененииСохраняемойНастройки", 0.2, Истина);

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

&НаСервере
Процедура ОбработатьИзменениеВидаСписка()

ОбработатьОтображениеРежимаИерархии(ЭтотОбъект);

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ОбработатьОтображениеРежимаИерархии(Форма)

Элементы = Форма.Элементы;

Элементы.ФормаВидИерархия.Пометка = Форма.ВидИерархия И Не Форма.ОтображатьСтруктуруПредприятия;
Элементы.ФормаВидСписок.Пометка = Не Форма.ВидИерархия И Не Форма.ОтображатьСтруктуруПредприятия;

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтборГруппПодразделений(Список, ВидИерархия, УстановленОтборПоОрганизации = Неопределено)

Если УстановленОтборПоОрганизации = Неопределено Тогда

НастройкиОтборовСписка = НастройкиСписка(Список);
УстановленОтборПоОрганизации = НастройкиОтборовСписка.УстановленОтборПоОрганизации;

КонецЕсли;

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

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

&НаКлиентеНаСервереБезКонтекста
Функция НастройкиСписка(Список)

Настройки = Новый Структура;

Настройки.Вставить("ОтборПоОрганизации", Неопределено);

Настройки.Вставить("УстановленОтборПоОрганизации", Ложь);
Настройки.Вставить("УстановленОтборПоПодразделению", Ложь);

КоллекцияОтборов = Новый Массив;
КоллекцияОтборов.Добавить(Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор.Элементы);
КоллекцияОтборов.Добавить(Список.КомпоновщикНастроек.Настройки.Отбор.Элементы);
КоллекцияОтборов.Добавить(ПользовательскиеОтборы(Список));

Для каждого ЭлементыОтбора Из КоллекцияОтборов Цикл

Для каждого ЭлементОтбора Из ЭлементыОтбора Цикл

Если ТипЗнч(ЭлементОтбора) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;

Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подразделение") Тогда
Настройки.УстановленОтборПоПодразделению = ЭлементОтбора.Использование;
КонецЕсли;

Если ЭлементОтбора.Использование
И ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Владелец") Тогда

Настройки.УстановленОтборПоОрганизации = Истина;
Настройки.ОтборПоОрганизации = ЭлементОтбора.ПравоеЗначение;

КонецЕсли;

КонецЦикла;

КонецЦикла;

Возврат Настройки;

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

&НаКлиентеНаСервереБезКонтекста
Функция ПользовательскиеОтборы(Список)

ПользовательскиеОтборы = Неопределено;
Для каждого ЭлементПользовательскихНастроек Из Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл

Если ТипЗнч(ЭлементПользовательскихНастроек) = Тип("ОтборКомпоновкиДанных") Тогда
ПользовательскиеОтборы = ЭлементПользовательскихНастроек;
Прервать;
КонецЕсли;

КонецЦикла;

Если ПользовательскиеОтборы = Неопределено Тогда
КоллекцияЭлементов = Новый Массив;
Иначе
КоллекцияЭлементов = ПользовательскиеОтборы.Элементы;
КонецЕсли;

Возврат КоллекцияЭлементов;

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

&НаКлиенте
Процедура ПриИзмененииСохраняемойНастройки()

Если Не СохранитьРежимОтображенияСпискаПриЗакрытии Тогда

Настройки = СохраняемыеНастройки();
Настройки.ВидИерархия = ВидИерархия;
Настройки.ОтображатьСтруктуруПредприятия = ОтображатьСтруктуруПредприятия;

СохранитьНастройкиНаСервере(Настройки);

КонецЕсли;
ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция СохраняемыеНастройки()

Настройки = Новый Структура("ВидИерархия,ОтображатьСтруктуруПредприятия");
Возврат Настройки;

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

&НаСервереБезКонтекста
Процедура СохранитьНастройкиНаСервере(Настройки)

Для Каждого КлючИЗначение Из Настройки Цикл
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("СписокПозицийШтатногоРасписания", КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск