Имя: Пароль:
1C
1С v8
не могу понять цикл типа Для Каждого
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
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) Я подумаю
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.