Книга знаний

1С:Предприятие / Приемы программирования / Встроенный язык

Конструктор массива

Функция, реализующая конструктор массиваАвтор статьи: Гений 1С | Редакторы: progr
Последняя редакция №5 от 04.04.07 | История
URL: http://kb.mista.ru/article.php?id=274

Ключевые слова: массив, конструктор


Простой конструктор


Собственно говоря, функция:
Функция КонстМассив(
    З1=Неопределено, З2=Неопределено, З3=Неопределено, З4=Неопределено, З5=Неопределено, 
    З6=Неопределено, З7=Неопределено, З8=Неопределено, З9=Неопределено, З10=Неопределено, 
    З11=Неопределено, З12=Неопределено, З13=Неопределено, З14=Неопределено, З15=Неопределено, 
    З16=Неопределено, З17=Неопределено, З18=Неопределено, З19=Неопределено, З20=Неопределено
    ) Экспорт
    Перем М;
    М=Новый Массив();
    
    Если З1=Неопределено Тогда Возврат М; Иначе М.Добавить(З1); КонецЕсли;

   Если З2=Неопределено Тогда Возврат М; Иначе М.Добавить(З2); КонецЕсли; 
   Если З3=Неопределено Тогда Возврат М; Иначе М.Добавить(З3); КонецЕсли; 
   Если З4=Неопределено Тогда Возврат М; Иначе М.Добавить(З4); КонецЕсли; 
   Если З5=Неопределено Тогда Возврат М; Иначе М.Добавить(З5); КонецЕсли; 
   Если З6=Неопределено Тогда Возврат М; Иначе М.Добавить(З6); КонецЕсли; 
   Если З7=Неопределено Тогда Возврат М; Иначе М.Добавить(З7); КонецЕсли; 
   Если З8=Неопределено Тогда Возврат М; Иначе М.Добавить(З8); КонецЕсли; 
   Если З9=Неопределено Тогда Возврат М; Иначе М.Добавить(З9); КонецЕсли; 
   Если З10=Неопределено Тогда Возврат М; Иначе М.Добавить(З10); КонецЕсли; 
   Если З11=Неопределено Тогда Возврат М; Иначе М.Добавить(З11); КонецЕсли; 
   Если З12=Неопределено Тогда Возврат М; Иначе М.Добавить(З12); КонецЕсли; 
   Если З13=Неопределено Тогда Возврат М; Иначе М.Добавить(З13); КонецЕсли; 
   Если З14=Неопределено Тогда Возврат М; Иначе М.Добавить(З14); КонецЕсли; 
   Если З15=Неопределено Тогда Возврат М; Иначе М.Добавить(З15); КонецЕсли; 
   Если З16=Неопределено Тогда Возврат М; Иначе М.Добавить(З16); КонецЕсли; 
   Если З17=Неопределено Тогда Возврат М; Иначе М.Добавить(З17); КонецЕсли; 
   Если З18=Неопределено Тогда Возврат М; Иначе М.Добавить(З18); КонецЕсли; 
   Если З19=Неопределено Тогда Возврат М; Иначе М.Добавить(З19); КонецЕсли; 

    Если З20=Неопределено Тогда Возврат М; Иначе М.Добавить(З20); КонецЕсли;
    Возврат М;
КонецФункции


А вот пример использования:
Массив=КонстМассив(1,2,3);

сообщить(ЗначениеВСтрокуВнутр(Массив));


Более читабельная версия от progr



Функция КонструкторМассива(
    З1=Неопределено, З2=Неопределено, З3=Неопределено, З4=Неопределено, З5=Неопределено, 
    З6=Неопределено, З7=Неопределено, З8=Неопределено, З9=Неопределено, З10=Неопределено, 
    З11=Неопределено, З12=Неопределено, З13=Неопределено, З14=Неопределено, З15=Неопределено, 
    З16=Неопределено, З17=Неопределено, З18=Неопределено, З19=Неопределено, З20=Неопределено
    ) Экспорт
    
    Перем М;
    М=Новый Массив();
    Для А=1 По 20 Цикл
        ТекЗначение=Вычислить("З"+А);
        Если ТекЗначение=Неопределено Тогда
            Прервать;
        Иначе
            М.Добавить(ТекЗначение);
        КонецЕсли;
    КонецЦикла;
    Возврат М;
КонецФункции


От Гения 1С: Можно пожертвовать читабельностью в пользу скорости, в данном примере тратится слишком много времени на выполнение интерпретации в строке Вычислить, можете попробовать замерить через табло. Уважаемый progr, не все, что читабельно - быстро.


Конструктор на основе структуры


Это метод для извращенцев.
Рассмотрим на примере, как создать массив из элементов 1,2,3.
Вариант 1:
М=МассивИзЗначенийСтруктуры(Новый Структура("Э1,Э2,Э3",1,2,3));

Вариант 2:
М=МассивИзСтруктуры(Новый Структура(ЭнКлючейСтруктуры(3),1,2,3));

Где:
- ЭнКлючейСтруктуры - возвращает строку вида Э1, Э2, … ЭN.
- МассивИзЗначенийСтруктуры - создает массив из значений структуры.



Обсуждение: v8: Задолбало отсутвие конструктора массива, написал свой



Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика