27.12.2019 Иван Каплин 28497
Массивы на платформе 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С:Бухгалтерия 8 ПРОФ» в компании «Мостехника»
ООО «Мостехника»

Отрасль:
Торговля

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

Документооборот (ECM):
- Учет рабочего времени;
Управление персоналом и ка...

Внедрение системы финансового учета БИТ:Финанс
ООО «Алькор и Ко» (Л’Этуаль)

Отрасль:
Торговля

Внедренное типовое решение:
БИТ.Финанс

- Финансовый учет;
- Поддержка проекта внедрения МСФО;
- Регламентные рабо...

Внедрение блока расчета себестоимости РАУЗ в 1С:УПП 8
ООО «Пелигрин Матен»

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

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

– Оформление заказов покупателей;
– Взаиморасчеты с покупателями;
– О...

 ЗАО "Инвестгеосервис" -ДО
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

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

- Работа с файлами;
- Делопроизводство;
- Процессы движения документов; ...

Автоматизация интеграции с информсистемами клиентов на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

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

Внедренное типовое решение:
«1С:Предприятие 8. WMS Логистика. Управление складом»

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

Группа компаний ТМ «Дружба народов»
Группа компаний ТМ «Дружба народов»

Отрасль:
Пищевая промышленность

Внедренное типовое решение:
1С:ERP Управление предприятием 2.1

- Переход на новый релиз 2.1 программы «1С:ERP Управление предприятием»
- Разра...

ООО «Мир Аксиомы»
ООО «Мир Аксиомы»

Отрасль:
Аудиторские и консалтинговые услуги

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

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

ООО «Аэроэкспресс»
ООО «Аэроэкспресс»

Отрасль:

Внедренное типовое решение:
1С:ERP. Управление холдингом

· Планирование закупок · Управление закупочными процедурами, включая 223 ФЗ ...

ООО «Экслтрейд»
ООО «Экслтрейд»

Отрасль:
Торговля

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

Оформление заказов поставщикам Оптовая торговля Торговые операции ...

ЗАО «Ламбумиз»
ЗАО «Ламбумиз»

Отрасль:
Производство картонной упаковки

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Маркетинг;
- Продажи;
- Планирование закупок;
- Закупки;
- Регламенти...

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

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

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

- Бухгалтерский учет
- Расчет зарплаты и кадровый учет
- Налоговый учет ...

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

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

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

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