27.12.2019 Иван Каплин 29342
Массивы на платформе 1С 8.3

Содержание:

1.     Описание из синтакс-помощника

2.     Как сформировать новый Массив

3.     Способы заполнения Массива

4.     Обход Элементов Коллекции

 

Массив (тип значения 1С Массив) – это простейшая универсальная коллекция значений в информационной системе 1С, где элементы упорядочены по индексу (нумерация начинается с 0). Тип значения элементов может быть любой, включая тип значения Массив. Доступ к элементам массива осуществляется через индекс, по номеру которого можно получить доступ к значению элемента на платформе 1С 8.3. 

 

1.    Описание из синтакс-помощника


Доступность синтакс-помощника: Тонкий клиент 1С, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: Array. 

 

2.    Как сформировать новый Массив


Чтобы сформировать новый Массив, нужно присвоить переменной типа значения «Массив». Каждый Элемент в таком Массиве 1С, получает тип значения «Неопределено». В параметрах создания можно указать, какой Массив хотите создать.


Для пустого Массива:

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

Для создания одномерного Массива (одна колонка):

         МойНовыйМассив = Новый Массив(ЧислоЭлементов);

Для создания N-мерногоМассива, где каждый Элемент так же Массив:

         МойНовыйМассив = Новый Массив(ЭлементовПервогоУровня, ЭлементовВторогоУровня, …, ЭлементовN-Уровня);


В этом случае каждый Элемент первого уровня будет иметь тип значения Массив, внутри которого каждый Элемент второго уровня будет так же типом значения Массив и так далее, где на N-уровне Элементы будут с типом значения «Неопределено». Следовательно, количество Элементов в таком Массиве будет равно: ЭлементовПервогоУровня * ЭлементовВторогоУровня* … * ЭлементовN-Уровня


3.    Способы заполнения Массива


Существует несколько способов заполнения Массива.

1.     Метод «Добавить».

Добавляет Элемент в конец Массива:

МойНовыйМассив.Добавить(«Строка»)                         Поле типа Строка

МойНовыйМассив.Добавить(42)                                      Поле типа Число

МойНовыйМассив.Добавить(‘20190315123501’)          Поле типа Дата состав Дата и время

МойНовыйМассив.Добавить(‘20190315’)                        Поле типа Дата состав Дата


Также любому Элементу может быть присвоен тип значения «Массив». Например:

МойНовыйМассив.Добавить(Новый Массив)                     Поле типа Массив

 

2.     Метод «Вставить».

Следует отличать его от Метода «Добавить». Последний добавляет Элемент в конец Массива, а первый присваиваетновое значение Элементу:

МойНовыйМассив.Вставить(НомерИндекса,НовоеЗначениеЭлемента)

 

3.     Метод «Количество».

Посредством метода доступно получение количество Элементов в Массиве. Следует обратить внимание, что Количество будет всегда на единицу больше последнего значения Индекса:

МойНовыйМассив.Количество()

 

4.     Метод «Найти». Позволяет найти уникальный Элемент в Массиве, если такой элемент не будет найден, то возвращает значение «Неопределено»:

МойНовыйМассив.Найти(«Слово»)

МойНовыйМассив.Найти(42)

МойНовыйМассив.Найти(’20190315’)

 

5.     Метод «Очистить».

Позволяет удалить все Элементы Массива делая его пустым:

МойНовыйМассив.Очистить()

 

6.     Метод «Получить».

Позволяет получить значение Элемента по его Индексу:

МойНовыйМассив.Получить(ИндексЭлемента)

 

7.     Метод «Удалить».

Позволяет удалить Элемент из Массива по Индексу:

МойНовыйМассив.Удалить(ИндексУдаляемогоЭлемента)

 

8.     Метод «Установить».

Позволяет установить новое значение Элемента по Индексу, когда использование оператора [] (например,МойНовыйМассив[ИндексЭлемента]) невозможно.

МойНовыйМассив.Установить(ИндексЗаменяемогоЭлемента,НовоеЗначениеЭлемента)

 

9.     Метод «ВГраница».

Позволяет получить наибольший Индекс в Массиве. Если Массив пустой, то возвращает-1:

МойНовыйМассив.ВГраница   

 

4.    Обход Элементов Коллекции


