Имя: Пароль:
1C
1С v8
Как получить не массив, а список значений
0 Мисти
 
08.04.18
21:36
Рез = Запрос.Выполнить().Выгрузить();
СписокЗаказов = Рез.ВыгрузитьКолонку("ЗаказПокупателя") - так массив получается
понятно, что можно в Цикле записать, но, наверное, какая-то формула есть?
1 novichok79
 
08.04.18
21:37
ОфигенныйСписок = Новый СписокЗначений;
ОфигенныйСписок.ЗагрузитьЗначения(Рез.ВыгрузитьКолонку("ЗаказПокупателя"));
2 Мисти
 
08.04.18
21:45
Спасибо! Надо выучить, наконец!
А обратно? Из списка в массив?
3 zwei
 
08.04.18
22:09
Это экзамен на знание нами синтакс-помощника?
4 Мисти
 
08.04.18
22:10
А я не знаю, как ему задать вопрос!
5 zwei
 
08.04.18
22:15
Это многое обьясняет.

На вкладке "Индекс" ввести "СписокЗначений". Перейти на описание объекта и прочитать про его методы.
6 Вася Теркин
 
09.04.18
05:21
Список значений это и ест массив. только индексированный.
7 Sserj
 
09.04.18
05:35
(6) Ты уверен что в 1С список значений реализован именно на базе массива а не связанны список к примеру?
8 VladZ
 
09.04.18
05:56
(6) Список значений - это список значений. А массив - это массив.
9 Провинциальный 1сник
 
09.04.18
06:15
(7) Объект "массив" в 1с и массив например в си - две разные вещи. В 1с нет адресной арифметики, и говорить о том, как там внутри, не имеет смысла. В 1с и массив, и список значений - это коллекции с итератором. Просто в массиве хранятся непосредственно значения, а в списке дополнительно реализовано хранение представления элемента вместе со значением в специальной структуре.
10 Sserj
 
09.04.18
07:45
(9) Ну допустим в Java тоже нет адресной арифметики и тем не менее массив это именно выделенная область и тоже есть итератор. А рассуждать что там внутри 1С-ных списков очень даже имеет смысл и больше того полезно.
Достаточно вспомнить плюсы и минусы реализации списков на базе массивов и связанных списков. Понять что там на самом деле довольно просто - создать список на пару миллионов элементов и замерить скорость вставки в произвольную позицию и скорость получения по индексу.
11 Провинциальный 1сник
 
09.04.18
07:57
(10) Вряд ли есть смысл в различной реализации. И массивы, и СЗ в 1с используются практически одинаково. Поэтому логично сделать один базовый класс у них.
12 novichok79
 
09.04.18
08:42
(2) если ЗагрузитьЗначения загружает, то логично, что ВыгрузитьЗначения выгружает...
13 los_hooliganos
 
09.04.18
08:53
(11) А кто является суперклассом у массива в джаве?

ЗЫ Вообще объявить массив классом это интересная затея.
14 Сияющий в темноте
 
09.04.18
08:58
Массив классом,да так во многих языках делают.
Просто,список значений,структура и соответствие тоже ассоциированные массивы,и их можно рассматривать на базе класса,реализующего массив,таблица значений,кстати,тоже туда близка,не зря в управляемых формах ее в массив стуктур переводят,что от реализации не сильно далеко
15 los_hooliganos
 
09.04.18
09:54
(14) Ради интереса посмотрел суперсуперкласс Листа в джаве.
Никакой массив там не используется.
16 tesseract
 
09.04.18
10:29
(6) Список - ассоциативный массив.

(11) Логично делать один  базовый интерфейс.  Наследование - самая хреновая идея в ООП, кто рефакторил,  тот понимает.

(14)>>не зря в управляемых формах ее в массив стуктур переводят,что от реализации не сильно далеко

Ее так переводят, чтобы память экономить на отображении в "ДанныеФормыКоллекция".

(15) List - это связанный список, а не ассоциативный массив.
17 Вафель
 
09.04.18
10:44
в 1с список на основе массива. типа ArrayList в java
18 Sserj
 
09.04.18
11:11
(15) Ты не там смотрел :)
Смотри исходники ArrayList, там массив внутри и если при добавлении размера массива не хватает создается новый в 2 раза больший и в него копируется предыдущий. Именно для этого есть конструктор ArrayList​(int initialCapacity), который явно задает начальный размер массива.
19 Вафель
 
09.04.18
11:17
Чисто Лист в джаве - это абстрактный класс и не имеет никакой реализации, только имена методов задает
20 Sserj
 
09.04.18
11:19
(19) Ну если быть уж совсем точным, то это интерфейс а не класс :)
21 Вафель
 
09.04.18
11:22
Для абстрактного класса есть AbstractList.
Ох уж эта жава
22 los_hooliganos
 
09.04.18
11:39
(20) Интерфейс это один из видов класса.
23 tesseract
 
09.04.18
11:57
(22) С каких это пор? Интерфейс уже поля где-то получил?
24 Провинциальный 1сник
 
09.04.18
12:51
(13) Еще раз, не путайте понятие "массив" в универсальных ЯП и тип объекта "Массив" в 1с.
25 los_hooliganos
 
09.04.18
13:00
(23) Грешен :)
Интерфейс это действительно не класс.
Тем не менее, можно заявить в нем новые переменные и константы.
26 Сияющий в темноте
 
09.04.18
20:17
интерфейс,это класс только с виртуальными функциями,а по сути,это таблица функций,причем постоянная на время исполнения
27 tesseract
 
10.04.18
09:37
(26) Интерфейс это просто объявление функций.  Он не поддерживает инкапсуляцию и не имеет своей области памяти - соотвественно никакой он не класс, даже абстрактный. Учите матчасть уже.
28 Вася Теркин
 
10.04.18
09:45
(9) Не правильно. В 1С нет понятия индексированного массива ибо одинэсники тупые. Есть неиндексированный массив (Собственно МАССИВ)  и есть несколько видов индексированных массивов с фиксированным составом индекса (Структура, соответствие, список значений). У них индексацию менять нельзя, поэтому получилось создать специфичные методы для каждого класса (поиск, обращение по ключу индексации и прочее).
Но чтобы перетащить коллекцию из одного индексированного агрегата в другой нужно выгружать в неиндексированный Массив.
Все Выгрузить-Загрузить работают через Массив.
Т.е. чтобы из соответствия получить структуру придется сначала получить Массив.
29 Вася Теркин
 
10.04.18
09:48
Массив как таковой рудиментарен, ибо по задумке все прикладные задачи должны решаться путем выбора между Соответствием, Структурой, Списком значений исходя из их методов.
А Массивом только конвертировать значения да параметры передавать в запросы.
30 zwei
 
10.04.18
09:58
(28) > ибо одинэсники тупые
Нет, они жадные, Я настаиваю.

Какой фиксированный состав индекса у списка значений?
31 Провинциальный 1сник
 
10.04.18
13:06
(28) Фигню вы какую-то пишете. В массиве 1с есть обращение по индексу, а индекса по-вашему нет? Опять путаница между индексом массива и индексом с точки зрения теории БД.
32 Провинциальный 1сник
 
10.04.18
13:11
+(29) Список значений - это по сути массив структур, содержащих значение, представление, пометку, картинку и уникальный идентификатор.
33 tesseract
 
10.04.18
16:11
(32) Откуда такое предположение? Может это однонаправленный список, который в данном случаем будет работать значительно быстрее индекса?

У вас как с дискретной математикой то?
34 Вафель
 
10.04.18
16:19
(32) так и ТЗ практически тоже самое
35 Вафель
 
10.04.18
16:19
(33) в 1С нет связного списка
36 Вафель
 
10.04.18
16:20
чтобы проверить что список - это массив, достаточно сдать много выборок по ингдексу из большого списка и сравнить с массивом
37 tesseract
 
10.04.18
16:42
(35) Он там не нужен.

(36) И выяснить насколько хорошо работает с разными типами данных виртуальная машина 1С? Я не думаю, что разница на глаз будет заметна.

Тем более что никто не мешает 1С встроить вспомогательный массив с адресами узлов списка в любой объект "КлючЗначение".  Разницу можно будет заметить только на массовой вставке / удалении.
38 Провинциальный 1сник
 
10.04.18
16:52
(33) Предположение следует из бритвы Оккама. Если что-то выглядит как кошка, и ведет себя как кошка - скорее всего это кошка и есть. А не инопланетянин, принявший форму кошки.
39 Провинциальный 1сник
 
10.04.18
16:55
(35) В 1с на структурах можно сделать и список, и дерево, и всё что угодно.
40 tesseract
 
10.04.18
16:57
(38) Двусвязный список  в любой книге имеет таки индекс, но это точно не массив.

https://learnc.info/adt/double_linked_list.html

(39) И каким образом это относиться к массиву?
41 Провинциальный 1сник
 
10.04.18
21:59
(40) Таким же образом, каким массив относится к связанному списку. Реальный способ хранения массива в памяти - внутренняя кухня 1с, которую они могут менять в каждом релизе. И это неинтересно.