Как получить выборку из таблицы значений

7. TolikL 15.12.11 12:35 Сейчас в теме
Смотреть Хелп по Таблице Значений из конфигуратора 1С. Там будут описания методов объекта "ТаблицаЗначений"
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. FReIM 8 15.12.11 17:32 Сейчас в теме
В 7.7 временных таблиц нет, так что запросом к ней не обратиться и как правильно было замечено выше, синтаксис помощник и справку в конфигураторе еще никто не отменял.
9. kansler 21.12.11 11:45 Сейчас в теме
(8) FReIM, временных таблиц нет, но в прямой запрос никто не мешает поместить. Правда ч не уверен, что прямым запросом можно будет получить данные быстрее, чем предложенные выше методы.
10. lga 21.12.11 14:45 Сейчас в теме
Используй ВК 1С++, объект "ИндексированаяТаблица", для твоей задачи очень подойдет.
11. k0sm0ss 22.12.11 01:05 Сейчас в теме
Еще способ.
Выгружаем таблицу в другую ТЗ (если нужна исходная). Далее находим значение ТЗ.найтиЗначение(...), ТЗ.ПолучитьСтрокуПоНомеру(ном), присваиваем его переменной и удаляем текущую строку ТЗ.
Повторяем поиск, пока метод Найтизначение не вернет 0.
12. varelchik 22.12.11 10:06 Сейчас в теме
Народ че вы паритесь.
Используйте ИндексированнуюТаблицу.
ТаблицаЗначений это прошлый век.
+ Она жреть больше памяти чем ИТ.
Да и скорость работы с ней на несколько порядков выше.
13. varelchik 22.12.11 10:09 Сейчас в теме
lga пишет:

Используй ВК 1С++, объект "ИндексированаяТаблица", для твоей задачи очень подойдет.


Согласен.
А связка OdbcRecordSet+ИндексированнаяТаблица+ЙОксель
вот вам и 8.х отчеты.
И скорость работы на несколько порядков выше чем родные построители отчетов.
14. 06.08.06 14:05 Сейчас в теме
Имеется большая таблица значений ( не элемент диалога), Как быстро выбрать из нее строки по заданному значению одного из полей, не прибегая к циклу? В 7.7 похоже, таких функций нет, или я что то не понял?
15. support 4485 06.08.06 15:38 Сейчас в теме
Отсортировать по этому полю, найти первое значение, отсортировать в обратном направлении, найти первое значение, выгрузить найденную область в другую таблицу.
16. O-Planet 6432 13.08.06 00:31 Сейчас в теме
Таблица значений вообще, это буфер в памяти. Его и в цикле быстро обрабатывать. А вообще лучше более гибко организовывать данные, чтобы такие задачи решались просто.

А можно и так, на пример:

Код
Функция КусокТаблицыПоЗначениюПоля(Рез,Таб,Поле,ИскЗнач)
// Рез - результирующая таблица
// Таб - та таблица, в которой ищем
// Поле - символьное имя поля, по которому ищем
// ИскЗнач - значение этого поля, по которому ищем
   Шаг=Цел(Таб.КоличествоСтрок()/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;
КонецФункции
Показать полностью



Экспромт ...
17. 18.08.06 06:29 Сейчас в теме
Намудрил.

ТЗ.Сортировать (Поле+ "+");
ТЗ.ВыбратьСтроки();
ТЗ.НайтиЗначение(Знач,А);
ТЗ.Сортировать (Поле+"-");
ТЗ.НайтиЗначение(Знач,В);
С = (ТЗ.КоличествоСтрок() - В + 1);
ТЗ.Сортировать (Поле+ "+");
ТЗ.Выгрузить(ТЗКопия,А,С,);

18. O-Planet 6432 18.08.06 16:45 Сейчас в теме
Давай посмотрим, чей метод быстрее на таблице строк эдак в 50000?
19. CheBurator 3119 20.08.06 18:39 Сейчас в теме
а если искомое значение сотавляет почти всю таблицу... кто будет быстрее?
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот