|
Какой самый оптимальный способ сгруппировать массив структур? | ☑ | ||
---|---|---|---|---|
0
Hipocrisy2013
24.04.19
✎
12:47
|
Какой самый оптимальный способ сгруппировать массив?
|
|||
1
1Сергей
24.04.19
✎
12:48
|
Лесной массив?
|
|||
2
alkorolev
24.04.19
✎
12:49
|
создать Массив2, при обходе Массива1 искать значение в Массиве2. Если не находишь, то добавлять значение в массив2
|
|||
3
Hipocrisy2013
24.04.19
✎
12:56
|
(2) Если нужно какие то поля суммировать, то не очень походит
На ум приходит перебрать массив и построчно добавить в ТЗ, ТЗ свернуть, и назад в массив Но, столько действий ради какой то банальной операции... |
|||
4
igork1966
24.04.19
✎
12:57
|
(3) Можно за один проход с использованием например соответствия или структуры. Вопрос только в ключе
|
|||
5
sqr4
24.04.19
✎
12:58
|
(0) Двумерный массив? А зачем данные которые нужно группировать хранить в массиве?
|
|||
6
Chameleon1980
24.04.19
✎
13:00
|
ТЗ в запрос с итогами
|
|||
7
Chameleon1980
24.04.19
✎
13:00
|
+ т.к. ".. Если нужно какие то поля суммировать..."
это уже не массив |
|||
8
alkorolev
24.04.19
✎
13:04
|
(3) а откуда ты получил массив с коллекцией полей, среди которых есть сумма?
|
|||
9
alkorolev
24.04.19
✎
13:05
|
с ТЗ верная мысль. Но я полагаю, что у тебя массив уже был рожден из ТЗ
|
|||
10
vdss
24.04.19
✎
13:08
|
(3) Ни разу не видел в 1С двухмерные массивы. Обычно такие задачи решаются через ТЗ.Свернуть(), или запросом
|
|||
11
alkorolev
24.04.19
✎
13:12
|
(10) кто сказал, что у него двумерный массив? у него массив с какими то коллекциями. Скорее всего строкаТаблицы или структурами
|
|||
12
Hipocrisy2013
24.04.19
✎
13:13
|
(5)(8) Такой массив формируется типовым функционалом при формировании позиций чека, и заполняется он строкой в цикле ТЧ.
|
|||
13
Hipocrisy2013
24.04.19
✎
13:14
|
ТЧ заранее свернуть не могу, так как у каждой позиции есть свой УИД и в цикле есть пару функций которым требуется этот УИД
|
|||
14
alkorolev
24.04.19
✎
13:16
|
(13) ну, значит, описывай свою ТаблицуЗначений, в нее запихивай строки из Массива и сворачивай Таблицу
|
|||
15
Hipocrisy2013
24.04.19
✎
13:16
|
Короч это не двухмерный массив, это массив структур
|
|||
16
Вафель
24.04.19
✎
13:17
|
проходишь в цикле - ключ в соотвествие, сумму в значение соотвествия
|
|||
17
Hipocrisy2013
24.04.19
✎
13:17
|
(14) Ну да, других вариантов нет
|
|||
18
fisher
24.04.19
✎
13:19
|
(15) Не прошло и 15 сообщений до попытки сформулировать задачу внятно :)
Ок. На входе массив структур. Сворачивать надо по нескольким полям, а по остальным суммировать? Полный аналог свертки ТЗ? |
|||
19
Hipocrisy2013
24.04.19
✎
13:38
|
(18)"Ок. На входе массив структур. Сворачивать надо по нескольким полям, а по остальным суммировать? Полный аналог свертки ТЗ?" - Всё верно
|
|||
20
igork1966
24.04.19
✎
13:41
|
(19) --> (4)(16)
|
|||
21
Garykom
гуру
24.04.19
✎
13:44
|
Где то у меня был свой код на java реализующий Свернуть("КолонкиГруппировки", "КолонкиСуммирования") для объекта своего аналога ТЗ из 1С.
Возможно даже смогу найти, тогда еще гитхаба не было поэтому валяется где то в архивах на не подключенном hdd. Но там не массивы а через ArrayList |
|||
22
Garykom
гуру
24.04.19
✎
13:45
|
(21)+ Вроде бы через HashTable делал уже не помню за давностью лет.
|
|||
23
fisher
24.04.19
✎
14:00
|
(19) Тогда подозреваю что лучше будет таки в ТЗ и сворачивать. На структурах/соответствиях в 1С много накладных расходов выйдет, несмотря на преимущества хэшированных структур данных. Да и в общем виде эту задачу в 1С решать несподручно. С одним полем в качестве ключа - еще куда ни шло.
|
|||
24
Лефмихалыч
24.04.19
✎
14:36
|
(0) перекидать его в соответствие, например
|
|||
25
Лефмихалыч
24.04.19
✎
14:52
|
(17) есть, но есть очень много НО. Например
Функция ЕслиМутабельныхЗначенийНетИВсёСериализуетсяТоСработает(МассивСтруктур) Множество = Новый Соответствие; Для каждого Элемент из МассивСтруктур Цикл Множество[XMLСтрока(Элемент)] = Истина; КонецЦикла; СгруппированныйМассив = Новый Массив; Для каждого КлючЗначение из Множество Цикл СгруппированныйМассив.Добавить(XMLЗначение(КлючЗначение.Ключ)); КонецЦикла; Возврат СгруппированныйМассив; КонецФункции но это не волшебная палка и не универсальный механизм. Это вообще не механизм, а решето дырявое. Но при заданных ограничениях сработает. Наверное. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |