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

Сортировка по определенному реквизиту справочника в динамическом списке, но внутри отбора ЭлементОтб

Автор oooo800, 20 сен 2025, 22:40

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

oooo800

Самописная конфмгурация на УФ, платформа 1С:Предприятие 8.3.27.1644.

Самый простой справочник, у которого есть реквизиты: Код, Наименование, Модель,  ДатаВремяСоздания (тип Дата - Дата и время) .
У него форма выбора с динамическим списком.

При открытии формы туда передается значение реквизита, например реквизита "Модель", по которому установлено условное оформление - выделяются другим цветом строки - элементы с соответствующим значением реквизита, полученным при открытии формы.

Хотелось чтобы:
1. в динамическом списке вверху располагались все элементы, значение реквизита "Модель" которых было бы равно переданному в форму.
При этом была бы сортировка по реквизиту "ДатаВремяСоздания " в порядке возрастания.
И чтобы текущим был элемент с самой максимальной датой.
2. далее в динамическом списке располагались бы все элементы, у которых значение реквизита "Модель" НЕ было бы равно переданному в форму.
При этом была бы сортировка: по реквизиту "Наименование" или "Код" в порядке возрастания.


Например, в форму передано Наименование = "узел254" :
узел254 - 10.08.2025 10:12:10
узел254 - 10.08.2025 10:15:34
узел254 - 20.08.2025 15:08:00
узел254 - 01.09.2025 08:05:20 <= текущий элемент
узел111 - 10.08.2025 11:11:10
узел111 - 11.08.2025 22:22:20
узел720 - 01.08.2025 00:17:17
узел900 - 05.09.2025 03:30:30

Как это возможно программно сделать ?


sali

то бишь тебе нужно два списка?
у модели что за значение?
Цитата: oooo800 от 20 сен 2025, 22:40значение реквизита "Модель" которых было бы равно переданному в форму.
При этом была бы сортировка по реквизиту "ДатаВремяСоздания " в порядке возрастания.
можно добавить реквизит булево для отслеживания Модели. в запросе написать, примерно такое
выбор когда Значение реквизита = значению модели тогда
вспомогательный реквизит = истина
иначе
вспомогательный реквизит = ложь
а потом сортировать по нужному полю

antoneus


oooo800

Список один.

Ситуация немного сложнее.

Форма выбора справочника "Узлы" вызывается из элемента другого справочника "Изделия", нажатием кнопки "Открыть" поля формы.
У справочника  "Узлы", помимо реквизитов Код, Наименование, Модель,  ДатаВремяСоздания, есть еще другие реквизиты, например: Артикул, Ревизия, Вид и так далее.
У справочника "Изделия" есть почти все реквизиты, которые есть в справочнике "Узлы" , кроме "ДатаВремяСоздания" , в том числе: Модель, Комплектность, Ревизия, Вид и есть только "свои" реквизиты.

При нажатии на "Открыть" на поле формы реквизита "Модель" вызывается форма выбора справочника "Узлы" и туда передается имя реквизита - "Модель" и его текущее, "старое" значение.
После выбора элемента - узла, в поле из которого была "вызвана" форма выбора подставляется соответствующее значение реквизита "Модель" справочника "Узлы".
Аналогично, для других реквизитов "Изделий" , например при нажатии на "Открыть" поле формы "Ревизия" справочника "Изделия" вызывается форма выбора справочника "Узлы" и после выбора нужного элемента - узла, в поле формы "Ревизия" справочника "Изделия" подставляется значение из реквизита "Ревизия" справочника "Узлы".


То есть в форму выбора передаются: имя "нужного" реквизита и его "старое" значение.
Соответственно, какой реквизит будет передан, не известно.

Хотелось бы, чтобы при открытии формы выбора "Узлов" в его списке сначала были элементы со значением выбранного - переданного реквизита, отсортированные по дате создания, по возрастанию, а потом все остальные элементы в алфавитном порядке или "Наименования" или того же выбранного - переданного реквизита и по дате создания по убыванию.