Для данной Коллекции значений доступен обход Элементов Коллекции посредством оператора «Для каждого». При обходе в Циклах выбираются значения Элементов Массива в порядке возрастания Индекса:

Для каждого ЭлементИз МассивЦикл

<Описание событий / вычислений>

КонецЦикла;


Например, при необходимости заменить Элементы на другие значения:

НовоеЧисловоеЗначение = 5;

Для каждого ЭлементИз МойНовыйМассивЦикл

           Элемент = НовоеЧисловоеЗначение;

                   НовоеЧисловоеЗначение = (НовоеЧисловоеЗначение + 7) / 2;

КонецЦикла;

 

При этом возможен также обход Массива по иному порядку, используя оператор «Для». Следует учитывать, что в таком случае необходимо указывать границу Массива. Иначе по окончанию обхода цикла будет вызвана ошибка «Индекс находится за границами Массива»:

Для Итератор = 0ПоМойНовыйМассив.ВГраница()Цикл

<Описание событий / вычислений>

КонецЦикла;


Например, при необходимости выбрать из Массива все значения типа Число и перенести их в новый Массив:

МассивДляЧисел = Новый Массив();

Для Итератор = 0ПоМойНовыйМассив.ВГраница()Цикл

           ЗначениеЭлемента = МойНовыйМассив[Итератор];

           ЕслиЗначениеЭлемента= Тип («Число») Тогда

                     МассивДляЧисел.Добавить(ЗначениеЭлемента);

                     МойНовыйМассив.Удалить(Итератор);

           КонецЕсли;

КонецЦикла;

 

При выполнении обхода многомерных Массивов выполняются те же конструкции, только с учетом мерности Массивов. Так, например, для трехмерного Массива обход его элементов будет выглядеть следующим образом:

Для Итератор1 = 0ПоМассив.ВГраница()Цикл

            Сообщить (Массив[Итератор1]);

            Для Итератор2 = 0ПоМассив[Итератор1].ВГраница()Цикл

                        Сообщить (Массив[Итератор1][Итератор2]);

                        Для Итератор3 = 0ПоМассив[Итератор1][Итератор2].ВГраница()Цикл

                                    Сообщить (Массив[Итератор1] [Итератор2][Итератор3]);

                        КонецЦикла;

            КонецЦикла;

КонецЦикла;

 

Специалист компании ООО «Кодерлайн» 

Иван Каплин.

Наши проекты

Автоматизация учета на базе ПП "1С:Комплексная автоматизация 8" в ЗАО "Крюгер-Гранд"
ЗАО «Крюгер-Гранд»

Отрасль:
Производство

Внедренное типовое решение:
1С:Комплексная автоматизация

- Создание интерфейсов и наборов прав пользователей;
- Отражению временных ...

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Бухгалтерия КОРП

Бухгалтерский учет Производственные операции Регламентированная отчетнос...

ПЭК
ПЭК

Отрасль:
Грузоперевозки

Внедренное типовое решение:
1С:Управление производственным предприятием

- Внедрение функционала управления НСИ;
- Рефакторинг;
- Оптимизация общег...

ООО «Стейдж Энтертейнмент Россия»
ООО «Стейдж Энтертейнмент Россия»

Отрасль:
Театральная деятельность

Внедренное типовое решение:
Платформа 1С:Предприятие 8

Реализован процесс трансформации данных бухгалтерского учета по РСБУ в дан...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

Управление отношениями с клиентами (CRM) ...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

Кадровый учет;
Расчет зарплаты;...

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Зарплата и управление персоналом

Управление персоналом и кадровый учет (HRM) Кадровый учет Расчет зарплаты Рег...

ООО «Вистеон Автоприбор Электроникс»
ООО «Вистеон Автоприбор Электроникс»

Отрасль:

Внедренное типовое решение:
1C:Управление производственным предприятием

- Управленческий учет; - Расчет зарплаты; - Логистика адресного склада; - Учет ...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

Внедренное типовое решение:
«1С:Управление корпоративными финансами»

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

Автоматизация торговых операций на базе "1С:Управление торговлей" в ОАО "Авиазапчасть"
ОАО «Авиазапчасть»

Отрасль:
Авиационно-космическая промышленность

Внедренное типовое решение:
1С:Управление торговлей

- Оптовая торговля;
- Оформление заказов покупателей;
- Планирование прод...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам
- Оформление заказов покупателей
- Упр...

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение