Всё о массивах в 1С: для чего нужны и как с ними работать

В программе 1С можно создавать массивы и использовать функции, связанные с ними. Благодаря этому вы сумеете упорядочить элементы и будете обращаться к ним по индексу. Чтобы работать с коллекциями значений, надо разбираться в программировании. Ведь все данные придётся вводить вручную — без графического интерфейса, кнопок или диалоговых окон. Например, чтобы преобразовать в 1С массив в строку и разделить её на группу подстрок, используют операторы, которые входят в синтаксис утилиты. Для этого нужно хотя бы общее представление об алгоритмах.

Как работать с массивами в 1С

Применение массивов в 1С помогает упорядочить используемые в работе элементы.

О массивах

Это программный набор элементов. Он служит для:

  • Отбора значений.
  • Сортировки. Каждой позиции в массиве присваивается индекс. Это облегчает поиск. И вы можете сослаться на объект, написав его номер.
  • Объединения и сохранения записей.
  • Разделения групп, создания подстрок.
  • Массив — сам по себе объект. К нему будет привязана переменная. Можно обратиться к отдельным его частям или использовать его целиком в процедурах. Например, можно объединить группу значений «Сотрудники отдела N» и внести туда имена и фамилии работников.

Проведём аналогию. Представьте книжный шкаф. Книги в нём расставлены по разным «ячейкам». Если вести учёт, вы будете знать, где находится каждый объект. И без труда его достанете. Но если книги, журналы и газеты хаотично разбросаны на столе, поиск нужной вещи затянется. Хотя это не отражает все возможности уникальных коллекций.

Создание

Работа с массивами 1С начинается с их создания. Нужно «место действия» — поле, в котором вы будете вводить код.

  1. Откройте «Конфигуратор» («Конфигурация»).
  2. Кликните правой кнопкой мыши по пункту «Обработка».
  3. Выберите «Добавить».
  4. Появится подменю «Обработка1». Выделите его. Информация о нём отобразится в рабочей области.
  5. На вкладке «Основные» введите «Имя». Скажем, «ТестовыйМассив».
  6. Откройте раздел «Формы».
  7. Нажмите на значок в виде лупы.
  8. Отметьте опцию «Форма обработки».
  9. Щёлкните на «Готово».
  10. Откроется окно с тремя фреймами. В правом верхнем перейдите в закладку «Команды».
  11. Иконка в виде плюса, чтобы добавить позицию.
  12. Появится пункт «Команда1». Выделите его.
  13. В поле «Имя» введите название. К примеру, «ТестовыеЗначения». Скопируйте его в «Заголовок».
  14. В строке «Действие» нажмите на лупу.
  15. Пункт «Создать на клиенте» и «OK».
  16. Вот и модуль, в котором можно вводить код.

Образец работы массива

Чтобы выводить промежуточный результат, создайте «кнопку». Зачем она нужна в массиве — вы поймёте чуть позже.

  1. Перейдите на вкладку «Формы». Она внизу.
  2. Щёлкните правой кнопкой мыши на «Командная панель».
  3. «Добавить — Кнопка».
  4. Придумайте ей любое название. Или можете оставить то, которое выдано по умолчанию.
  5. В поле «Имя команды» нажмите на пиктограмму в виде многоточия.
  6. Выберите «ТестовыеЗначения». Если назвали команду по-другому, там будет иной заголовок.

Вызов формы

Теперь можно приступать к работе с коллекциями. Но не думайте, что в 1С сразу сможете разложить строку в массив. Лучше начать с чего-нибудь полегче. Хотя все функции — это набор операторов, которые надо просто запомнить.

  1. Откройте закладку «Модуль».
  2. Текст, который идёт после двух косых чёрточек (два слеша — «//») можно удалить. Он выглядит примерно так «// Вставить содержимое обработчика». Это пояснения. Их пишут программисты, чтобы не запутаться в коде.
  3. Свой текст пишите между операторами «Процедура» и «КонецПроцедуры».
  4. Теперь создайте набор значений. Придумайте переменную, которая будет условно его обозначать. Допустим, «ПервыйМассив».
  5. Её надо связать с объектом. Для этого введите команду «ПервыйМассив = Новый массив ()». Это коллекция, в которой может быть неограниченное количество элементов. Если у вас фиксированный размер, укажите его после команды в скобках «Новый массив (5)». Соответственно, двумерная коллекция будет выглядеть «Новый массив (7, 5)». Можно создавать многомерные наборы.
  6. При вводе могут появиться подсказки, которые предлагают подходящие операторы.
  7. Слова различаются по цвету. У переменных одна расцветка, у функций — другая.
  8. После каждой команды ставьте точку с запятой «;». И для удобства начинайте с нового абзаца.
  9. С пустым множеством ничего сделать нельзя. Ни упорядочить, ни вывести, ни разложить строку в массив в 1С. Поэтому надо вставить в него элементы.
  10. Введите «ПервыйМассив.Добавить(Значение1);». Потом «ПервыйМассив.Добавить(Значение2);» и так далее.
  11. Объекты нумеруются с нуля. То есть переменной «Значение1» будет присвоен индекс «0». Можете сами заполнять коллекцию со «Значение0», чтобы не перепутать.

Для чего всё это? И зачем та загадочная «кнопка»? Попробуем запустить простенькую функцию.

  1. Под коллекцией напишите команду «Сообщить (ПервыйМассив[0]);» В квадратных скобках указан индекс элемента. То есть адрес нашего «Значение0».
  2. Отформатируйте модуль. Это проверка на наличие ошибок. В больших блоках можно что-то недоделать по невнимательности: не поставить точку с запятой, не закрыть скобку, неправильно написать переменную. Компилятор на это укажет.
  3. Нажмите на кнопку в виде знака «Плей» (треугольник в круге), чтобы запустить написанную вами программу.
  4. Кликните на «Сервис» и выберите вашу кнопку.
  5. Нажмите её.
  6. Появится надпись «Значение0». Это и есть результат выполнения функции.

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

Тестовая форма

Функции

Все доступные функции есть в справочнике программы. Перечислим несколько, чтобы показать принцип.

Как превратить массив 1С в строку:

ТестМассив = Новый Массив(4);
ТестМассив[0] = Это;
ТестМассив[1] = Делается;
ТестМассив[2] = Так;
СтрокаТест = ЗначениеВСтрокуВнутр(ТестМассив);
Сообщить(СтрокаТест);

Выводите на «Кнопку» и получаете фразу. Это может быть частью большого модуля — в таком случае оператор «Сообщить» не нужен.

Чтобы в 1С разложить строку в массив подстрок, нужен разделитель. Условная метка, после которой текст будет делиться. Допустим, есть слово «Протокол». И мы поставим разделитель «О». Введите команду «ТестМассив = РазложитьСтрокуВМассив(Протокол, «О») ;» Получится отдельно «Пр», «Т», «К» и «Л». Разделитель стёрт. А слово разделено на несколько подстрок.

Вот как это можно применить на практике. У вас есть массив с ФИО сотрудников. И вам нужно, чтобы при выборе позиции автоматически заполнялись поля «Фамилия», «Имя» и «Отчество». Для этого ФИО надо разбить на три составляющих. В качестве разделителя используйте «пробел».

Работа массива Сотрудники

Обычно для этого используется сложный модуль: цикл с большим количеством операторов. Циклические блоки с условием строятся по принципу «Если (условие), тогда (действие1), иначе (действие2)». Вначале программа проверяет, выполняется ли условие. Если да, то она запускает первую функцию. Если нет — вторую.

Цикл проверит каждый символ в строке. Если там нет разделителя, он продолжает дальше. Если там есть разделитель, он добавляет значение в набор подстрок. Там могут использоваться и другие операторы: к примеру, «СокрЛП» — сокращение определённых знаков справа и слева от строки.

Каждый модуль надо «заканчивать», чтобы утилита прекратила выполнение процедуры. На цикле с «Если» этот оператор — «КонецЕсли». На цикле без условий — «КонецЦикла». Каждую функцию надо отдельно завершать.

Поиск и сортировка

В коллекциях может находиться огромное количество данных. Надо научиться их искать и сортировать.

Чтобы запустить поиск в массиве в 1С, используйте оператор «Найти». Отыскать нужное значение можно и визуально. Но если там сотни элементов, лучше создать дополнительный модуль и запустить подпрограмму. Покажем на примере простой функции. Но это подойдёт для любых блоков.

МассивТест = Новый Массив(3);
МассивТест[0] = «Телефон»;
МассивТест[1] = «Ноутбук»;
МассивТест[2] = «Компьютер»;
Индекс = МассивТест.Найти(«Телефон»);
Если Индекс ‹› Неопределено Тогда
Сообщить («Поиск завершён» + МассивТест[Индекс]);

И не забудьте поставить «завершающий оператор».

Коллекция подана для примера. Мы создали набор из трёх значений. И сделали небольшой цикл. Если утилита не найдёт подходящий элемент, она выдаст сообщение «Неопределено». Если отыщет, покажет результат.

Сортировка массива 1С просто незаменима при работе с большим объёмом данных. В них же надо как-то ориентироваться. Лучше расставить их в определённом порядке. Допустим, есть у вас коллекция «ВашМассив». Чтобы привести её «в порядок»

ТестСписок = Новый СписокЗначений;
ТестСписок.ЗагрузитьЗначения(ВашМассив);
ТестСписок.СортироватьПоЗначению(НаправлениеСортировки.Возр);
ВашМассив = ТестСписок.ВыгрузитьЗначения();

Вместо «Возр» можете поставить «Убыв». Также результат можно выгрузить в таблицу значений:

ТестоваяТаблица = Новый ТаблицаЗначений;
ТестоваяТаблица.Колонки.Добавить(«Колонка»);
ТестоваяТаблица.ЗагрузитьКолонку(ВашМассив, «Колонка»);
ТестоваяТаблица.Сортировать(«Колонка Убыв»);
ВашМассив = ТестоваяТаблица.ВыгрузитьКолонку(«Колонка»)

Существуют и сложные методы сортировки: «Пузырьковая», «Быстрая», «Шейкер», «Рекурсия». У них многоуровневые и длинные алгоритмы.

Таблицы и списки

Информацию можно переправлять между разными видами коллекций. Чтобы перенести в 1С массив в таблицу значений:

МассивТелеф = Новый Массив;
МассивТелеф.Добавить(«Смартфон»);
МассивТелеф.Добавить(«Планшет»);
МассивТелеф.Добавить(«Телефон»);
ТаблицаТест = Новый ТаблицаЗначений;
ТаблицаТест.Колонки.Добавить(«Мобильники»);
ТаблицаТест.Добавить();
ТаблицаТест.Добавить();
ТаблицаТест.Добавить();
ТаблицаТест.ЗагрузитьКолонку(МассивТелеф, «Мобильники»);
Для Каждого Строка Из ТаблицаТест Цикл
Сообщить(Строка.Мобильники);

Не забудьте поставить в конце оператор завершения цикла.

Пример сортировки массива

Преобразовать в 1С массив в список значений совсем просто. Достаточно лишь выгрузить данные из одной коллекции в другую.

НовСписок = Новый СписокЗначений();
НовСписок.ЗагрузитьЗначения(ВашМассив);

В программировании одну проблему можно решить разными способами. И 1С — не исключение. Линейные алгоритмы, циклы, циклы с условием, циклы со счётчиком. Вариантов много. Чтобы ориентироваться в массиве, нужны некоторые навыки работы в 1С.

  • ВКонтакте
  • facebook
  • обычная форма
  • Оставить комментарий

сети
программы
Smart TV
ос
не нашли ответ?

Задайте вопрос нам!