Таблица Значений отбор по индексу, номеру строки, как найти строки 1-100 #768840


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

В этой группе 1С