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

Дерево и список на одной форме и отображение в списке только элементов (УФ)

Автор oooo800, 02 мар 2022, 12:54

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

oooo800

Платформа 8.3.19.1467, самописная конфигурация, УФ.
Справочник - "Номенклатура"; форма списка с элементами формы "таблица формы" с реквизитами формы "динамический список" =  "Дерево" и "Список".
Оба реквизиты ссылаются на одну и ту же основную таблицу "Справочник.Номенклатура", соответственно, у "Дерево" - отображение в виде дерева, у "Список" - отображение в виде иерархического списка.

Нужно, чтобы в "Дерево" отображались только группы, в "Список" только элементы.
Причем только те элементы, которые относятся к группе, на которой фокус на "Дерево" .
Это почти так и работает (сразу после создания формы), за исключением - в "Список" отображаются и группы тоже.
Но нужны только элементы.

Как это лучше реализовать ?

Пока нашел вариант с отбором, и, чтобы группы не отображались, нужно "Список" перевести в отображение списка (простого) .
И такой отбор:
Для этого пробую установить отбор:
Отбор = Список.Отбор;
Отбор.Элементы.Очистить();

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

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

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

antoneus

ЭлементОтбора.ПравоеЗначение = Элементы.Дерево.ТекущаяСтрока;
Не?

oooo800

antoneus, не.

Не отбирается.
То есть, при "путешествии" по группам дерева, в списке пусто.

LexaK

oooo800, вот простой пример, с использованием иерархического справочника Склады (можете заменить на свой)
работает как вы и описали, при хождении по строчкам Дерева, в Списке показываются его Элементы
там всего две строчки кода как и писал antoneus
ответ Понравился? (в смысле пригодился?)

oooo800

LexaK, отбор был у меня и по тому и по тому реквизиту также был сделан.
Но этого:
Процедура ДеревоПриАктивизацииСтроки(Элемент)
лкОтбор = Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Элементы[0];
лкОтбор.ПравоеЗначение = элементы.Дерево.ТекущаяСтрока;
КонецПроцедуры
не было сделано.
Спасибо вам antoneus и LexaK добрые люди.

Еще бы, добрые люди чего хорошего порекомендовали по Позиционирование на нужном поле строки Дерева в зависимости от строки Списка

LexaK

oooo800,
ЦитироватьЕще бы, добрые люди чего хорошего порекомендовали по Позиционирование на нужном поле строки Дерева в зависимости от строки Списка
открою вам небольшую тайну! Не все "хотелки" пользователей можно (или надо) реализовывать!
мотивировать можно ограничениями платформы!

просто "забейте" на эту задачу с позиционированием, сообщите пользователям что на данной платформе это реализовать нельзя!
необходимо ждать выход платформы 8.5 или 9.0 !!!
ответ Понравился? (в смысле пригодился?)

oooo800


При переходе на пустой "Список" позиционирование на пустой строке.
Есть возможность ее не "выводить" ?


Цитата: LexaK от 02 мар 2022, 15:50oooo800,
ЦитироватьЕще бы, добрые люди чего хорошего порекомендовали по Позиционирование на нужном поле строки Дерева в зависимости от строки Списка
открою вам небольшую тайну! Не все "хотелки" пользователей можно (или надо) реализовывать!
мотивировать можно ограничениями платформы!

просто "забейте" на эту задачу с позиционированием, сообщите пользователям что на данной платформе это реализовать нельзя!
необходимо ждать выход платформы 8.5 или 9.0 !!!

Вы сможете донести до соответствующих 1Сников, каике "хотелки" нужны и что стоило бы итсправить (например с кнопкой "Выбор" ) ?
Если да, сформулирую, пришлю.
Чтобы даже в 8.4 было уже это реализовано.
Потому что, по моему видению, если бы был параметр таблицы формы - делать кнопки не доступными или скрывать в таких случаях и не криво бы было с "Выбор" и "Скопировать" , так все, что мне нужно "заняло бы 2 галочки" .

LexaK

oooo800, эээ, к 1С-кам я ни как не отношусь, обычный программист,
да и к кнопке Выбор особых претензий нет!
дело в том что платформа не всегда как-то по вашему может реализовать какие-то тонкие нюансы,
работа платформы заточена под 99% часто повторяющихся операций! большинство из всех пользователей нормально работают с кнопкой Выбор.

а в остальных хитровычурных способах работы, в 1С есть возможность (много путей) самому реализовать все что надо с помощью форм, списков, запросов и т.д.

если что то не получается сделать с помощью стандартных (платформенных) механизмов, создайте свой! 
ответ Понравился? (в смысле пригодился?)

oooo800

Значит у меня этот пресловутый 1 %.
У меня, просто нет подписки ИТС.

Кнопка "Выбор" достается доступной на корневом узле дерева, как и кнопка "Скопировать".
Риторический вопрос - что по мнению разработчиков 1С платформы, должно было происходить при нажатии "Скопировать" на "корне".
И, зачем событие "Нажатие", если оно не срабатывает, для поля таблицы формы, даже, если включить гиперссылку ячейки.

При переходе на пустой "Список" позиционирование на пустой строке.
Есть возможность ее не "выводить" ?
Отбором эту "пустую" строку пока не получилось "выключить"!

LexaK

oooo800, да и у меня так же было, когда работал с деревом значений, какие-то стандартные команды/механизмы меня не устраивали,
я убрал стандартные кнопки, добавил свои, перехватил какие-то события (в обработчиках прописал свой код)
и теперь ДЗ работает так как мне надо/удобно.

не зацикливайтесь на стандартных кнопках/механизмах - пишите свои, где надо и как надо.
ответ Понравился? (в смысле пригодился?)

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

Рейтинг@Mail.ru Rambler's Top100

Поиск