Быстрые операции над массивами и структурами в 1С: объединение, пересечение, разность, преобразование в пары, слияние конфигураций.
Версии модулей: A1sArrays v1.2 (2025-08-22) A1sStruct v1.1 (2025-08-22)
| Задача | БСП (где искать) | A1sArrays (единый стиль) |
|---|---|---|
| Объединение n массивов | ДополнитьМассив() ОбщегоНазначенияКлиентСервер — только 2 массива |
Concatenate(a1..a8, ТолькоУникальные) |
| Объединение множеств | Комбинации вручную / очистка от дублей | Union(a1..a8) |
| Пересечение множеств | ПересечениеМассивов() ОбщегоНазначенияИСКлиентСервер — 2 массива |
Intersection(a1..a8) |
| Разность множеств | Чаще пишется вручную | Difference(a1..a8) |
&НаСервере
Процедура ЗапуститьВсеПримеры() Экспорт
Сообщить("=== A1sArrays ===");
ПримерыA1sArrays();
Сообщить("");
Сообщить("=== A1sStruct ===");
ПримерыA1sStruct();
КонецПроцедуры
Флаг ТолькоУникальные удаляет дубликаты.
М1 = A1sArrays.NewArray(1,2,3);
М2 = A1sArrays.NewArray(4,5);
Рез = A1sArrays.Concatenate(М1, М2); // 1,2,3,4,5
М1 = A1sArrays.NewArray("A","B","C");
М2 = A1sArrays.NewArray("B","C","D");
Рез = A1sArrays.Union(М1, М2); // A,B,C,D
A = A1sArrays.NewArray("B","C","D");
B = A1sArrays.NewArray("A","C","D","E");
Рез = A1sArrays.Intersection(A, B); // C,D
A = A1sArrays.NewArray("A","B","C","D");
B = A1sArrays.NewArray("B","C");
Рез = A1sArrays.Difference(A, B); // A,D
Данные = A1sStruct.Struct(A1sArrays.NewArray("Имя","Иван","Возраст",31));
Пара = A1sStruct.Pair("Город","Москва");
S1 = A1sStruct.Struct(A1sArrays.NewArray("Имя","Иван","Возраст",30));
S2 = A1sStruct.Struct(A1sArrays.NewArray("Возраст",31,"Город","Москва"));
Рез = A1sStruct.Concatenate(S1, S2);
S1 = A1sStruct.Struct(A1sArrays.NewArray("Язык","ru","Размер",12));
S2 = A1sStruct.Struct(A1sArrays.NewArray("Язык","en","Шрифт","Arial"));
S3 = A1sStruct.Struct(A1sArrays.NewArray("Язык","de","Размер",14));
Рез = A1sStruct.Intersection(S1, S2, S3); // Язык=de
ПраваАдмина = A1sArrays.NewArray("Чтение","Запись","Удаление","Администрирование");
ПраваМенеджера = A1sArrays.NewArray("Чтение","Запись","Отчеты");
ПраваПользователя = A1sArrays.NewArray("Чтение","Просмотр");
ВсеПрава = A1sArrays.Union(ПраваАдмина, ПраваМенеджера, ПраваПользователя);
ОбщиеПрава = A1sArrays.Intersection(ПраваАдмина, ПраваМенеджера, ПраваПользователя);
Эксклюзив = A1sArrays.Difference(ПраваАдмина, ПраваМенеджера, ПраваПользователя);
| Функция | Назначение |
|---|---|
| NewArray() | Собрать массив. |
| Concatenate() | Склейка массивов. |
| Union() | Объединение множеств. |
| Intersection() | Пересечение множеств. |
| Difference() | Разность множеств. |