27.12.2019 Иван Каплин 26202
Массивы на платформе 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С:Управление производственным предприятием»
ОАО «Издательство «Просвещение»

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

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

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

Внедрение блоков в 1С:Комплексная автоматизация 8
ООО «Больцен Рус»

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

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

- Оперативный учет...

ХИТЕК-ГРУП
ХИТЕК-ГРУП

Отрасль:
Продажа парикмахерского инструмента и аксессуаров

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

Документооборот (ECM)
• Делопроизводство
Управление бизнес-процессами и ИТ процессами
• Автоматизация бизнес-процессов
Управлени...

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

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

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

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

АО «РЭП Холдинг»
АО «РЭП Холдинг»

Отрасль:
Энергомашиностроительный холдинг

Внедренное типовое решение:
«1С: Управление производственным предприятием» и «1С:Консолидация ПРОФ»

- Функциональный блок «Консолидированная отчетность РСБУ» - разработка частного технического задания - Функциональный блок «Консолидированн...

Внедрение 1С:Управление торговлей в оптово-розничной компании «Ална-Байк»
ИП Титов Виктор Сергеевич «Ална-Байк»

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

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

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

ООО “РТИТС”
ООО “РТИТС”

Отрасль:
Транспортные системы

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

Блок регламентированного кадрового учета и расчета заработной платы в 1С:ERP;
Согласование договоров, командировок в ДО;
Контроль испо...

АО «Вертолетная сервисная компания»
АО «Вертолетная сервисная компания»

Отрасль:
МТО эксплуатации вертолетной техники

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

- Консультации по сложным вопросам налогового и бухгалтерского учета;
- Разработка специализированных форм внутрикорпоративной отчетност...

Доработка конфигурации Заказчика «1С:Управление строительной организацией»
ЗАО «Стройтрансгаз»

Отрасль:
Проектирование

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

Взаиморасчеты с поставщиками;
- Оформление заказов поставщикам;
- Склад и логистика;
- Транспорт;
- Планирование расхода ГС...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление заказов покупателей;
- Планирование продаж ...

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

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

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

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

Внедрение ПП "1С:CRM ПРОФ" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

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

Внедренное типовое решение:
1С:CRM ПРОФ

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

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

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

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

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