Как получить выборку из таблицы значений
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Еще способ.
Выгружаем таблицу в другую ТЗ (если нужна исходная). Далее находим значение ТЗ.найтиЗначение(...), ТЗ.ПолучитьСтрокуПоНомеру(ном), присваиваем его переменной и удаляем текущую строку ТЗ.
Повторяем поиск, пока метод Найтизначение не вернет 0.
Выгружаем таблицу в другую ТЗ (если нужна исходная). Далее находим значение ТЗ.найтиЗначение(...), ТЗ.ПолучитьСтрокуПоНомеру(ном), присваиваем его переменной и удаляем текущую строку ТЗ.
Повторяем поиск, пока метод Найтизначение не вернет 0.
Это решение
lga пишет:
Используй ВК 1С++, объект "ИндексированаяТаблица", для твоей задачи очень подойдет.
Используй ВК 1С++, объект "ИндексированаяТаблица", для твоей задачи очень подойдет.
Согласен.
А связка OdbcRecordSet+ИндексированнаяТаблица+ЙОксель
вот вам и 8.х отчеты.
И скорость работы на несколько порядков выше чем родные построители отчетов.
Это решение
Таблица значений вообще, это буфер в памяти. Его и в цикле быстро обрабатывать. А вообще лучше более гибко организовывать данные, чтобы такие задачи решались просто.
А можно и так, на пример:
Экспромт ...
А можно и так, на пример:
Код |
---|
Функция КусокТаблицыПоЗначениюПоля(Рез,Таб,Поле,ИскЗнач)
// Рез - результирующая таблица
// Таб - та таблица, в которой ищем
// Поле - символьное имя поля, по которому ищем
// ИскЗнач - значение этого поля, по которому ищем
Шаг=Цел(Таб.КоличествоСтрок()/10);
Если Шаг=0 Тогда
Шаг=1;
КонецЕсли;
Таб.Сортировать("+"+Поле);
Поз1=0;
Таб.НайтиЗначение(ИскЗнач,Поз1,Поле);
Если Поз1=0 Тогда
Возврат 0;
КонецЕсли;
Поз2=Поз1+Шаг;
Пока Поз2<=Таб.КоличествоСтрок() Цикл
ТекЗнач=Таб.ПолучитьЗначение(Поз2,Поле);
Если ТекЗнач<>ИскЗнач Тогда
Прервать;
КонецЕсли;
Поз2=Поз2+Шаг;
КонецЦикла;
Поз2=Мин(Поз2,Таб.КоличествоСтрок());
Пока Поз2>Поз1 Цикл
ТекЗнач=Таб.ПолучитьЗначение(Поз2,Поле);
Если ТекЗнач=ИскЗнач Тогда
Прервать;
КонецЕсли;
Поз2=Поз2-1;
КонецЦикла;
Таб.Выгрузить(Рез,Поз1,Поз2);
Возврат 1;
КонецФункции
Показать полностью |
Экспромт ...
Это решение
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот