2.1. Массивы

Как создать массив?

СозданныйМассив = Новый Массив(); СозданныйМассив = Новый Массив(10);

Как создать многомерный массив?

ДвумерныйМассив = Новый Массив(2, 8); ДвумерныйМассив = Новый Массив; МассивВторогоПорядка = Новый Массив(8); ДвумерныйМассив.Добавить(МассивВторогоПорядка); ДвумерныйМассив.Добавить(МассивВторогоПорядка); Значение = ДвумерныйМассив[2][5]; Значение = ДвумерныйМассив.Получить(2).Получить(5);

Как добавить элементы в массив?

НашМассив.Добавить(НовоеЗначение); Массив = Новый Массив; Массив.Вставить(5, "ООО ""Лабан""");

Как определить размер массива?

Размер = НашМассив.Количество();

Как обратиться к элементу массива?

ПервоеЗначение = НашМассив[0]; НашМассив[9] = ДесятоеЗначение; ПервоеЗначение = НашМассив.Получить(0); НашМассив.Установить(9, ДесятоеЗначение);

Как перебрать элементы массива?

Для Каждого ЭлементМассива Из МассивЭлементов Цикл Если ТипЗнч(ЭлементМассива) = Тип("Число") Тогда Сообщение(ЭлементМассива); КонецЕсли; КонецЦикла; Для Сч = 0 по МассивЭлементов.ВГраница() Цикл Если ТипЗнч(МассивЭлементов[Сч]) = Тип("Число") Тогда МассивЭлементов[Сч] = 0; КонецЕсли; КонецЦикла;

Как удалить элемент массива?

МассивЭлементов.Удалить(0); Индекс = МассивЭлементов.ВГраница();Пока Индекс >= 0 Цикл Если ТипЗнч(МассивЭлементов[Индекс]) = Тип("Число") Тогда МассивЭлементов.Удалить(Индекс); КонецЕсли; Индекс = Индекс - 1; КонецЦикла;

Как удалить все элементы массива?

Массив.Очистить();

Как удалить повторяющиеся элементы массива?

Процедура УдалитьПовторяющиесяЭлементы(Массив) ТекущийИндекс = 0; ВсегоЭлементов = Массив.Количество(); Пока ТекущийИндекс < ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 < ВсегоЭлементов Цикл Если Массив[Индекс2] = Массив[ТекущийИндекс] Тогда Массив.Удалить(Индекс2); ВсегоЭлементов = ВсегоЭлементов - 1; Иначе Индекс2 = Индекс2 + 1; КонецЕсли; КонецЦикла; ТекущийИндекс = ТекущийИндекс + 1; КонецЦикла;

КонецПроцедуры

Как скопировать массив?

Функция СкопироватьМассив(ИсходныйМассив) МассивКопия = Новый Массив; Для Каждого Элемент Из ИсходныйМассив Цикл МассивКопия.Добавить(Элемент); КонецЦикла; Возврат МассивКопия; КонецФункции

Как проверить, что два массива идентичны?

Функция ПроверитьИдентичностьМассивов(ПервыйМассив, ВторойМассив) НаибольшийИндекс = ПервыйМассив.ВГраница(); Если НаибольшийИндекс > ВторойМассив.ВГраница () Тогда Возврат Ложь; КонецЕсли; Для Счетчик = 0 По НаибольшийИндекс Цикл Если ПервыйМассив[Счетчик] <> ВторойМассив[Счетчик] Тогда Возврат Ложь; КонецЕсли; КонецЦикла; Возврат Истина; КонецФункции

В массив выгружены данные, содержащие наименования контрагентов. Как их отсортировать?

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

Есть массив, в который выгружены значения типа СправочникСсылка.Номенклатура. Как удалить все пустые значения массива?

Процедура УдалитьПустыеЭлементы(МассивНоменклатуры) Счетчик = 0; КоличествоЭлементов = МассивНоменклатуры.Количество(); Пока Счетчик < КоличествоЭлементов Цикл Если МассивНоменклатуры [Счетчик].Пустая() Тогда МассивНоменклатуры.Удалить(Счетчик); КоличествоЭлементов = КоличествоЭлементов - 1; Иначе Счетчик = Счетчик + 1; КонецЕсли; КонецЦикла; КонецПроцедуры

Как получить массив номенклатурных позиций, использованных в табличных частях "Номенклатура" и "Тара" накладной?

МассивНоменклатуры = СсылкаНаДокумент.Номенклатура.ВыгрузитьКолонку("Номенклатура"); МассивНоменклатурыТара = СсылкаНаДокумент.ВозвратнаяТара.ВыгрузитьКолонку("Номенклатура"); Для Каждого ЭлементМассиваТара Из МассивНоменклатурыТара Цикл МассивНоменклатуры.Добавить(ЭлементМассиваТара); КонецЦикла;

Есть две таблицы значений. Как получить массив совпадающих имен колонок?

МассивСовпадающихКолонок = Новый Массив(); Для Каждого Колонка Из ТаблицаПриемник.Колонки Цикл ИмяКолонкиПриемника = Колонка.Имя; Если ТаблицаИсточник.Колонки.Найти(ИмяКолонкиПриемника) <> Неопределено Тогда МассивСовпадающихКолонок.Добавить(ИмяКолонкиПриемника); КонецЕсли; КонецЦикла;

Как в запросе сделать отбор по нескольким вариантам заполнения реквизита типа "ПеречислениеСсылка"?

Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ОтпускаОрганизацииРаботникиОрганизации.ФизЛицо, | ОтпускаОрганизацииРаботникиОрганизации.ДатаНачала, | ОтпускаОрганизацииРаботникиОрганизации.ДатаОкончания |ИЗ | Документ.ОтпускаОрганизации.РаботникиОрганизации КАК ОтпускаОрганизацииРаботникиОрганизации |ГДЕ | ОтпускаОрганизацииРаботникиОрганизации.ПричинаОтсутствия В (&МассивПричин)"; МассивПричин = Новый Массив; МассивПричин.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускБезСохраненияЗарплаты); МассивПричин.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускУчебный); Запрос.УстановитьПараметр("МассивПричин", МассивПричин);

Как из регистра сведений "РасчетчикиЗарплатыОрганизации" получить в виде массива всех расчетчиков зарплаты определенного подразделения организации?

Функция ПолучитьМассивРасчетчиков(Подразделение) НаборЗаписей = РегистрыСведений.РасчетчикиЗарплатыОрганизации.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ПодразделениеОрганизации.Установить(Подразделение); НаборЗаписей.Прочитать(); МассивРасчетчиков = НаборЗаписей.ВыгрузитьКолонку("Пользователь"); Возврат МассивРасчетчиков; КонецФункции Функция ПолучитьМассивРасчетчиков(Подразделение) Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | РасчетчикиЗарплатыОрганизации.Пользователь КАК Расчетчик |ИЗ | РегистрСведений.РасчетчикиЗарплатыОрганизации КАК РасчетчикиЗарплатыОрганизации |ГДЕ | РасчетчикиЗарплатыОрганизации.ПодразделениеОрганизации = &Подразделение"; Запрос.УстановитьПараметр("Подразделение", Подразделение); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); МассивРасчетчиков = Новый Массив; Пока Выборка.Следующий() Цикл МассивРасчетчиков.Добавить(Выборка.Расчетчик); КонецЦикла; Возврат МассивРасчетчиков; КонецФункции

Источник: http://programna1c.narod.ru/

Разложить строку на подстроки по разделителю

Функция на вход принимает строку, разделяет её по разделителю и возвращает массив подстрок.

Пример

ВходящаяСтрока - "1подстрока,2подстрока,3подстрока"

Разделитель - ","

Результат - Массив(0=>"1подстрока", 1=>"2подстрока", 2=>"3подстрока")

Функция РазложитьСтрокуНаПодстроки(ВходящаяСтрока, Разделитель)

МассивСтрок = Новый Массив();

ВходящаяСтрока = СтрЗаменить(ВходящаяСтрока, Разделитель, Символы.ПС);

Для ИндексСтроки = 1 По СтрЧислоСтрок(ВходящаяСтрока) Цикл

Подстрока = СтрПолучитьСтроку(ВходящаяСтрока, ИндексСтроки);

МассивСтрок.Добавить(Подстрока);

КонецЦикла;

Возврат МассивСтрок;

КонецФункции