Примеры и советы по программированию в системе
1С:Предприятие 8.1
  1. Как создать массив
  2. Как создать многомерный массив
  3. Как добавить элементы в массив
  4. Как определить размер массива
  5. Как обратиться к элементу массива
  6. Как перебрать элементы массива
  7. Как удалить элемент массива
  8. Как удалить все элементы массива
  9. Как удалить повторяющиеся элементы массива
  10. Как скопировать массив
  11. Как проверить, что два массива идентичны
  12. В массив выгружены данные, содержащие наименования контрагентов. Как их отсортировать
  13. Есть массив, в который выгружены значения типа СправочникСсылка.Номенклатура. Как удалить все пустые значения массива
  14. Как получить массив номенклатурных позиций, использованных в табличных частях "Номенклатура" и "Тара" накладной
  15. Есть две таблицы значений. Как получить массив совпадающих имен колонок
  16. Как из регистра сведений "РасчетчикиЗарплатыОрганизации" получить в виде массива всех расчетчиков зарплаты определенного подразделения организации

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

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

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

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

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

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

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

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