![]() |
![]() |
![]() |
|
Как выглядит результат запроса | ☑ | ||
---|---|---|---|---|
0
loader82
16.02.19
✎
11:19
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | Сотрудники.Фамилия, | Сотрудники.Инициалы, | Сотрудники.Оклад, |ИЗ | Справочник.Сотрудники КАК Сотрудники |ГДЕ | Сотрудники.Оклад >= 15000"; РезультатЗапроса=Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Сообщить (Выборка.Фамилия+" "+Выборка.Инициалы+". Оклад: "+Выборка.Оклад+"р."); КонецЦикла; Скажите, будет ли уместной такая аналогия из языка Си: РезультатЗапроса=Запрос.Выполнить(); создает двумерный массив РезультатЗапроса с 3мя столбцами и n-строками (по количеству элементов отвечающих условию ГДЕ) Выборка = РезультатЗапроса.Выбрать(); - что-то вроде задания переменной для счетчика строк i=0; Выборка.Следующий() - все равно что i++, но еще и возвращает значение Ложь если строки закончились И раз в цикле Пока Выборка.Следующий() мы можем обратиться к конкретному элементу по Выборка[j], то выходит Выборка[j] - аналог РезультатЗапроса[i][j] из Си? Правильно ли так называть - мне пока не важно, пока просто хочется получить менее абстрактное представление того, что происходит при выполнении этих команд. |
|||
1
palsergeich
16.02.19
✎
11:21
|
Выборка это курсор.
|
|||
2
palsergeich
16.02.19
✎
11:23
|
Почему может не работать конструкция Запрос.Выполнить()..Выгрузить() ?
В этой теме в конце |
|||
3
ДенисЧ
16.02.19
✎
11:28
|
(0) нет, это неправильное представление
|
|||
4
palsergeich
16.02.19
✎
11:29
|
[i][j] колонки именованные.
Так не выйдет. |
|||
5
palsergeich
16.02.19
✎
11:30
|
I ,j - это имена колонок, а не их порядок
|
|||
6
loader82
16.02.19
✎
11:33
|
Я имел в виду что если мне нужен элемент скажем 3й строки, 2го столбца, то в Си к нему можно было бы обратиться через РезультатЗапроса[2][1], а в 1с: дождаться пока Выборка.Следующий() опустится до 3й строки, затем обратиться через Выборка[1].
|
|||
7
loader82
16.02.19
✎
11:37
|
(6) Или обращение в Си шло через [i;j], а не [i][j] - тут уж, простите, не помню.
|
|||
8
ДенисЧ
16.02.19
✎
11:38
|
(6) ц выборкииззапроса нет столбйов и строк
|
|||
9
ДенисЧ
16.02.19
✎
11:39
|
Поднимись на уровень с++ и ты увидишь там IIterable - вот это оно и есть
|
|||
10
loader82
16.02.19
✎
11:43
|
(8) Чем тогда было заполнение массива нулями array[i][j]=0;
через цикл for (i=0; i<n; i++), и аналогичный вложенный для j? |
|||
11
ДенисЧ
16.02.19
✎
11:50
|
(10) Исчо (с) раз.
Выборка - это не массив. Это итератор. |
|||
12
palsergeich
16.02.19
✎
11:51
|
(7) сли тебе нужна 3 строка 2 колонка используй не выборку а таблицу значений, то есть вместо Выбрать - Выгрузить
|
|||
13
palsergeich
16.02.19
✎
11:52
|
В ТЗ ты можешь это делать
|
|||
14
loader82
16.02.19
✎
11:52
|
(11) Я и не говорю что Выборка - массив. А говорю что Выборка хранит значение строки на которой сейчас находимся, или что-то вроде этого. Все равно не верно?
|
|||
15
palsergeich
16.02.19
✎
11:53
|
(12) Хотя может я вру про колонки)
|
|||
16
Franchiser
гуру
16.02.19
✎
11:55
|
Выборка не хранит номер строки. Нет определенного порядка строк в выборке, каждый раз может быть разный порядок строк.
|
|||
17
palsergeich
16.02.19
✎
11:55
|
И выборка ничего не знает о предыдущей строке и о последующей
|
|||
18
palsergeich
16.02.19
✎
11:56
|
И колонки не нумерованы, а именованы
|
|||
19
palsergeich
16.02.19
✎
11:57
|
Для простоты выборка как структура.
Ты можешь эту коллекцию перебрать переборщиком, можешь обратиться к жлементу по идентификатору, но номера позиции нет |
|||
20
loader82
16.02.19
✎
11:58
|
(12) С ТЗ и выгрузкой уже поигрался - да, там все в более привычном для меня виде представлено. Я просто не пойму в чем принципиально отличается проход результата запроса через Выборка.Следующий() [ставим "курсор" на следующую строку и можем обратиться к полю в этой строке] и проходом таблицы через цикл for. Я рассматриваю сценарий когда мне не нужен какой-то конкретный элемент, а я просто прохожу по всему результату запроса, выполняя попутно какие-то действия в цикле.
|
|||
21
Franchiser
гуру
16.02.19
✎
11:58
|
По номеру колонки можно тоже отбращаться
|
|||
22
ДенисЧ
16.02.19
✎
11:59
|
(16) Неправда. В выборке порядок строк зависит от запроса.
|
|||
23
palsergeich
16.02.19
✎
12:00
|
(21) Сорри, да можешь. Глянул справку.
ВыборкаИзРезультатаЗапроса (QueryResultSelection) ВыборкаИзРезультатаЗапроса (QueryResultSelection) Элементы коллекции: Произвольный Возможно обращение к полю выборки посредством оператора [...]. В качестве аргумента передается индекс (нумерация с 0) или имя поля выборки. Приношу извинения |
|||
24
Franchiser
гуру
16.02.19
✎
12:00
|
(22) если нет order by то нет. Порядок зависит от плана запроса, нельзя гарантировать что он будет постоянным.
|
|||
25
ДенисЧ
16.02.19
✎
12:00
|
(24) А причём тут выборка? Я ж говорю - от запроса зависит.
|
|||
26
loader82
16.02.19
✎
12:01
|
(16) Я понимаю что выборка - не числовое значение. Но если в тексте запроса я укажу "Выбрать поле1, поле2, поле3 Из", то Выборка[0] мне выдаст поле1 в этой строке, Выборка[1] - поле 2 и тд. А могу Обратиться через Выборка.поле1.
|
|||
27
Franchiser
гуру
16.02.19
✎
12:04
|
(25) в моем понимании порядок уже зафиксирован в результате запроса, а выборке нет понятия порядка. Ну, могу ошибаться.
|
|||
28
ДенисЧ
16.02.19
✎
12:55
|
(27) Выборка перебирается в том порядке, что отдаёт запрос. И никакого понимания тут не нужно.
|
|||
29
Конструктор1С
16.02.19
✎
15:15
|
Синтаксик-помощник не предлагать?
|
|||
30
TormozIT
гуру
16.02.19
✎
17:35
|
Результат запроса - данные полученные из СУБД в памяти процесса 1С, представленные в компактном (сыром) виде. ВыборкаИзРезультатаЗапроса - итератор, который для каждого элемента этих данных в памяти процесса 1С создает объектную обвязку. Результат запроса в памяти по моим представлениям занимает в несколько раз меньше места чем таблица значений, полученная из него методом Выгрузить().
|
|||
31
hhhh
16.02.19
✎
18:08
|
(28) нет, там куча выборок, обход прямой, обход кривой, найти следующий по значению поля, обход по группировкам в одну сторону, в другую сторону, в общем запрос один, а выборок из него целая куча.
|
|||
32
vi0
16.02.19
✎
20:12
|
(30) откуда такие выводы?
|
|||
33
TormozIT
гуру
17.02.19
✎
02:13
|
(30) Из ответов 1С
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |