|
Таблица Значений отбор по индексу, номеру строки, как найти строки 1-100 | ☑ | ||
---|---|---|---|---|
0
assest
30.03.16
✎
14:08
|
Мне необходимо отправить в функцию строки таблицы с 1 по 99, с 100 по 199 и т.д. Получить строки с помощью
ТЗ.НайтиСтроки(отбор) нельзя, т.к. Индекс это не поле таблицыи там нельзя указать диапазон. ТЗ[1-99] тоже не работает([1,99] и [1 99] также не работает) Вопрос: как получить строки таблицы значений с 1 по 99 без цикла? |
|||
1
dimaldinho
30.03.16
✎
14:09
|
поместить во временную таблицу, потом выбрать первые 100
|
|||
2
assest
30.03.16
✎
14:09
|
(1) А вторые сто?
|
|||
3
assest
30.03.16
✎
14:10
|
И третии?
|
|||
4
ViSo76
30.03.16
✎
14:12
|
(0) Топикастр-а нужно отправить на обследование на предмет профпригодности.
(1) Сегодня не пятница |
|||
5
zladenuw
30.03.16
✎
14:13
|
(0) Зачем ?
|
|||
6
dimaldinho
30.03.16
✎
14:14
|
Если ТвояТаблицаОтсортированаПоПолюНоменклатура Тогда
Выбрать Первые 100 Где Номенклатура > Таблица[99].Номенклатура Иначе помещать все выбранные в исключаемый массив и добавить ГДЕ НЕ Номенклатура в ИсключаемыйМассив конецесли |
|||
7
zladenuw
30.03.16
✎
14:15
|
(3) а подумать. это же запрос. создаешь поле индекс. что бы оно было в запросе и делаешь по нему фильтрацию
|
|||
8
Живой Ископаемый
30.03.16
✎
14:19
|
получить те которые меньше 100 можно?
|
|||
9
zladenuw
30.03.16
✎
14:19
|
(8) у него шаг есть. можно вот этим воспользоваться и написать запрос. который по шагу будет формировать пакеты. а у же их можно получить
|
|||
10
assest
30.03.16
✎
14:20
|
(7) Ладно, сделаю через временную таблицу с доп полем и индексом.
Просто никогда рагьше не требовалось получить диапазон строк, и мне казалось что это тривиальная задача, которая не требует таких ухищрений. |
|||
11
zladenuw
30.03.16
✎
14:21
|
(10) где ухищрение ? у тебя есть объект таблица значений. если тебе не хватает ее методов. пиши свой.
|
|||
12
assest
30.03.16
✎
14:21
|
Может я щегото не понимаю в объекте "Таблица значений", и такая идея в принципе не возможна?
|
|||
13
Живой Ископаемый
30.03.16
✎
14:21
|
просто если сравнение на меньше в отборе работает - то сдлеать копию, получать каждый раз те, индекс которых меньше 100, обрабатывать, удалять, и так до тех пор, пока Количество() не равно 0
|
|||
14
assest
30.03.16
✎
14:21
|
(11) Полчить строку номер 5 можно по методу получить, получить 5 и 6 нельзя
|
|||
15
Nuobu
30.03.16
✎
14:22
|
(0) Можно создать какое-то поле Выразить(ИндексНомерСтроки / 100 КАК Число(10,0)) КАК ПолеПоиска.
И искать по этому полю. Но прислушайся к другим комментаторам. |
|||
16
assest
30.03.16
✎
14:22
|
(13) ПолучитьСтроки отбор только по равенству
|
|||
17
assest
30.03.16
✎
14:23
|
(15) А это вариант, без доп запросов
|
|||
18
zladenuw
30.03.16
✎
14:23
|
(13) можно в СКД и все что хочешь там есть
|
|||
19
zladenuw
30.03.16
✎
14:23
|
(18) и там как раз можно лупить любой отбор
|
|||
20
Рэйв
30.03.16
✎
14:23
|
Для н=0 По 98 Цикл
Отправить(ТЗ[н]) КонецЦикла; ну и так далее |
|||
21
zladenuw
30.03.16
✎
14:24
|
(20) о да. у нас 1 млн записей. при разных условий разные шаги. и какая будет скорость. тут запрос нужен
|
|||
22
Рэйв
30.03.16
✎
14:25
|
(21)при 1 млн записей хоть запросом хоть как будет ж@па
|
|||
23
zladenuw
30.03.16
✎
14:25
|
(17) бери скд и подсовуй ему внешний источник данных. добавляешь программно отбор по шагам. и выводишь обратно в тз. у тебя тз будет уже с отборами
|
|||
24
assest
30.03.16
✎
14:25
|
(20) Мне нужно отправить Разом все строки из диапазона, а не по одной строке
|
|||
25
zladenuw
30.03.16
✎
14:25
|
(22) тут только пробовать. но запрос будет быстрее. если он правильно написан. он уйдут на скуль.
|
|||
26
Рэйв
30.03.16
✎
14:25
|
мой способ наверное даже будет быстрее:-) Потому что не надо всю эту кучу грузить в запрос и отбирать
|
|||
27
Рэйв
30.03.16
✎
14:26
|
(24)Собери их в массив и отправь разом
|
|||
28
Timon1405
30.03.16
✎
14:26
|
а что за ограничение на неиспользование циклов?
М= новый Массив; Для Сч=1 по 99 Цикл М.Добавить(ТЗ[Сч-1]); КонецЦикла; ТЗ_Новая = ТЗ.Скопировать(М); так не пойдет что ли? |
|||
29
Timon1405
30.03.16
✎
14:27
|
*цикл по 100
|
|||
30
assest
30.03.16
✎
14:29
|
И так я уточню вопрос, придумать свой метод получить 100 конкретных по номеру строк я могу. Вопрос если типовой метод, который я упустил типа "Получить(get)" только не по 1 индексу а подиапазону
|
|||
31
assest
30.03.16
✎
14:30
|
Но видимо такого метода нет, так что вопрос можно считать зкрытым
|
|||
32
Elatiell
30.03.16
✎
14:35
|
А почему нельзя исходную табличку распарсить по сотням? например у первых 100 будет 1, у вторых 100 2 и т.д. В таком случае можно воспользоваться ТЗ.НайтиСтроки(отбор). И не надо городить циклы, запросы, запросы в цикле, т.к. иначе сделать то что написано в 1 не сделать... ну и прочую чухню.
|
|||
33
assest
30.03.16
✎
14:37
|
(32)этот способ уже предлагали (15), да это хороший вариант. Я просто искал вариант типа "Получить(индекс) " или метода []
|
|||
34
Elatiell
30.03.16
✎
14:38
|
(33) Извиняюсь, проглядел.
|
|||
35
assest
30.03.16
✎
17:05
|
К стати запрос с нумерацией строк отдельная песня
Вот она ------------------------------------ ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, Выразить(КОЛИЧЕСТВО(Номенклатура_1.Ссылка)Как Число(10,0) КАК Номер ИЗ Справочник.Номенклатура КАК Номенклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура_1 ПО Номенклатура.Наименование >= Номенклатура_1.Наименование СГРУППИРОВАТЬ ПО Номенклатура.Ссылка УПОРЯДОЧИТЬ ПО Номенклатура.Наименование |
|||
36
assest
30.03.16
✎
17:07
|
ВЫБРАТЬ
Номенклатура.Ссылка КАК Номенклатура, Выразить(КОЛИЧЕСТВО(Номенклатура_1.Ссылка)/100 Как Число(10,0) КАК Номер ИЗ Справочник.Номенклатура КАК Номенклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура_1 ПО Номенклатура.Наименование >= Номенклатура_1.Наименование СГРУППИРОВАТЬ ПО Номенклатура.Ссылка УПОРЯДОЧИТЬ ПО Номенклатура.Наименование |
|||
37
Timon1405
30.03.16
✎
17:18
|
Сколько будет работать этот запрос, если в базе порядка 1-10млн номенклатур (например,автозапчасти)?
|
|||
38
ViSo76
30.03.16
✎
17:22
|
(36) Это перемножение, которое ресурсоёмко. Не нужно решать небольшую проблему через задний проём.
Напиши функцию, которая бы вернула массив ссылок на строки таблицы, на входе номер окна на выходе массив. Функция ...( НомерОкна, РазмерОкана = 100 ) |
|||
39
zladenuw
30.03.16
✎
17:44
|
(36) ужас. Книга знаний: Нумерация строк в запросе
|
|||
40
Nuobu
30.03.16
✎
17:50
|
(39) Так он, ведь, то же самое сделал.
(35) Ты множишь таблицу саму на себя. Если у тебя записей 100, то станет 10000 и не важно, что в конце концов получаешь только 100 пронумерованых записей. Лучше пронумеруй уже полученную таблицу. |
|||
41
assest
30.03.16
✎
17:54
|
(40) 1100 строк ~2 секунды, больше 10 000 никогда не будет, и 6 000 весьма вряд ли
|
|||
42
Nuobu
30.03.16
✎
17:57
|
(41) Тебе говорят о нагрузке на скуль вообще, а не в твоём конкретном случае.
|
|||
43
assest
30.03.16
✎
18:05
|
Мне привели пример, и я сказал что это не мой случай,
|
|||
44
Карупян
30.03.16
✎
18:31
|
ОбработатьТЗ(ТЗ, НачСтрока, КонСтрока)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |