|
Оптимизация иерархии номенклатуры | УТ | ☑ | ||
---|---|---|---|---|
0
Lepexa207
13.05.24
✎
12:53
|
1С:УТ
Здравствуйте, есть такая задача: сделать в "Номенклатуре" так, чтобы поиск отрабатывал не только по группе, в которой находимся, но и по дочерним группам. Я выполнил так, что просто поменял в общем модуле "ПодборТоваровКлиентСервер" с Равно на ВИерархии: &Вместо("УстановитьОтборПоИерархииНоменклатуры") Процедура Расш1_УстановитьОтборПоИерархииНоменклатуры(Форма) Если Не Форма.ИспользоватьФильтры Тогда Возврат; КонецЕсли; Если Не Форма.ВариантНавигации = ПредопределенноеЗначение("Перечисление.ВариантыНавигацииВФормахНоменклатуры.ПоИерархии") Тогда Возврат; КонецЕсли; ОтборПоИерархииНоменклатуры = Форма.ТекущаяИерархияНоменклатуры; ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.СписокНоменклатура, "Родитель", ОтборПоИерархииНоменклатуры, ВидСравненияКомпоновкиДанных.ВИерархии, "Родитель", Истина); КонецПроцедуры При проверке, работа поиска сильно замедлилась. Есть какой-то более оптимальный, универсальный вариант? |
|||
1
maxab72
13.05.24
✎
12:16
|
Попробуй сперва выбрать по иерерхии только вложенные группы, а условие поставь "группыВСписке"
|
|||
2
АгентБезопасной Нацио
13.05.24
✎
12:25
|
(1) можно и все товары по иерархии выбрать, и условие по "в списке"
|
|||
3
Lepexa207
13.05.24
✎
12:50
|
(1) Не особо понял как это сделать, можете прояснить?
|
|||
4
Волшебник
13.05.24
✎
12:54
|
(1) Тогда условие должно быть "Родитель-Равно-СписокГрупп"
(2) Тогда отбор должен быть по полю "Ссылка-ВСписке-СписокСсылок" Автору можно заменить отбор на Ссылка-ВИерархии-Группа, должно стать быстрее |
|||
5
maxab72
13.05.24
✎
13:28
|
(2) Не, так плохо. так надо сперва запросом выбрать элементы. А групп гораздо меньше и поэтому отбирать по Ссылка - ГруппыВСписке - СписокГрупп или Родитель - ВСписке - СписокГрупп будет быстрее чем Ссылка - ВСписке - СписокСсылок.
|
|||
6
Lepexa207
13.05.24
✎
13:57
|
(5) То есть мне надо найти в "ПодборТоваровКлиентовСервер" запрос, где обрабатывается поиск по номенклатуре? Или саморучно написать его?
Я просто понимаю, что вы хотите предложить, я не понимаю где это надо реализовать( |
|||
7
maxab72
13.05.24
✎
15:03
|
(6) Перед этим: "ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка" воткнуть свой запрос с формированием списка групп, а потом в эту функцию все и засунуть.
|
|||
8
Sochinec
14.05.24
✎
08:06
|
Показывать номенклатуру вложенных групп - не то (не помню есть ли такое в УТ но в УНФ точно есть)
|
|||
9
Lepexa207
14.05.24
✎
08:30
|
(8) в УТ как раз такой функции нет, поэтому и появилась потребность в ней
|
|||
10
Lepexa207
14.05.24
✎
09:34
|
(7) Я так и не понял как это в конечном итоге должно выглядеть. Я столкнулся с рядом противоречий, я должен при открытии Номенклатуры менять запрос динамического списка, чтобы он отрабатывал по группе и её иерархии. Если в самой форме менять, то там уже нельзя использовать запрос, и на это ссылается ошибка несуществующего поля "ТекстЗапроса".
Проверить на свойство ТекстЗапроса я не могу, так как работаю с формой, а не объектом элемента. То есть я не могу сделать так: Если Форма.СписокНоменклатура.Свойство("ТекстЗапроса") Тогда Я полностью запутался в реализации задачи D; |
|||
11
Волшебник
14.05.24
✎
09:36
|
(10) Тогда заявление на стол.
|
|||
12
Lepexa207
14.05.24
✎
09:37
|
(11) ахах, забавно👍)
|
|||
13
Мультук
14.05.24
✎
09:52
|
(0)
0) Вы определились с термином "медленно" и "быстро", в миллисекундах, например 1) Так (я понимаю) уже пробовали "вот так" и всё-равно медленно? ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.СписокНоменклатура, "Ссылка", ОтборПоИерархииНоменклатуры, ВидСравненияКомпоновкиДанных.ВИерархии, "Ссылка", Истина); 2) Сколько всего элементов и групп в справочнике номенклатура, а групп? А максимальный уровень вложенности? 3) В зависимости от пункта 2 вы можете почитать вот это и вообще погуглить инфостарт Тогда читаем про транзитивные замыкания https://infostart.ru/1c/articles/158512/ В 99% ваша проблема уже кем-то решалась. |
|||
14
Lepexa207
14.05.24
✎
10:13
|
(13)
(0, 2) Проблема в том, что при заходе в группу, которая наполнена группам, вход занимает около 4-7 секунд, даже с заранее ведённым поиском. У нас 3 группы: [1] Не выгружать - то, что уже не актуально/не нужно на сайте [2] Новые товары - создали номенклатуру - попало сюда [3] Товары - всё, что есть на сайте Их объединяет группа [0] Номенклатура В товарах на данный момент всего 19 групп (1) Поиск работает как надо, зачастую оперативно. Но если можно как-то дать время на написание текста в 1 секунду бездействия, чтобы отработать результат, то было бы славно. Иначе он его с каждой секундой пытается отработать и поиск может зависнуть на первых 4 ведённых символах |
|||
15
Волшебник
14.05.24
✎
10:19
|
(14) Сделайте поиск по кнопке
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |