В программе 1С можно создавать массивы и использовать функции, связанные с ними. Благодаря этому вы сумеете упорядочить элементы и будете обращаться к ним по индексу. Чтобы работать с коллекциями значений, надо разбираться в программировании. Ведь все данные придётся вводить вручную — без графического интерфейса, кнопок или диалоговых окон. Например, чтобы преобразовать в 1С массив в строку и разделить её на группу подстрок, используют операторы, которые входят в синтаксис утилиты. Для этого нужно хотя бы общее представление об алгоритмах.
О массивах
Это программный набор элементов. Он служит для:
- Отбора значений.
- Сортировки. Каждой позиции в массиве присваивается индекс. Это облегчает поиск. И вы можете сослаться на объект, написав его номер.
- Объединения и сохранения записей.
- Разделения групп, создания подстрок.
- Массив — сам по себе объект. К нему будет привязана переменная. Можно обратиться к отдельным его частям или использовать его целиком в процедурах. Например, можно объединить группу значений «Сотрудники отдела N» и внести туда имена и фамилии работников.
Проведём аналогию. Представьте книжный шкаф. Книги в нём расставлены по разным «ячейкам». Если вести учёт, вы будете знать, где находится каждый объект. И без труда его достанете. Но если книги, журналы и газеты хаотично разбросаны на столе, поиск нужной вещи затянется. Хотя это не отражает все возможности уникальных коллекций.
Создание
Работа с массивами 1С начинается с их создания. Нужно «место действия» — поле, в котором вы будете вводить код.
- Откройте «Конфигуратор» («Конфигурация»).
- Кликните правой кнопкой мыши по пункту «Обработка».
- Выберите «Добавить».
- Появится подменю «Обработка1». Выделите его. Информация о нём отобразится в рабочей области.
- На вкладке «Основные» введите «Имя». Скажем, «ТестовыйМассив».
- Откройте раздел «Формы».
- Нажмите на значок в виде лупы.
- Отметьте опцию «Форма обработки».
- Щёлкните на «Готово».
- Откроется окно с тремя фреймами. В правом верхнем перейдите в закладку «Команды».
- Иконка в виде плюса, чтобы добавить позицию.
- Появится пункт «Команда1». Выделите его.
- В поле «Имя» введите название. К примеру, «ТестовыеЗначения». Скопируйте его в «Заголовок».
- В строке «Действие» нажмите на лупу.
- Пункт «Создать на клиенте» и «OK».
- Вот и модуль, в котором можно вводить код.
Чтобы выводить промежуточный результат, создайте «кнопку». Зачем она нужна в массиве — вы поймёте чуть позже.
- Перейдите на вкладку «Формы». Она внизу.
- Щёлкните правой кнопкой мыши на «Командная панель».
- «Добавить — Кнопка».
- Придумайте ей любое название. Или можете оставить то, которое выдано по умолчанию.
- В поле «Имя команды» нажмите на пиктограмму в виде многоточия.
- Выберите «ТестовыеЗначения». Если назвали команду по-другому, там будет иной заголовок.
Теперь можно приступать к работе с коллекциями. Но не думайте, что в 1С сразу сможете разложить строку в массив. Лучше начать с чего-нибудь полегче. Хотя все функции — это набор операторов, которые надо просто запомнить.
- Откройте закладку «Модуль».
- Текст, который идёт после двух косых чёрточек (два слеша — «//») можно удалить. Он выглядит примерно так «// Вставить содержимое обработчика». Это пояснения. Их пишут программисты, чтобы не запутаться в коде.
- Свой текст пишите между операторами «Процедура» и «КонецПроцедуры».
- Теперь создайте набор значений. Придумайте переменную, которая будет условно его обозначать. Допустим, «ПервыйМассив».
- Её надо связать с объектом. Для этого введите команду «ПервыйМассив = Новый массив ()». Это коллекция, в которой может быть неограниченное количество элементов. Если у вас фиксированный размер, укажите его после команды в скобках «Новый массив (5)». Соответственно, двумерная коллекция будет выглядеть «Новый массив (7, 5)». Можно создавать многомерные наборы.
- При вводе могут появиться подсказки, которые предлагают подходящие операторы.
- Слова различаются по цвету. У переменных одна расцветка, у функций — другая.
- После каждой команды ставьте точку с запятой «;». И для удобства начинайте с нового абзаца.
- С пустым множеством ничего сделать нельзя. Ни упорядочить, ни вывести, ни разложить строку в массив в 1С. Поэтому надо вставить в него элементы.
- Введите «ПервыйМассив.Добавить(Значение1);». Потом «ПервыйМассив.Добавить(Значение2);» и так далее.
- Объекты нумеруются с нуля. То есть переменной «Значение1» будет присвоен индекс «0». Можете сами заполнять коллекцию со «Значение0», чтобы не перепутать.
Для чего всё это? И зачем та загадочная «кнопка»? Попробуем запустить простенькую функцию.
- Под коллекцией напишите команду «Сообщить (ПервыйМассив[0]);» В квадратных скобках указан индекс элемента. То есть адрес нашего «Значение0».
- Отформатируйте модуль. Это проверка на наличие ошибок. В больших блоках можно что-то недоделать по невнимательности: не поставить точку с запятой, не закрыть скобку, неправильно написать переменную. Компилятор на это укажет.
- Нажмите на кнопку в виде знака «Плей» (треугольник в круге), чтобы запустить написанную вами программу.
- Кликните на «Сервис» и выберите вашу кнопку.
- Нажмите её.
- Появится надпись «Значение0». Это и есть результат выполнения функции.
Показана самая простая операция, чтобы вы поняли, как вообще работают массивы. С ними можно создавать сложные и многоуровневые программы. Выводить объекты, сортировать, удалять повторы, разбивать на набор подстрок, объединять, разделять, искать сведения. Нужно лишь знать операторы.
Функции
Все доступные функции есть в справочнике программы. Перечислим несколько, чтобы показать принцип.
Как превратить массив 1С в строку:
ТестМассив = Новый Массив(4);ТестМассив[0] = Это;ТестМассив[1] = Делается;ТестМассив[2] = Так;СтрокаТест = ЗначениеВСтрокуВнутр(ТестМассив);Сообщить(СтрокаТест);
Выводите на «Кнопку» и получаете фразу. Это может быть частью большого модуля — в таком случае оператор «Сообщить» не нужен.
Чтобы в 1С разложить строку в массив подстрок, нужен разделитель. Условная метка, после которой текст будет делиться. Допустим, есть слово «Протокол». И мы поставим разделитель «О». Введите команду «ТестМассив = РазложитьСтрокуВМассив(Протокол, “О”) ;» Получится отдельно «Пр», «Т», «К» и «Л». Разделитель стёрт. А слово разделено на несколько подстрок.
Вот как это можно применить на практике. У вас есть массив с ФИО сотрудников. И вам нужно, чтобы при выборе позиции автоматически заполнялись поля «Фамилия», «Имя» и «Отчество». Для этого ФИО надо разбить на три составляющих. В качестве разделителя используйте «пробел».
Обычно для этого используется сложный модуль: цикл с большим количеством операторов. Циклические блоки с условием строятся по принципу «Если (условие), тогда (действие1), иначе (действие2)». Вначале программа проверяет, выполняется ли условие. Если да, то она запускает первую функцию. Если нет — вторую.
Цикл проверит каждый символ в строке. Если там нет разделителя, он продолжает дальше. Если там есть разделитель, он добавляет значение в набор подстрок. Там могут использоваться и другие операторы: к примеру, «СокрЛП» — сокращение определённых знаков справа и слева от строки.
Каждый модуль надо «заканчивать», чтобы утилита прекратила выполнение процедуры. На цикле с «Если» этот оператор — «КонецЕсли». На цикле без условий — «КонецЦикла». Каждую функцию надо отдельно завершать.
Поиск и сортировка
В коллекциях может находиться огромное количество данных. Надо научиться их искать и сортировать.
Чтобы запустить поиск в массиве в 1С, используйте оператор «Найти». Отыскать нужное значение можно и визуально. Но если там сотни элементов, лучше создать дополнительный модуль и запустить подпрограмму. Покажем на примере простой функции. Но это подойдёт для любых блоков.
МассивТест = Новый Массив(3);МассивТест[0] = “Телефон”;МассивТест[1] = “Ноутбук”;МассивТест[2] = “Компьютер”;Индекс = МассивТест.Найти(“Телефон”);Если Индекс ‹› Неопределено ТогдаСообщить (“Поиск завершён” + МассивТест[Индекс]);
И не забудьте поставить «завершающий оператор».
Коллекция подана для примера. Мы создали набор из трёх значений. И сделали небольшой цикл. Если утилита не найдёт подходящий элемент, она выдаст сообщение «Неопределено». Если отыщет, покажет результат.
Сортировка массива 1С просто незаменима при работе с большим объёмом данных. В них же надо как-то ориентироваться. Лучше расставить их в определённом порядке. Допустим, есть у вас коллекция «ВашМассив». Чтобы привести её «в порядок»
ТестСписок = Новый СписокЗначений;ТестСписок.ЗагрузитьЗначения(ВашМассив);ТестСписок.СортироватьПоЗначению(НаправлениеСортировки.Возр);ВашМассив = ТестСписок.ВыгрузитьЗначения();
Вместо «Возр» можете поставить «Убыв». Также результат можно выгрузить в таблицу значений:
ТестоваяТаблица = Новый ТаблицаЗначений;ТестоваяТаблица.Колонки.Добавить(“Колонка”);ТестоваяТаблица.ЗагрузитьКолонку(ВашМассив, “Колонка”);ТестоваяТаблица.Сортировать(“Колонка Убыв”);ВашМассив = ТестоваяТаблица.ВыгрузитьКолонку(“Колонка”)
Существуют и сложные методы сортировки: «Пузырьковая», «Быстрая», «Шейкер», «Рекурсия». У них многоуровневые и длинные алгоритмы.
Таблицы и списки
Информацию можно переправлять между разными видами коллекций. Чтобы перенести в 1С массив в таблицу значений:
МассивТелеф = Новый Массив;МассивТелеф.Добавить(“Смартфон”);МассивТелеф.Добавить(“Планшет”);МассивТелеф.Добавить(“Телефон”);ТаблицаТест = Новый ТаблицаЗначений;ТаблицаТест.Колонки.Добавить(“Мобильники”);ТаблицаТест.Добавить();ТаблицаТест.Добавить();ТаблицаТест.Добавить();ТаблицаТест.ЗагрузитьКолонку(МассивТелеф, “Мобильники”);Для Каждого Строка Из ТаблицаТест ЦиклСообщить(Строка.Мобильники);
Не забудьте поставить в конце оператор завершения цикла.
Преобразовать в 1С массив в список значений совсем просто. Достаточно лишь выгрузить данные из одной коллекции в другую.
НовСписок = Новый СписокЗначений();НовСписок.ЗагрузитьЗначения(ВашМассив);
В программировании одну проблему можно решить разными способами. И 1С — не исключение. Линейные алгоритмы, циклы, циклы с условием, циклы со счётчиком. Вариантов много. Чтобы ориентироваться в массиве, нужны некоторые навыки работы в 1С.
Источник: winzen.ru