Недавно у меня получилось создать свою первую обработку - Калькулятор. В этой обработке мы самым примитивным способом ищем в веденном поле нужную нам операцию, далее просто вычисляем выражение с этой Одной операцией.

Я хочу сделать более функциональнее свой калькулятор. Начну с того, чтобы Пользователь мог ввести ни одну операцию, а несколько - количество операций неограниченно, главное чтобы пока без скобочек (скобочки - это уже третий шаг аппгрейда нашего калькулятора)

Для того, чтобы из введенной пользователем стоки выделить все введенные им операции - я создаю Массив. Но мне нужен не простой массив, а двумерный: в первое поле массива я хочу записывать найденный порядковый номер в строке Ввода, а во второе поле - записывать непосредственно символ самой Операции.

Сколько не читала справку - не пойму как правильно создать Массив с ДВУМЯ полями, это уже будет многомерный массив, но как правильно его для начала создать.

Потом, как правильно в него записать в каждое поле наши данные? Метод установить вообще почему-то не работает, а методы Вставить и добавить - вроде бы работают, но нужный порядок ввода моих данных у меня не получается...

Прошу помощи знающих....
---
Хитрость в том, что в 1С нет многомерных массивов. Но элементом массива также может выступать массив, что автоматически позволяет строить многомерные конструкции.
Другими словами, в 1С только одна разновидность массива и пофиг, как именно его создавать, т.к. массивы в 1С динамические. Многомерные варианты конструктора массива - это просто стартовая "набивка".
Двумерный массив, например, можно вручную создать так:

```1c
    ДвумерныйМассив = Новый Массив; // еще не двумерный, но скоро будет :)
    ДвумерныйМассив.Добавить(Новый Массив); // первое измерение
    ДвумерныйМассив.Добавить(Новый Массив); // второе измерение
    ДвумерныйМассив[0].Добавить("ЭлементПервогоИзмерения");
    ДвумерныйМассив[1].Добавить("ЭлементВторогоИзмерения");
    Сообщить(ДвумерныйМассив[1][0]);
```

Когда дойдешь до третьего шага апгрейда калькулятора, вбивай в поиск магическую фразу "стек алгоритм дейкстры". Заодно и второй шаг перепишешь :)
Стека в 1С нет, но динамический массив позволяет его легко эмулировать.
---
я уже отвечал на этот вопрос.
Вот наглядно.
---
Ну, а если Вам нужно неограниченный массив (массив с изменяемым (динамическим) количеством строк), то реализуется список (в с++ это TList), а в 1С используйте ТаблицуЗначений с двумя колонками:
Тбл = Новый ТаблицаЗначений;
Тбл.Колонки.Добавить ("Значение")
Тбл.Колонки.Добавить ("Оператор")
и работайте с ней как с двумерным массивом - и кол-во строк будет у Вас ограничено только возможностью Вашей ОЗУ.
---
списки в УФ это динамические списки, которые содержат только то, что выбрано в них.
На стороне клиента нет доступа к объектам, как на ОФ. Т.е. если в динамическом списке есть только ссылка на объект, то получить реквизиты объекта на клиенте невозможно.
А Критерии отбора работают, если есть доступ к этим самым реквизитам.
---
Вот и Массив мой рождающийся в обработке и скрин, помогите!!! Ну как я дальше буду перебирать и расскладывать Массив на данные, если в него влазиит пустая строка и никак оттуда не вылазиит!!!!!
Это самая распространенная ошибка начинающих.

```1c
    порядок=0;
    Для Каждого СтрокаМассива Из Массив Цикл
    Массив.Удалить(порядок);
    порядок=порядок+1;
    КонецЦикла;
```

Когда происходит Массив.Удалить(порядок), индексация массива не остается прежней. Все индексы последующих элементов массива смещаются на единицу.
Смысл такой: Номера индексов всегда непрерывная нумерация.
На примере. При проверке должны удалиться элементы массива 3,4,5.
Удаляем 3. Индексация перестроилась. Теперь бывший 4 стал 3, а 5 стал 4.
Следовательно при последующем порядок=порядок+1; будет проверяться элемент на данный момент под номером 4. А это бывший 5.
Таким образом элемент, который вначале был 4, просто пропускается из проверки и обработки.

Обычно выбирают или прохождение проверки/удаления элементов массива в обратном порядке.
Или копирование нужных элементов новый массив.
---
Как вычислить индекс двумерного массива с пустой стокой вроде бы нашла:

```1c
    а="+*/-";
    КвоСимволов=СтрДлина(а);
    Массив=Новый Массив(КвоСимволов,2);
    Массив[0][0]="Вася";
    Массив[0][1]="Пупкин";
    Массив[1][0]="Степа";
    Массив[1][1]="Степкин";
    Массив[2][0]="Петя";
    Массив[2][1]="Петичкин";
    порядок=0;
    Сообщить(Массив.Количество());
    Для каждого Номер Из Массив Цикл
    Если ПустаяСтрока(Номер[0]) Тогда
    Сообщить("Пустая строка под индексом="+порядок);
    КонецЕсли;
    Сообщить("+Номер[0]+Номер[1]);
    порядок=порядок+1;
    КонецЦикла;
```

В результате цикл нам покажет:
1.Вася Пупкин
2.Степа Степкин
3.Петя Петичкин
4.Пустая строка под индексом = 3
============================================================­==
Теперь в цикл после определения пустой строки - сразу же ее удаляем:

а="+*/-";
КвоСимволов=СтрДлина(а);
Массив=Новый Массив(КвоСимволов,2);
Массив[0][0]="Вася";
Массив[0][1]="Пупкин";
Массив[1][0]="Степа";
Массив[1][1]="Степкин";
Массив[2][0]="Петя";
Массив[2][1]="Петичкин";
порядок=0;
Сообщить(Массив.Количество());
Для каждого Номер Из Массив Цикл
 Если ПустаяСтрока(Номер[0]) Тогда
      Сообщить("Пустая строка под индексом="+порядок);
  Массив.Удалить(порядок);
 КонецЕсли;
 Сообщить(""+Номер[0]+Номер[1]);
 порядок=порядок+1;
КонецЦикла;
Сообщить("После очистки пустых строк массива="+Массив.Количество());

В результате получим следующие данные в двумерном массиве:

1.Вася Пупкин
2.Степа Степкин
3.Петя Петичкин
После очистки пустых строк массива кол-во строк в массиве=3
---
Да Вы Маг и Волшебник!!! ньдя...конечно,это слом мозга,но работает же!!!

Но в данной ситуации - конечно Ваша правда- все нулевые значения остаются ниже данных...а вот если бы они были в перемешку?...Тогда бы тоже проще можно было бы придумать - в новый (двумерный-о,ужас))) Массив записать все значения, которые не пустые...

п.с.ужас какой-то - даже удалить просто-то ничего нельзя...см.скрин

п.с.2...соединять с расчетом буду завтра, на сегодня - это уже перебор)))

Спасибо огромное,никогда бы не догадалась за обратный цикл в удалении пустых элементов из массива!!!
---
Сделайте проще - массив может быть одномерный, то обращение к элементу массива - тут как хотиие - хоть 10-ти мерный.
Допустим, у Вас массив двумерный - 10x10
Считает индексацию относительно 0
Например, так:
Массив = Новый Массив (100);
ЭлементИзВторойСтрокиИТретьейКолонки = Массив[1*10 + 2];
ЭлементИзПятойСтрокиИШестойКолонки = Массив[4*10 + 5];
ну и т.д.
---
пока не понятно....

вот на скрине приблительно то,что я хочу видеть в своем двухмерном массиве.
Как мне его создать и наполнить значениями?
---
А что тут не понятно?
Создаете массив - если Вам нужно 1000 строк, и две колонки, то:
Массив = Новый Массив(2*1000)
И заполняйте его:
Массив[0*2 + 0] = "1"
Массив[0*2 + 1] = "+"
Массив[1*2 + 0] = "6"
Массив[1*2 + 1] = "+"
Массив[2*2 + 0] = "8"
Массив[2*2 + 1] = "-"
Массив[3*2 + 0] = "10"
Массив[3*2 + 1] = "*"
Массив[4*2 + 0] = "13"
Массив[4*2 + 1] = "/"
Массив[5*2 + 0] = "18"
Массив[5*2 + 1] = "+"

ну и т.д.

Это понятно?
---
Нет, не понятно.

Вот, пойдем по пути обучения как нас Радченко учит - нарисуем одномерный массив см.скрин №1, и нарисуем двумерный массив см.скрин №2

Вы предлагаете в одномерный массив напихать все значения подряд,какие мне только попадутся под руку - это будет беспорядок в шкафу,т.к. я завтра же забуду - что куда ложила и уже никогда не найду нужные данные...

Представление двумерного массива - даже визуально приятны: вот полочка (строка с индексом 0) №0, в ней лежат ,н-р,"майки"(адрес Майки=полка№0, отделение=0 "Иванова" (адрес Кого=полка№0,отделение=1),
Дальше у нас полка, отданная Петрову - и все по той же логике...

Двумерный массив - я проще себе представляю в виде таблицы - с каким-то количеством строк, но колонок в этой таблице мне нужно только две. Вот,тогда четко представляя себе в уме такую табличку -ее проще и забить и считать...
---
"Вот,тогда четко представляя себе в уме такую табличку -ее проще и забить и считать... " - а в чем проблема работать так же с одномерным массивом? - в любом случае, и в памяти компа двумерный массив - это тоже, по сути, одномерный массив. И даже адресация типа Массив[2][3] - комп переводит его как 2*КоличествоКолонок + 3 - так что по сути, двумерный массив - это просто более удобное представление (визуальное) одномерного массива.
---
Ну, а если Вам нужно неограниченный массив (массив с изменяемым (динамическим) количеством строк), то реализуется список (в с++ это TList), а в 1С используйте ТаблицуЗначений с двумя колонками:
Тбл = Новый ТаблицаЗначений;
Тбл.Колонки.Добавить ("Значение")
Тбл.Колонки.Добавить ("Оператор")
и работайте с ней как с двумерным массивом - и кол-во строк будет у Вас ограничено только возможностью Вашей ОЗУ.
---
Самая светлая мысль!!!!
...и почему она не пришла мне сразу в голову???

Вот домучаю свой калькулятор сначала на двумерном массиве, потом добавлю кодинг именно с таблицей значения!

Спасибо, хорошая идея, я уже,наверное, заучилась, чтобы так быстро до нее дойти))
---
Пожалуйста. Если что обращайтесь. :-)
---
А вообще, по Вашей тематике - это обычная стековая виртуальная машина - ищите в интернете "Обратная польская запись" - там почитаете как все это реализовывать.
Вот ссылка, например:
https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D­0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B7%D0%B0%­D0%BF%D0%B8%D1%81%D1%8C
---
В этой нотации (обратная польская запись) и пишут всякие программируемые калькуляторы и пр.
---
Пишется все просто и элегантно. Я для своих программ с интерпретируемым языком писал как раз - все выходит очень красиво и просто.
---
Вот здесь

сказано, что первым параметром в многомерном Массиве должна быть строка, вторым параметром колонка,т.е. Массив из двух колонок можно записать как:

Массив = Новый Массив(,2);

это правильно будет??? т.к. в моем Массиве строк должно быть неограниченное число, а колонок только две.
---
(кстати, такая индексация работает намного быстрее, чем через[y][x] - т.к. в цикле можно не умножать на 10, а просто прибавлять 10 после обхода всех колонок массива по текущий строке)
---
Вот до чего доводит людей необучение на нормальном вузе...
Там калькулятор с скобками и формулами пишут на первом курсе...
---
Но мне повезло встретить на форуме человека (Вас,конечно), который учился в правильном вузе и, естественно, сможет помочь зеленым ограм с их первым массивом....
---
Обратная польская запись называется.
---
Вы заинтриговали - никогда с подобными "задом-наоборот" вещами не сталкивалась!

Пожалуйста, приведите в примере кодинг, я попробую это осмыслить, но понимаю только по примерам...
---
Ну, пример я только на с++ могу привести (т.к. сейчас 80% времени пишу именно на си - от 1С устал уже - 18 лет 1С-го кодинга... Далее не буду продолжать :-) )
А так - выдержка:

как пример можно разобрать - если у Вас есть строка с формулой:

Вход: 3 + 4 * 2 / (1 - 5)^2

то последовательность решения будет такой:

(
"читаем" - это сканируем строку слево - направо до первого пробела или скобки или знака оператора */-^+ и т д.
"добавить" - это добавляете в стек (стек - для извлечения pop и добавления push значения)
"выход" - что получается в стеке
)

Если что не понятно - пишите - поясню

Читаем «3»
 Добавим «3» к выходной строке
  Выход: 3

Читаем «+»
 Кладём «+» в стек
  Выход: 3
  Стек: +

Читаем «4»
 Добавим «4» к выходной строке
  Выход: 3 4
  Стек: +

Читаем «*»
 Кладём «*» в стек
  Выход: 3 4
  Стек: + *

Читаем «2»
 Добавим «2» к выходной строке
  Выход: 3 4 2
  Стек: + *

Читаем «/»
 Выталкиваем «*» из стека в выходную строку, кладём «/» в стек
  Выход: 3 4 2 *
  Стек: + /

Читаем «(»
 Кладём «(» в стек
  Выход: 3 4 2 *
  Стек: + / (

Читаем «1»
 Добавим «1» к выходной строке
  Выход: 3 4 2 * 1
  Стек: + / (

Читаем «-»
 Кладём «-» в стек
  Выход: 3 4 2 * 1
  Стек: + / ( -

Читаем «5»
 Добавим «5» к выходной строке
  Выход: 3 4 2 * 1 5
  Стек: + / ( -

Читаем «)»
 Выталкиваем «-» из стека в выходную строку, выталкиваем «(»
  Выход: 3 4 2 * 1 5 -
  Стек: + /

Читаем «^»
 Кладём «^» в стек
  Выход: 3 4 2 * 1 5 -
  Стек: + / ^

Читаем «2»
 Добавим «2» к выходной строке
  Выход: 3 4 2 * 1 5 - 2
  Стек: + / ^

Конец выражения
 Выталкиваем все элементы из стека в строку
  Выход: 3 4 2 * 1 5 - 2 ^ / +
---
Перебрать строку перебрали,по дороге отделяли плевер от зерна,т.е.Операции от операндов, только здесь найденные операнды записываем в "выходную строку", а операции в "стек", потом все впихнули в одну строку...

и чего делать дальше с результатом такого перебора???
---
Дальше выбираете в обратном порядке, и вычисляете -

есть строка в обратной польской записи:

3 4 2 * 1 5 - 2 ^ / +

Читаем слево - направо (пока не встретится оператор) -
3 - в стек, 4 - в стек, 2 - в стек. Стек будет содержать в себе 3 4 2
Далее идет оператор умножения - ему нужно два значения - берем из стека 2 и 4 (берем из стека - это значит выталкиваем по методу pop - т.е. первый пришел - последний ушел), умножаем 2*4 = 8 и помещаем в стек. Стек будет содержать в себе 3 8. Далее 1 - опять в стек, 5 - также. Итого стек будет 3 8 1 5. Далее минус. Берем 5 и 1. 1 - 5 = -4. Опять в стек. Будет 3 8 -4. Далее - двойка - в стек. 3 8 -4 2. Далее ^ возведение в степень. Степень у нас 2. -4*-4 = 16. Стек будет 3 8 16. Далее / - деление. 8/16 = 0.5 В стеке будет 3 0.5. Далее +. 3 + 0.5 = 3.5. Итого результат на вершине стека будет содержать в себе 0.5. Проверим - 3 + 4 * 2 / (1 - 5)^2 = 3+8/16 = 3.5. Т.е. все верно.
Также можно здесь и функции использовать.
Красиво, да?
---
Стек можно организовать из СписокЗначений.
Список = Новый СписокЗначений
Добавлять в список -
Список.Добавить (3);
Список.Добавить (4);
Список.Добавить (2);
Операнд1 = Список.Получить (Список.Размер() - 1); // Здесь будет 2
Операнд2 = Список.Получить (Список.Размер() - 1); // Здесь будет 4
Результат = Операнд1*Операнд2
Результат = 8
Список.Добавить (Результат);
Стек будет: 3 8.
Ну и т.д. как в пред. посте. Все очень просто.
---
вот уже вообще интересно!
---
Ну и последнее значение в СписокЗначений
Значение = Список.Получить(0) - это и будет результат вычисления формулы. Если что - то не так, то значит, в формуле (первоначальной) некорректно записана формула. Типа такого: 3+4++7 - т.е. нет числа между + и +. Или скобки не соблюдены - 5+7+(9-8)*2). Здесь лишняя скобка в конце.
---
Все...это взрыв мозга...что там обратные циклы на удаление пустых элементов из двумерного массива, заполненного по всем выборкам введенного пользователем значения в поле ввода....Все, я в аут, переваривать...

п.с.Спасибо, сам алгоритм я поняла, придумаю как его выкрутить через язык 1с и выложу обязательно результат. Все перепроверю....
---
Пишите, если что. Помогу.
---
Вот что-то получилось с двумерным массивом:

Массив=Новый Массив(2,2);
Массив[0][0]="Вася";
Массив[0][1]="Пупкин";
Массив[1][0]="Степа";
Массив[1][1]="Степкин";
Сообщить(Массив.Количество());
Для каждого Номер Из Массив Цикл
 //Сообщить(Номер[1]+Номер[2]);
 Сообщить(Номер[0]+Номер[1]);
КонецЦикла;

Сообщает, что в двумерном массиве 2 строки и в каждой строке есть заданные значения:
в первой строке: Вася Пупкин
во второй строке Степа Степкин

Но это если мы изначально задаем в условиях Массива 2 СТРОКИ (Массив(2,2) )
А как быть,если количество строк может быть неограниченно?
Как правильно задать такой массив??? Вот таким образом=>Массив=Новый Массив(,2)-не работает...
---
А что я мучаюсь, в конце концов-то,а?))

Максимальное значение строк в Массиве - это же сумма символов, в моем примере Калькулятор, которые ввел Пользователь!!!

Значит двумерный массив можно задать вот так:

а="+*/-";
КвоСимволов=СтрДлина(а);
Массив=Новый Массив(КвоСимволов,2);
Массив[0][0]="Вася";
Массив[0][1]="Пупкин";
Массив[1][0]="Степа";
Массив[1][1]="Степкин";
Массив[2][0]="Петя";
Массив[2][1]="Петичкин";

Сообщить(Массив.Количество());
Для каждого Номер Из Массив Цикл
 Сообщить(""+Номер[0]+Номер[1]);
КонецЦикла;

В результате чего мы получим ответ:

1.Вася Пупкин
2.Степа Степкин
3.Петя Петичкин
4.пустая строка

Как теперь удалить пустые строки из массива?
---
Как вычислить индекс двумерного массива с пустой стокой вроде бы нашла:

```1c
    а="+*/-";
    КвоСимволов=СтрДлина(а);
    Массив=Новый Массив(КвоСимволов,2);
    Массив[0][0]="Вася";
    Массив[0][1]="Пупкин";
    Массив[1][0]="Степа";
    Массив[1][1]="Степкин";
    Массив[2][0]="Петя";
    Массив[2][1]="Петичкин";
    порядок=0;
    Сообщить(Массив.Количество());
    Для каждого Номер Из Массив Цикл
    Если ПустаяСтрока(Номер[0]) Тогда
    Сообщить("Пустая строка под индексом="+порядок);
    КонецЕсли;
    Сообщить("+Номер[0]+Номер[1]);
    порядок=порядок+1;
    КонецЦикла;
```

В результате цикл нам покажет:
1.Вася Пупкин
2.Степа Степкин
3.Петя Петичкин
4.Пустая строка под индексом = 3
============================================================­==
Теперь в цикл после определения пустой строки - сразу же ее удаляем:

а="+*/-";
КвоСимволов=СтрДлина(а);
Массив=Новый Массив(КвоСимволов,2);
Массив[0][0]="Вася";
Массив[0][1]="Пупкин";
Массив[1][0]="Степа";
Массив[1][1]="Степкин";
Массив[2][0]="Петя";
Массив[2][1]="Петичкин";
порядок=0;
Сообщить(Массив.Количество());
Для каждого Номер Из Массив Цикл
 Если ПустаяСтрока(Номер[0]) Тогда
      Сообщить("Пустая строка под индексом="+порядок);
  Массив.Удалить(порядок);
 КонецЕсли;
 Сообщить(""+Номер[0]+Номер[1]);
 порядок=порядок+1;
КонецЦикла;
Сообщить("После очистки пустых строк массива="+Массив.Количество());

В результате получим следующие данные в двумерном массиве:

1.Вася Пупкин
2.Степа Степкин
3.Петя Петичкин
После очистки пустых строк массива кол-во строк в массиве=3
---
Хитрость в том, что в 1С нет многомерных массивов. Но элементом массива также может выступать массив, что автоматически позволяет строить многомерные конструкции.
Другими словами, в 1С только одна разновидность массива и пофиг, как именно его создавать, т.к. массивы в 1С динамические. Многомерные варианты конструктора массива - это просто стартовая "набивка".
Двумерный массив, например, можно вручную создать так:

```1c
    ДвумерныйМассив = Новый Массив; // еще не двумерный, но скоро будет :)
    ДвумерныйМассив.Добавить(Новый Массив); // первое измерение
    ДвумерныйМассив.Добавить(Новый Массив); // второе измерение
    ДвумерныйМассив[0].Добавить("ЭлементПервогоИзмерения");
    ДвумерныйМассив[1].Добавить("ЭлементВторогоИзмерения");
    Сообщить(ДвумерныйМассив[1][0]);
```

Когда дойдешь до третьего шага апгрейда калькулятора, вбивай в поиск магическую фразу "стек алгоритм дейкстры". Заодно и второй шаг перепишешь :)
Стека в 1С нет, но динамический массив позволяет его легко эмулировать.
---
что такое Стек? и почему его нет в 1с?
Если 1с спросить какой код Символов у скобок,то вот что она ответит:

а=КодСимвола("(");
б=КодСимвола(")");

Сообщить(""+а+";"+б);

это=> 40;41

Отсюда, если 1с может по коду определить Символ скобок, то почему она их не должна увидеть при поиске в строке Ввода,н-р,

НашиВозможныеОперации="*/-+()"

и можем выделить и НашиВозможныеОперации Скобку и так же искать ее в Введенном пользователем поле. Здесь проблема будет ни в том, чтобы найти скобку в Введенном поле, а заморочиться найти сначала открывающую скобку, потом закрывающую скобку, записать выражение внутри этих скобок и вновь ставить на цикл, чтобы это выражение рассчитать....
---
Что такое "стек" можно прочитать на вики, ссылка на которую будет первой в поисковой выдаче по этому страшному слову :)
(26) Вот алгоритм Дейкстры как раз и применяется для элегантного преобразования обычной (инфиксной) формы записей выражений в ОПН
---
А можно и так: https://infostart.ru/public/149001/
:-)
---
Ну, даже не обязательно обратной польской записью все это программировать. Я когда не знал об этом сделал так:
https://infostart.ru/public/149001/
---
Это все не нужно. Покури функцию ГК "Вычислить"..
p.s. если хочется поколупать мозг прокачки ради - ищи обычным поисковиком задачи на программирование, например http://pas1.ru/taskcycle.. А еще лучше - для начала прорешай Радченко https://buh.ru/books/detail.php?ID=51780, или https://buh.ru/books/detail.php?ID=42714
---
С помощью моей обработки Калькулятор - я учусь владеть основными функциями языка 1с8, ее операторами и вот начала осваивать универсальные коллекции...

С помощью ф-ции Вычислить - можно сразу клонировать калькулятор и больше никогда его не ремонтировать....т.е.навсегда остаться пользователем 1с, а не ее разработчиком.

Кстати, очень бы хотелось посмотреть на внутренний код функции Вычислить, ведь там они уже все продумали - и обход нечисловых выражений, и расчет выражений со скобочками - ням, вкуснятина. У Вас, случайно нету этого кода от функции Вычислить?????
---
Платформа закрыта от внешнего вмешательства, и именно то что там написали программисты 1С наврядли кто-то когда-то узнает... Да это и не нужно:) Учиться лучше на хороших примерах, требующих решения. Эта задача - плохое начало (мое мнение). Что делать - описал выше: пройдите пару официальных самоучителей, выхлоп будет лучше. А с этим просто трата времени.
---
Первая Ваша ссылка не найдена, а в третьей - ссылаетесь на Радченко, в данной его книге нет подробных (и неподробных) примеров работы с массивами...а Массивы в практической деятельности программиста 1с встречаются регулярно...
Что во второй Вашей ссылке пока не знаю, сейчас посмотрю...

Вот,посмотрела вторую ссылку - это там,где тот же Радченко учит детей программировать...на скрине видим пример одномерного массива.

А вот в этом описании - двумерный массив:"Бывают и многомерные массивы. Их вы рассматривать не будете. Но если у вас хорошее воображение и вы хотите представить себе двухмерный массив 3х2, то это стеллаж из трех полок (первое измерение), на каждой полке которого стоит еще один стеллаж из двух полок (второе измерение)."

п.с.значит, я хлеще любого ребенка чтобы такой текст освоить...Поэтому буду щупать своими руками построение многомерных массивов дальше...
---
первая ссылка - сотрите точку в конце, попала так. По Радченко - все там есть. Возможно называется блок не массивы а универсальные коллекции значений или еще как-то, но при подробном изучении встретитесь со всеми необходимыми объектами. Ознакомьтесь для начала в принципе с объектами конфигурации и встроенного языка, научитесь пользоваться СП - это уже хороший задел.
---
http://pas1.ru/taskcycle
В Вашей первой ссылке - Паскаль....Все языки программирования,конечно, похожи друг на друга,но...забить одномерный массив в 1с, мне так кажется,проще, чем это же сделать в Паскале, вот его кодинг:

program n1;
uses crt;
var aw:array[1..10] of integer;
i,w,g:integer;
begin
g:=0;
w:=10;
for i:=0+1 to w do begin
aw[i]:=random(100);
write(aw[i]:6);
          end;
writeln();
write('Чот');
for i:=0+1 to w do begin
if aw[i] mod 2 = 0 then g:=g+1; end; write('Всего чотных чисел ',g);
writeln();
write('Не чот');
g:=0;
for i:=0+1 to w do begin
if aw[i] mod 2 > 0 then g:=g+1;end; write('Всего не чотных чисел ',g) ;
end.

....это не считая того, что на данный момент я ввожусь с двумерным массивом в 1с, страшно подумать как он будет выглядить в Паскале...
---
Роман, можно Вам задать вопрос из экзамена на Профа?
это из моей ветки https://forum.infostart.ru/forum9/topic181504/
=========================================
Вопрос1.9:

Для включения отборов в списках(обычных форм) по содержимому табличных частей объектов и их свойств,неотображаемых в форме:

Варианты:1. ничего дополнительно настраивать не надо, все реализовано на уровне платформы,2. реализуется только запросами,3. осуществляется только с помощью дополнительной настройки форм,4. необходимо создать объект критерии отбора
========================================

Я не пойму почему гугл дает правильный ответ на этот вопрос=4.необходимо создать объект критерии отбора .....Я не знаю что такое Объект критерии выбора...Покажите его наглядно,пожалуйста.
---
я уже отвечал на этот вопрос.
Вот наглядно.
---
ура!!!

Теперь вновь смотрим на вопрос1.10 -

==================================================
Вопрос1.10:

Для включения отборов в списках (управляемых форм) по содержимому табличных частей объектов и их свойств, не отражаемых в форме:

Варианты ответа:1. ничего дополнительно настраивать не надо, все реализовано на уровне платформы,2. реализуется произвольным запросом динамического списка.,3. осуществляется только с помощью дополнительной настройки форм,4. необходимо создать объект критерии отбора
===================================================

Почему тогда здесь правильно будет только ответ"2", а не 2 и 4????
Потому что выходит, что в 1с8 можно и динамическим вопросом задать критерии отбора, но получается их же можно задать и этим Объектом, он же есть в ветке конфигуратора 1с8.3?????
---
списки в УФ это динамические списки, которые содержат только то, что выбрано в них.
На стороне клиента нет доступа к объектам, как на ОФ. Т.е. если в динамическом списке есть только ссылка на объект, то получить реквизиты объекта на клиенте невозможно.
А Критерии отбора работают, если есть доступ к этим самым реквизитам.
---
доходчиво,спасибо!

Не хочу Вас бесить, но почему в обычных формах можно делать отбор в списках только через специальный Объект отборов???

Разве в обычных формах так же нельзя прибегнуть еще и к динамическому запросу????
Как мне правильно проверить в конфе, что это не работает?
---
Продолжаю в свою обработку внедрять Массив...

Вопрос просто дикого тупизма: почему, если всего операций ДВЕ штуки, и массив их ловит как две, мы на выходе берем метод Количество и видим, что он записал ТРИ строки, причем третья пустая (на скрине видно)

Вот и Массив мой рождающийся в обработке и скрин, помогите!!! Ну как я дальше буду перебирать и расскладывать Массив на данные, если в него влазиит пустая строка и никак оттуда не вылазиит!!!!!
---
Вот и Массив мой рождающийся в обработке и скрин, помогите!!! Ну как я дальше буду перебирать и расскладывать Массив на данные, если в него влазиит пустая строка и никак оттуда не вылазиит!!!!!
Это самая распространенная ошибка начинающих.

```1c
    порядок=0;
    Для Каждого СтрокаМассива Из Массив Цикл
    Массив.Удалить(порядок);
    порядок=порядок+1;
    КонецЦикла;
```

Когда происходит Массив.Удалить(порядок), индексация массива не остается прежней. Все индексы последующих элементов массива смещаются на единицу.
Смысл такой: Номера индексов всегда непрерывная нумерация.
На примере. При проверке должны удалиться элементы массива 3,4,5.
Удаляем 3. Индексация перестроилась. Теперь бывший 4 стал 3, а 5 стал 4.
Следовательно при последующем порядок=порядок+1; будет проверяться элемент на данный момент под номером 4. А это бывший 5.
Таким образом элемент, который вначале был 4, просто пропускается из проверки и обработки.

Обычно выбирают или прохождение проверки/удаления элементов массива в обратном порядке.
Или копирование нужных элементов новый массив.
---
Да Вы Маг и Волшебник!!! ньдя...конечно,это слом мозга,но работает же!!!

Но в данной ситуации - конечно Ваша правда- все нулевые значения остаются ниже данных...а вот если бы они были в перемешку?...Тогда бы тоже проще можно было бы придумать - в новый (двумерный-о,ужас))) Массив записать все значения, которые не пустые...

п.с.ужас какой-то - даже удалить просто-то ничего нельзя...см.скрин

п.с.2...соединять с расчетом буду завтра, на сегодня - это уже перебор)))

Спасибо огромное,никогда бы не догадалась за обратный цикл в удалении пустых элементов из массива!!!
---
Наворотила что-то ужасное....Мысль,конечно,заложена, но пока не работает механизм с многочисленными операциями. Что получилось - выкладываю здесь, может кто-то ради тренировки работы с массивами и таблицами значений приведет этот механизм в норм...может я когда-нибудь попозже все-таки смогу ее замучить...на пока хватит))
---
Ура, домучила все-таки свою обработку Калькулятора с использованием Массивов и ТаблицыЗначений. Получилось очень интересно, но этот калькулятор у меня считает только Целые одноразрядные числа....Зато несколько операций сразу, выбирать нужно из четырех операций:+/*-

Да, еще с самой строкой Ввода какая-то непонятка...С самого начала она у меня в значении Реквизита1 была задана как ограниченная строка (10символов кажется), когда мне захотелось сделать ее безразмерной, то просто сам Реквизит1 - обозначила как безразмерная строка, но при рассчетах - система почему-то видит все равно не более 11 символов....Пришлось вновь ограничитель поставить в 11 Символов, с чем это связано - не знаю, если есть у кого-нибудь идея, то поделитесь мыслью.