То есть получается: 1 список - 2 группировки элементов, отсортированные: сначала со значением переданного реквизита, потом все остальные. И в каждой группе своя сортировка.


Пока только вижу один способ, но по мне, он не реализуем.

Добавить в список формы выбора "Узлы" столбец "ПорядковыйНомер", но НЕ связанный ни с каким реквизитом объекта метаданных - "виртуальный" реквизит.
При открытии формы выбора - в "ПриСозданииНаСервере" формы или в "СписокПриПолученииДанныхНаСервере" списка запросом получаем все элементы и упорядочиваем их как надо, а потом в цикле или как-то еще заполнить значение "ПорядковыйНомер"от 1 до ... для элементов, в порядке, полученных запросом.

Но здесь вижу 2 НО:
1. "ПорядковыйНомер" это временный реквизит/ столбец  - при закрытии формы выбора он "обнуляется"
2. его значения у каждого пользователя может быть разное - один открывает формы выбора на "Модели" , другой на "Ревизии" , третий на "Модели" , но другой, нежели первый и так далее.

В итоге так и не смог "прицепить" такой витупдльный столбец к списку.
А при произвольном запросе не указать сложные правила "УПОРЯДОЧИТЬ" и не передать неизвестный заранее реквизит, например:
УПОРЯДОЧИТЬ ПО
              (ВЫБОР КОГДА &ИмяРеквизита = &ЗначениеРеквизита ТОГДА
                           &ИмяРеквизита   
                     ИНАЧЕ
                           наименование
                     КОНЕЦ ВОЗР

НУ и добавить по возрастанию или убыванию даты создания.
Хотя. может реквизит - его имя, может и передать.
Но такие условия в произвольный запрос не поместить - ошибка, что "УПОРЯДОЧИТЬ" надо указывать на соответствующей закладке.


sali


oooo800


sali

oooo800, запрос есть запрос
уточню ,
Цитата: oooo800 от 20 сен 2025, 22:40полученным при открытии формы.
это человек сам выбирает?
Цитата: oooo800 от 22 сен 2025, 10:43например при нажатии на "Открыть" поле формы "Ревизия" справочника "Изделия" вызывается форма выбора справочника "Узлы" и после выбора нужного элемента - узла, в поле формы "Ревизия" справочника "Изделия" подставляется значение из реквизита "Ревизия" справочника "Узлы".

это форма отбора. ее можно настроить по-разному.
например, https://www.koderline.ru/expert/instruktsii/article-obychnye-formy-otbor/
например, https://forum.mista.ru/topic/836415
например, https://infostart.ru/1c/articles/1233756/

oooo800

Цитата: sali от 22 сен 2025, 13:25oooo800, запрос есть запрос
уточню ,
Цитата: oooo800 от 20 сен 2025, 22:40полученным при открытии формы.
это человек сам выбирает?
Цитата: oooo800 от 22 сен 2025, 10:43например при нажатии на "Открыть" поле формы "Ревизия" справочника "Изделия" вызывается форма выбора справочника "Узлы" и после выбора нужного элемента - узла, в поле формы "Ревизия" справочника "Изделия" подставляется значение из реквизита "Ревизия" справочника "Узлы".

это форма отбора. ее можно настроить по-разному.
например, https://www.koderline.ru/expert/instruktsii/article-obychnye-formy-otbor/
например, https://forum.mista.ru/topic/836415
например, https://infostart.ru/1c/articles/1233756/


С какого поля формы справочника "Изделия" открывать форму выбора "Ущлы" выбирает пользователь.
Соответственно, и на форму выбора прилетает имя и значение реквизита, выбранного пользователем.

sali

oooo800, чего блях?? то есть у меня на форме 100 реквизитов и все они поле ввода. и в какой ни тыкну все должны открывать форму другого спр?

antoneus


Теги:

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

Рейтинг@Mail.ru

Поиск