|
v7: Найти все элементы справочника по реквизиту Ø (Волшебник 04.04.2023 09:31) | ☑ | ||
---|---|---|---|---|
0
Gera1t
03.04.23
✎
14:52
|
Здравствуйте!
Подскажите пожалуйста, как получить выборку элементов справочника по реквизиту? Через НайтиПоРеквизиту находит только 1. Через запрос тоже. Методом перебора всех элементов справочника долго. |
|||
1
skafandr
03.04.23
✎
15:00
|
ВыбратьЭлементыПоРеквизиту
|
|||
2
Волшебник
03.04.23
✎
15:00
|
ВыбратьЭлементыПоРеквизиту()
|
|||
3
Gera1t
03.04.23
✎
15:01
|
спасибо!
|
|||
4
skafandr
03.04.23
✎
15:01
|
Фраза "Через запрос тоже" честно говоря непонятна. Если правильный запрос, то должен показывать все ...или он там реально один :)
|
|||
5
Волшебник
03.04.23
✎
15:02
|
(4) Наверное, чёрный запрос
|
|||
6
Gera1t
03.04.23
✎
15:03
|
По поводу запроса, самый элементарный.
Но как я понимаю в 7 запросы работают не быстрее чем простой перебор элементов. |
|||
7
Волшебник
03.04.23
✎
15:04
|
(6) Попробуйте прямые запросы к SQL
|
|||
8
Gera1t
03.04.23
✎
15:05
|
(7) Спасибо! Как раз сижу читаю информацию про прямые запросы)
|
|||
9
Злопчинский
03.04.23
✎
15:08
|
если прямые запросы - то юзай 1Sqlite? не надо никаких драйверов и прочего.
обсуждение можно найти здесь же или на форуме 1С++ или здесь у Djelf |
|||
10
Злопчинский
03.04.23
✎
15:09
|
(8) для твоей задачи выбратьпореквизиту самое оно. это будет выборка по индексу, быстро.
прямые запросы для такой простой штуки м.б. излишне напрягаться... |
|||
11
АгентБезопасной Нацио
03.04.23
✎
15:38
|
(9) это если у него файловая...
(10) именно так. Разница в прямом и выборке очень небольшая. |
|||
12
mikecool
03.04.23
✎
16:24
|
(10) это если есть индекс...
|
|||
13
АгентБезопасной Нацио
03.04.23
✎
16:35
|
(10) если он может сделать ВыбратьДокументыПоРеквизиту - значит, у реквизита стоит признак Сортировка. А если стоит признак Сортировка - значит, есть и индекс.
|
|||
14
MWWRuza
гуру
03.04.23
✎
19:40
|
А SQLLite умеет по реквизиту отбирать и без признака "Сортировка" :-)
По скорости правда не сравнивал, но вообще работает. |
|||
15
Злопчинский
03.04.23
✎
19:57
|
(14) ну, если индекса нет - то тупо сканом...?
|
|||
16
MWWRuza
гуру
03.04.23
✎
20:17
|
Ну, я не знаю, сканом или чем, но, в частности я в базе алкогольные марки ищу так:
Функция НайтиМаркуSqlLite(ШК) Экспорт Перем Запрос; Попытка БазаДанных = СоздатьОбъект("SQLiteBase"); Исключение ЗагрузитьВнешнююКомпоненту("1sqlite.dll"); БазаДанных = СоздатьОбъект("SQLiteBase"); КонецПопытки; БазаДанных.Открыть(":memory:"); Запрос = БазаДанных.НовыйЗапрос(); Запрос.ВыполнитьЗапрос("create virtual table Марки using dbeng(Справочник.Марки)"); Текст = "SELECT |code Код, |id [Марка :Справочник.Марки] |FROM Марки |WHERE ismark <> '*'"; Текст = Текст + " |AND КодНовМарк LIKE '%" + СокрЛП(ШК) + "%'"; Попытка Тз = Запрос.ВыполнитьЗапрос(Текст); Исключение Сообщить(ОписаниеОшибки()); Возврат 0; КонецПопытки; Если Тз.КоличествоСтрок() > 0 Тогда ИскМарка = Тз.ПолучитьЗначение(1, "Марка"); Возврат ИскМарка; Иначе Возврат 0; КонецЕсли; КонецФункции КодНовМарк - текстовый реквизит справочника "Марки", без признака "Сортировка". |
|||
17
Злопчинский
03.04.23
✎
21:52
|
не люблю когда возвращаются разнотипные значения. то ссылка, то число
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |