наверх
Справка / работа с массивами

Работа с массивами

  • Как создать массив?
  • Как создать многомерный массив?
  • Как добавить элементы в массив?
  • Как определить размер массива?
  • Как обратиться к элементу массива?
  • Как перебрать элементы массива?
  • Как удалить элемент массива?
  • Как удалить все элементы массива?
  • Как удалить повторяющиеся элементы массива?
  • Как скопировать массив?
  • Как проверить, что два массива идентичны?
  • В массив выгружены данные, содержащие наименования контрагентов. Как их отсортировать?
  • Есть массив, в который выгружены значения типа СправочникСсылка.Номенклатура. Как удалить все пустые значения массива?
  • Как получить массив номенклатурных позиций, использованных в табличных частях "Номенклатура" и "Тара" накладной?
  • Есть две таблицы значений. Как получить массив совпадающих имен колонок?
  • Как в запросе сделать отбор по нескольким вариантам заполнения реквизита типа "ПеречислениеСсылка"?
  • Как из регистра сведений "РасчетчикиЗарплатыОрганизации" получить в виде массива всех расчетчиков зарплаты определенного подразделения организации?
  • Как создать массив?

    СозданныйМассив = Новый Массив();
    СозданныйМассив = Новый Массив(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; 
    		КонецЕсли; 
    	КонецЦикла; 
    
    КонецПроцедуры

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

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

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

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

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

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

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

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