|
не могу понять цикл типа Для Каждого | ☑ | ||
---|---|---|---|---|
0
Hochkinder
20.04.17
✎
15:37
|
Изучаю 1С по Радченко "Первые шаги", образование к сожалению далёкое от программирования, немогу понять цикл типа:
ДляКаждого ТекСтрокаПереченьНоменклатуры из ПереченьНоменклатуры Цикл и далее условие... Везде объясняют мол в перемененой ТекСтрокаПереченьНоменклатуры содержится текущая строка таблицы ПереченьНоменклатуры,..... а как система это понимает если нигде нет явного присвоения данного значения, а почему например не поле или колонка этой таблицы? Разъясните пожалуйста, поиск не помог... Или где-то в программировании есть базовое правило, что базовым элементом таблицы является строка... и цикл "ДляКаждого Х из У" если Х не объявлен является базовым элементом объекта У? |
|||
1
Волшебник
модератор
20.04.17
✎
15:39
|
объект ПереченьНоменклатуры содержит итератор, который возвращает именно строку
|
|||
2
Я не курил
20.04.17
✎
15:41
|
ПереченьНоменклатуры - коллекция значений
ТекСтрокаПереченьНоменклатуры - конкретное значение Если указать ПереченьНоменклатуры.Колонки, то конкрентным значением при переборе будет уже колонка |
|||
4
Волшебник
модератор
20.04.17
✎
15:41
|
а вот тут будут колонки:
Для Каждого ТекКолонка из ПереченьНоменклатуры.Колонки Цикл |
|||
5
Господин ПЖ
20.04.17
✎
15:42
|
>Или где-то в программировании есть базовое правило, что базовым элементом таблицы является строка... и цикл "ДляКаждого Х из У" если Х не объявлен является базовым элементом объекта У?
просто ПереченьНоменклатуры как коллекция реализует интерфейс IEnumerable надеюсь помог |
|||
6
Волшебник
модератор
20.04.17
✎
15:43
|
(5) Т.е. в 1С есть ООП что ли?
|
|||
7
Господин ПЖ
20.04.17
✎
15:43
|
(6) ты не поверишь...
|
|||
8
Господин ПЖ
20.04.17
✎
15:44
|
да будет ооп-шный святой срач
|
|||
9
megabax
20.04.17
✎
15:44
|
(5) Если ТС прожженный дот нетчик, то да, помог.
|
|||
10
Naf2017
20.04.17
✎
15:45
|
(5) или Enumeration (зависит от языка)
(6) тогда бы это была явная реализация, а то вот автор в (0) не смог догадаться, ООП есть, но чуть-чуть |
|||
11
Naf2017
20.04.17
✎
15:47
|
+(10) Iterable больше подходит
|
|||
12
Локи-13
20.04.17
✎
15:50
|
(0) Просто запомни.
|
|||
13
Naf2017
20.04.17
✎
15:51
|
(12) нет, это надо понимать https://ru.wikipedia.org/wiki/Итератор_(шаблон_проектирования)
|
|||
14
Локи-13
20.04.17
✎
15:56
|
(13) Нафига? Это нужно сишникам понимать, а нам то зачем.
|
|||
15
Naf2017
20.04.17
✎
15:57
|
(14) чтобы не отупеть, например
|
|||
16
ptiz
20.04.17
✎
15:58
|
ДляКаждого <ИмяПеременнойВКоторуюБудетПомещенОчереднойЭлементИзСписка> из <СписокЭлементов> Цикл
НадеюсьОбъяснил. |
|||
17
Hochkinder
20.04.17
✎
16:06
|
Т.е. я правильно понимаю:
Или где-то в программировании есть базовое правило, что базовым элементом таблицы является строка... и цикл "ДляКаждого Х из У" если Х не объявлен является базовым элементом объекта У? |
|||
18
Dzenn
гуру
20.04.17
✎
16:06
|
(16) только не СписокЭлементов, а КоллекцияЭлементов, а так — да, крутое объяснение :-)
|
|||
19
dezss
20.04.17
✎
16:07
|
(17) ессно...базовый элемент - таблица...у нее есть строки, у строк есть поля...
Это идет из SQL... |
|||
20
Fish
20.04.17
✎
16:11
|
(17) "если Х не объявлен является базовым элементом объекта У" - Даже если у тебя Х был объявлен ранее, то после начала цикла он станет содержать итератор.
|
|||
21
Вафель
20.04.17
✎
16:13
|
если такое не можешь понять сходу, то лучше в проги не идти
|
|||
22
Hochkinder
20.04.17
✎
16:15
|
Спасибо, итератор - инфо о базовом элементе, блин почему этого нет в книге для новичков... Самому пришлось "через Владивосток Москву познавать" ...
|
|||
23
Hochkinder
20.04.17
✎
16:15
|
Хмм сходу... понять можно, если пояснение есть
|
|||
24
Волшебник
модератор
20.04.17
✎
16:15
|
(22) Новичкам про итератор знать не положено.
|
|||
25
ptiz
20.04.17
✎
16:16
|
(17) Какая строка? Причем тут строка?
У - перечень (коллекция) объектов любого типа. При каждом шаге цикла в перменную Х помещается очередной объект из этого перечня. Разных видов коллекций существует - вагон и тележка. |
|||
26
Hochkinder
20.04.17
✎
16:16
|
Книга содержит очень много "воды" и "сделай как написано неважно почему"
|
|||
27
Hochkinder
20.04.17
✎
16:18
|
Тип объекта коллеции зависит от объекта, если правильно понимаю, таблица содержит коллекцию строк
|
|||
28
Волшебник
модератор
20.04.17
✎
16:20
|
(27) Тип может меняться. Например, итератор для массива может вернуть значение любого типа
|
|||
29
Вафель
20.04.17
✎
16:22
|
(26) Мой тебе совет: не пытайся сразу понимать почему. когда будет время все помймешь
|
|||
30
Вафель
20.04.17
✎
16:22
|
ибо ответ на вопрос Почему? требует гораздо более глубоких знаний
|
|||
31
organizm
20.04.17
✎
16:36
|
может лучше начать с основ - язык Си. От туда все ноги растут: от примитивов к массивам, затем векторам и итераторам и погнали...
|
|||
32
organizm
20.04.17
✎
16:37
|
Иначе - "делай как написано, потом поймешь".
|
|||
33
Fish
20.04.17
✎
16:41
|
(26) Читай Митичкина. У него всё понятно.
|
|||
34
Hochkinder
20.04.17
✎
17:20
|
(31) Конечно правильнее начать с "основ", да уж больно много времени уйдёт, а работу менять срочно нужно :-) "Добью" эту книгу, попробую Митичкина. Огромное спасибо всем за живой отклик, не ожидал такой оперативности!
|
|||
35
Волшебник
модератор
20.04.17
✎
17:20
|
(34) Митичкин рулит
|
|||
36
Hochkinder
20.04.17
✎
17:25
|
Книг Митичкина под 8.3 нету?
|
|||
37
Волшебник
модератор
20.04.17
✎
17:26
|
(36) Нету. Это я тебе как Митичкин говорю.
|
|||
38
Hochkinder
20.04.17
✎
17:27
|
Плохо :(
|
|||
39
Hochkinder
20.04.17
✎
17:27
|
Ремейк пора сверстать
|
|||
40
dezss
20.04.17
✎
17:27
|
(38) попроси его написать.
|
|||
41
lodger
20.04.17
✎
17:27
|
(27) это нигде не пояснено, но смысл в том, что "для каждого Элемент из Коллекция" это порождения мягкой типизации 1ц.
в одном месте коллекция это массив с рандомными типами элементов, в другом коллекция это типизированная ТЗ(или ТЧ) где лежат строкиТЗ(или строкиТЧ), в третьем месте в НабореЗаписей элементами будут Записи. |
|||
42
jsmith82
20.04.17
✎
17:28
|
Всё просто
Цикл для каждого используется для коллекций. Коллекция это такой класс, который реализует интерфейс IEnumerable То есть когда пишешь Для Каждого Из Коллекция, компилятор будет обращаться через квадратные скобки Для Итер = 0 По Коллекция.Количество() - 1 Цикл ТекЭлемент = Коллекция[Итер] |
|||
43
lodger
20.04.17
✎
17:28
|
+(41) для Элемента в данном случае эта строчка и будет объявлением, т.к. предыдущее значение и тип здесь будут сброшены.
|
|||
44
Hochkinder
20.04.17
✎
17:32
|
Угу, понял, СПАСИБО ОГРОМНОЕ!
|
|||
45
Hochkinder
20.04.17
✎
21:41
|
Много на форумах хороших отзывов о книге Митичкина, точно стоит под 8.3 переработать, людям счастье - автору гонорар и + к карме!
|
|||
46
AuneM1
20.04.17
✎
21:52
|
(17) Ты путаешь двухмерный массив и одномерный массив записей.
И то и то таблица. Но первый это матрица, а второе структурированная таблица. Для каждого это перебор значений массива. Но "столбцы" - это не массив, это структура. |
|||
47
Волшебник
модератор
20.04.17
✎
21:54
|
(45) Я подумаю
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |