Имя: Пароль:
1C
 
Сравнение 2х массивов
0 ne6o
 
20.12.07
11:07
Как сравнить 2 массива, причем если первый состоит от "яблоко, груша, банан" а второй из "груша, банан, яблоко" то считалось что они равны
1 Безработынй
 
20.12.07
11:08
отсортировать и сравнить в цикле до первого не совпадения
2 ne6o
 
20.12.07
11:15
А есть средства сортировки элементов массива в 1С 8.1? Иль руками делать?
3 Defender aka LINN
 
20.12.07
11:21
(2) Можно в СписокЗначений выгрузить.
4 ne6o
 
20.12.07
11:23
Массив1 = Новый Массив; Массив2 = Новый Массив;

Массив1.Добавить(Яблоко); Массив1.Добавить(Груша); Массив1.Добавить(Банан);

Массив2.Добавить(Груша); Массив2.Добавить(Банан); Массив2.Добавить(Яблоко);

Есть что-нибудь типа "Массив.Сортировка()" ?
5 Вектор3
 
20.12.07
11:26
(1) чуточку оффтоп , но всё же - а кто знает, какой алгоритм применяет 1С для сортировки больших массивов???
6 Defender aka LINN
 
20.12.07
11:26
Читай (4)
7 ne6o
 
20.12.07
11:29
(3) Типа такого?

СписокЗнач = Новый СписокЗначений;
СписокЗнач.ЗагрузитьЗначения(Массив1);
СписокЗнач.СортироватьПоЗначению(НаправлениеСортировки.Возр);
Массив1.Очистить();
Массив1 = СписокТиповЦен.ВыгрузитьЗначения();
8 ne6o
 
20.12.07
11:30
Сорри, т.е.

СписокЗнач = Новый СписокЗначений;
СписокЗнач.ЗагрузитьЗначения(Массив1);
СписокЗнач.СортироватьПоЗначению(НаправлениеСортировки.Возр);
Массив1.Очистить();
Массив1 = СписокЗнач.ВыгрузитьЗначения();
9 Defender aka LINN
 
20.12.07
11:32
угу
10 Вектор3
 
20.12.07
11:32
(6) я понимаю, что можно написать СписокЗначений.СортироватьПоЗначению
Но меня интересует, как он сортирует это дело????
если простым перебором - то это одно, а если быстрой сортировкой  - то это , извините совсем другое дело...
11 Defender aka LINN
 
20.12.07
11:33
(10) ХЗ :)
12 hhhh
 
20.12.07
11:34
(8) лучше уж сразу используй списки значений. Чего ты на массивы запал?
13 Безработынй
 
20.12.07
11:42
Я всегда использую ТЗ. Массивы и списки это урезанные ТЗ мне кажется. Тама и сортировать и сворачивать моно. Чё паритесь с этими массивами и списками.
14 Биньковский Виталий
 
20.12.07
11:42
а так прокатит?


   Для каждого ЭлементМассива1 Из Массив1 Цикл
   
       Если Массив2.Найти(ЭлементМассива1) = Неопределено Тогда
           Возврат Ложь;
       КонецЕсли;
       Возврат Истина;
   
   КонецЦикла;
15 Defender aka LINN
 
20.12.07
11:43
(13) Массив - другое. А СписокЗначений таки да, ТЗ с предопределенными колонками :)
16 Defender aka LINN
 
20.12.07
11:44
(14) А если есть одинаковые элементы? А если Массив2 больше?
17 Вектор3
 
20.12.07
11:44
(13) неэстетично))))
18 hhhh
 
20.12.07
11:48
(10) просто берут и сортируют. Поэтому и выполняется по 2 часа.
19 Вектор3
 
20.12.07
11:55
(18) перебором????? мама дорогая...
20 Immortal
 
20.12.07
12:02
запросом можно ЛЕВОЕ СОЕДИНЕНИЕ ,ОБЪЕДИНИТЬ или что ты там хочешь где в качестве
таблицы выступают два твоих массива.
21 Immortal
 
20.12.07
12:02
таблицы читать как таблиц
22 ne6o
 
20.12.07
12:22
В массиве храню все используемые роли в системе

Массив = Новый Массив;
k=0;
Для Каждого j Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
   k=k+1;
   Для каждого л из j.роли Цикл
       Если k=1 Тогда
           Массив.Добавить(л);
       КонецЕсли;            
       Если НЕ Массив.Найти(л)=Неопределено Тогда    
           Продолжить;
       Иначе
           Массив.Добавить(л);
       КонецЕсли;
   КонецЦикла;    
КонецЦикла


Хочу выделить пользователей у которых установленны одинаковые наборы прав
Например, всех у кого назначены роли "пользователь" и "менеджер по продажам"

В ещё одном массиве держу набор ролей у конкретного пользователя

Для каждого л Из j.роли Цикл
 РолиПольз.Добавить(л);    
КонецЦикла;
23 ne6o
 
20.12.07
13:05
МассивРолей = Новый Массив;
РолиПольз = Новый Массив;
Для Каждого j Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
   Сообщить(j.ПолноеИмя);
   Для каждого л Из j.роли Цикл
       РолиПольз.Добавить(л);
       Сообщить(л)    
   КонецЦикла;
   МассивРолей.Добавить(РолиПольз);
   
   РолиПольз.Очистить();
КонецЦикла;
Сообщить(МассивРолей[3]);
asd = МассивРолей[3];
Для каждого ы Из asd Цикл
   Сообщить(ы);
КонецЦикла;

Не выводит элементы ни одной роли (ы)
Почему?
24 Безработынй
 
20.12.07
13:20
Перед выполнением вот этой команды РолиПольз.Очистить(); посмотри что в массиве МассивРолей. А затем после вот этой команды РолиПольз.Очистить(); посмотри что будет в этом массиве МассивРолей. А потом в ЖКК почитай про работу с массивами. А вапще работай ка с ТЗ. Классная вещь.
Независимо от того, куда вы едете — это в гору и против ветра!