|   |   | 
| 
 | Гуру-тест: как отсортировать набор записей? ↓ (Волшебник 10.09.2020 20:29) | ☑ | ||
|---|---|---|---|---|
| 0
    
        Гений 1С гуру 04.09.20✎ 18:06 | 
        Отсчет пошел, досрочные ответы приветствуются! ;-)
 НЗ = РегистрыСведений.ХХХ.СоздатьНаборЗаписей(); ... | |||
| 1
    
        Полован 04.09.20✎ 18:11 | 
        (0) Товарисч форумный клоун, ты какие вещества принимаешь, что тебя так штырит?     | |||
| 2
    
        H A D G E H O G s 04.09.20✎ 18:12 | 
        (0) Это все грибы, Сережа.     | |||
| 3
    
        Гений 1С гуру 04.09.20✎ 18:14 | 
        (2) ответ "грибы" не засчитывается.     | |||
| 4
    
        Ненавижу 1С гуру 04.09.20✎ 18:18 | 
        В данный момент набор записей пустой     | |||
| 5
    
        Гений 1С гуру 04.09.20✎ 18:19 | 
        (4) к черту детали.     | |||
| 6
    
        Гений 1С гуру 04.09.20✎ 18:19 | 
        есть НЗ, как его отсортировать. Можно без кода, просто идея.     | |||
| 7
    
        Полован 04.09.20✎ 18:20 | 
        (6) Зачем его сортировать, болезный?     | |||
| 8
    
        Ненавижу 1С гуру 04.09.20✎ 18:21 | 
        Зачем? Сама по себе сортировка набора записей не имеет ценности     | |||
| 9
    
        H A D G E H O G s 04.09.20✎ 18:22 | 
        Единственный вариант - это отсортировать по номеру строки, если у тебя РС подчиненный регистратору. Но, Сергей, скорее всего ты даже этого и не поймешь.     | |||
| 10
    
        H A D G E H O G s 04.09.20✎ 18:23 | 
        (9) Единственный вариант -> Единственный практический смысл     | |||
| 11
    
        Гений 1С гуру 04.09.20✎ 18:23 | 
        (8) надо. в некоторых прикладных задачах, например, чтобы вывести его на дерево в форму.     | |||
| 12
    
        VladZ 04.09.20✎ 18:23 | 
        (0) Ткнуться на нужную колонку в режиме предприятия. Готово!     | |||
| 13
    
        Гений 1С гуру 04.09.20✎ 18:24 | 
        (12) программно, бро, программно. 
 (10) мы тут не о смыслах говорим. А о технике. Не ломайся, скажи уже как. | |||
| 14
    
        VladZ 04.09.20✎ 18:24 | 
        (11) Выполни запрос, выгрузи в дерево.
 К чему вопрос в сабже - не понятно. | |||
| 15
    
        Гений 1С гуру 04.09.20✎ 18:26 | 
        (14) сложно, есть метод проще. Вопрос на знание ассортимента методик.     | |||
| 16
    
        Конструктор1С 04.09.20✎ 18:28 | 
        (0) накуа?     | |||
| 17
    
        Гений 1С гуру 04.09.20✎ 18:29 | 
        (16) вопрос в (0) как а не зачем.     | |||
| 18
    
        Полован 04.09.20✎ 18:30 | 
        (17) Один дурак может задать столько вопросов, что и 1000 мудрецов не ответят.     | |||
| 19
    
        Конструктор1С 04.09.20✎ 18:31 | 
        (17) ну ладно. Тогда по каким полям отсортировать?     | |||
| 20
    
        Ненавижу 1С гуру 04.09.20✎ 18:31 | 
        (11) для этого набор записей не нужен. Запрос     | |||
| 21
    
        Гений 1С гуру 04.09.20✎ 18:45 | 
        (19) по полю Номенклатура.     | |||
| 22
    
        Гений 1С гуру 04.09.20✎ 18:45 | 
        (20) Надеюсь, не твои товарищи сидят во Фреше, ггг, иначе заставят меня этот код переписать.     | |||
| 23
    
        Гений 1С гуру 04.09.20✎ 18:46 | 
        а уаще подход мне нравится. Задан конкретный вопрос на смекалку, на который нужно дать конкретный ответ. Но вместо смекалки демонстрируется отрицание задачи.     | |||
| 24
    
        ДенисЧ 04.09.20✎ 18:47 | 
        Выгрузи в ТЗ, отсортируй, загрузи обратно.
 А потом съезди в Одесу, на привоз. И купи там гУся. | |||
| 25
    
        Гений 1С гуру 04.09.20✎ 18:57 | 
        (24) ну наконец-то, 24 поста понадобилося. ;-) молодец     | |||
| 26
    
        ДенисЧ 04.09.20✎ 19:00 | 
        (25) Ну я же не гений... Мне можно.     | |||
| 27
    
        ДенисЧ 04.09.20✎ 19:00 | 
        Да, а на Привоз таки съезди     | |||
| 28
    
        Полован 04.09.20✎ 19:04 | 
        (23) Задан идиотский вопрос в надежде что все подорвутся его решать. Агащазблин.     | |||
| 29
    
        rphosts 04.09.20✎ 19:05 | 
        если (11) то вместо создатьНабор должно быть.... Прочитать();
 И тогда уж через ТЗ - не торт | |||
| 30
    
        Мимохожий Однако 04.09.20✎ 19:07 | 
        Когда коту делать не х...     | |||
| 31
    
        2S 04.09.20✎ 19:07 | 
        Гифка с хлопанием по лбу     | |||
| 32
    
        Ненавижу 1С гуру 04.09.20✎ 19:09 | 
        (25) да уж... Это первое что пришло в голову. Надеялся на какой-то этакий трюк     | |||
| 33
    
        Ёпрст гуру 04.09.20✎ 19:14 | 
        (0) на вот тебе еще.."гениального г-кода"
 
 | |||
| 34
    
        H A D G E H O G s 04.09.20✎ 19:18 | 
        Я не сомневался в Сереже.     | |||
| 35
    
        H A D G E H O G s 04.09.20✎ 19:19 | 
        Посмотрел список тем Сергея. Такое ощущение, что к нему присовокупился ЛивингСтар.     | |||
| 36
    
        Гений 1С гуру 04.09.20✎ 19:31 | 
        (35) Не знаю такого     | |||
| 37
    
        fyn 04.09.20✎ 19:58 | 
        (36) Дед, иди к себе в бложек. Не отвлекай нормальных людей     | |||
| 38
    
        Новиков 04.09.20✎ 20:40 | 
        (23) >> Задан конкретный вопрос на смекалку, на который нужно дать конкретный ответ. Но вместо смекалки демонстрируется отрицание задачи.
 Так сказали же - сделай запросом, нарисуй какое-хочешь там дерево и уже его отображай на форме. В чем проблема с этим? | |||
| 39
    
        Сияющий в темноте 05.09.20✎ 00:04 | 
        когда мы читаем записи из базы данных,то они должны быть уже отсортированы в силу того,что для таблицы регистра используется кластерный индекс.
 если же мы в этот набор что-то записали сами,то сортировать нужно до момента записи в регистр. | |||
| 40
    
        Ненавижу 1С гуру 05.09.20✎ 00:18 | 
        (39) >>когда мы читаем записи из базы данных,то они должны быть уже отсортированы в силу того,что для таблицы регистра используется кластерный индекс
 Я бы не стал полагаться на это А вообще сортировать в наборе записей бессмысленно. Не для этого оно | |||
| 41
    
        Гений 1С гуру 05.09.20✎ 09:03 | 
        (38) это сложный вариант, правильный ответ дали в (24)     | |||
| 42
    
        Гений 1С гуру 05.09.20✎ 09:04 | 
        (40) да ладно? Я из набора записей отрисоываю в дерево формы. МНе важен порядок, ибо само дерево сортировать сложнее, чем НЗ     | |||
| 43
    
        Волшебник 05.09.20✎ 09:08 | 
        Мой Гений дарит вам сортировку набора записей регистра сведений....     | |||
| 44
    
        Ненавижу 1С гуру 05.09.20✎ 10:21 | 
        (42) ну вот хорошо. Передал в ТЗ. Отсортировал. Зачем обратно в НЗ загонять то?     | |||
| 45
    
        Гений 1С гуру 05.09.20✎ 11:06 | 
        (44) Потому что код написан под НЗ и менять его под ТЗ дороже, чем выгрузить обратно в НЗ?     | |||
| 46
    
        Волшебник 05.09.20✎ 11:29 | 
        Интересно, что Гений 1С хранит в регистре с именем ХХХ? ;)     | |||
| 47
    
        Гений 1С гуру 05.09.20✎ 11:33 | 
        (46) Строки документа маркировки, как ни странно.     | |||
| 48
    
        dangerouscoder 05.09.20✎ 20:17 | 
        (42) а что мешает дерево преобразовать в ТЗ и в запросе отсортировать что нужно?
 Я просто уже за таким "гением" переписываю вторую конфигурацию - юзеры рады что работать стало быстрее.. | |||
| 49
    
        palsergeich 05.09.20✎ 23:12 | 
        (48) Он получает 1800 в час, а ты нет.
 Ты просто завидуешь | |||
| 50
    
        acht 05.09.20✎ 23:28 | 
        (48) > а что мешает дерево преобразовать
 28 баксов на бирже сами себя не заработают | |||
| 51
    
        trdm 06.09.20✎ 10:25 | 
        (3) >  ответ "грибы" не засчитывается.
 это аворит народного голососования :) | |||
| 52
    
        Гений 1С гуру 07.09.20✎ 09:38 | 
        (48) ну наверное сложнее дерево в ТЗ преобразовать, чем НЗ в ТЗ, тебе не думается? Бракоделы всегда гению завидуют, не удивительно. 
 (49) не за красивые глаза и громкое имя, кстати. ;-) | |||
| 53
    
        s111 07.09.20✎ 09:58 | 
        (49) и я завидую!     | |||
| 54
    
        Tatitutu 07.09.20✎ 11:01 | 
        а запросы уже не в моде ?     | |||
| 55
    
        Asmody 09.09.20✎ 14:47 | 
        (0) Гений, ты лучше расскажи нам, как минимальными усилиями проверить - отсортированы записи в наборе / строки в таблице или нет?     | |||
| 56
    
        Вафель 09.09.20✎ 15:14 | 
        (55) так циклом пройтись и а[i] > a[i-1]     | |||
| 57
    
        Ёпрст гуру 09.09.20✎ 15:30 | 
        (56) а если сортировка в другом направлении? 
 %) | |||
| 58
    
        Волшебник 09.09.20✎ 15:32 | 
        (56) лучше запросом в цикле     | |||
| 59
    
        МихаилМ 09.09.20✎ 15:51 | 
        (55) медиана ?     | |||
| 60
    
        Asmody 09.09.20✎ 15:55 | 
        (59) А что медиана? Если там ссылочное значение, какая у него медиана?     | |||
| 61
    
        vit-alx 09.09.20✎ 16:27 | 
        (55) в запрос, сджойнить саму с собой по номеру строки+1 и условию сортировки, нулл последний отбрасываем и смотрим количество в результате запроса     | |||
| 62
    
        Волшебник 09.09.20✎ 17:02 | 
        (61) Слабенько... Нет изящества. Это же гуру-тест     | |||
| 63
    
        vit-alx 09.09.20✎ 17:05 | 
        Зато быстро и понятно     | |||
| 64
    
        polosov 09.09.20✎ 17:29 | 
        (21) За сортировку по ссылочному полю вообще бить принято.     | |||
| 65
    
        Вафель 09.09.20✎ 17:30 | 
        (64) почему бы и нет? не обязательно же по представлению     | |||
| 66
    
        polosov 09.09.20✎ 17:33 | 
        (65) Практического смысла мало. В (9) было уже разъяснено.     | |||
| 67
    
        lodger 09.09.20✎ 17:40 | 
        (65) а надо шоб Арбузы шли перед Дынями!     | |||
| 68
    
        Ёпрст гуру 09.09.20✎ 17:41 | 
        (66) почему мало ? Хотя бы с одним ид будут рядом     | |||
| 69
    
        ДедМорроз 09.09.20✎ 18:40 | 
        Дерево в таблицу преобразуется с хвоста и без всякой рекурсии,только со стеклом,где хранится предыдущее,но для него можно массив     | |||
| 70
    
        vit-alx 09.09.20✎ 18:44 | 
        (62) можно запросом в вт, во вторую вт отсортировать первую, сджойнить их внутренним по номеру строки и не условию сортировки. если запрос пустой значит отсортирована     | |||
| 71
    
        vit-alx 09.09.20✎ 18:46 | 
        +(70) забыл во второй вт добавить автонумерацию     | |||
| 72
    
        vit-alx 09.09.20✎ 20:11 | 
        Можно еще вывалить тз в xml, отсортировать тз и вывалить во второй xml и тупо сравнить два текста     | |||
| 73
    
        vit-alx 09.09.20✎ 20:20 | 
        Либо через СравнениеЗначений попробовать сравнить тз и отсортированную копию тз, но не уверен что сработает
 Будет уже озвучено гениальное решение? | |||
| 74
    
        Web00001 10.09.20✎ 04:11 | 
        (17)В данном конкретном случаем вопрос "как" имеет смысл только, когда известен ответ на вопрос "зачем". Потому, что если важен порядок значит тебе в результате нужен не набор записей(то есть ты не собираешься писать в регистр именно в таком порядке), а набор записей это просто источник данных. Вопрос зачем тебе задали верный, потому, что от него зависит ответ. Все ответы которые могут быть это выгрузка этого набора в какую либо коллекцию, либо в объект который может сортировку(не надо так) и загрузка обратно.     | |||
| 75
    
        Злопчинский 10.09.20✎ 04:26 | 
        (64) А почему-это?
 вот например два разных договора. с одинаковым наименованием. сортировка по наименованию/представлению даст в алгоритме жопу. приходится сортировать по внутреннему представлению/ссылке. | |||
| 76
    
        ASU_Diamond 10.09.20✎ 07:37 | 
        (25) я такую схему ещё в году 2008 ил 2009 использовал. Только я это использовал, чтобы находу решить задачу, не было времени придумывать правильный подход.     | |||
| 77
    
        Повелитель 10.09.20✎ 08:04 | 
        (33) Пока флудили нормального ответа не заметили.
 Мне нравится. | |||
| 78
    
        lodger 10.09.20✎ 09:48 | 
        еще один рецепт придумал.
 НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ССылка); НаборЗаписей.Прочитать(); Для каждого ЗаписьРС из НаборЗаписей Цикл ПроцедураНайтиМестоИвставить(ЗаписьРС,КоллекцияПриёмник); КонецЦикла; Процедура ПроцедураНайтиМестоИвставить(ЗаписьРС,КоллекцияПриёмник) Если КоллекцияПриёмник.Количество() > 0 Тогда СравнениеЗначений = новый СравнениеЗначений(); МестоВставки = -1; Для каждого ЭлементКоллекции из КоллекцияПриёмник Цикл Если СравнениеЗначений.Сравнить(ЗаписьРС.Номенклатура,ЭлементКоллекции.Номенклатура) < 0 Тогда МестоВставки = КоллекцияПриёмник.Индекс(ЭлементКоллекции); Прервать; конецесли; конеццикла; Если МестоВставки >=0 Тогда заполнитьзначениясвойств(КоллекцияПриёмник.Вставить(МестоВставки),ЗаписьРС); Иначе заполнитьзначениясвойств(КоллекцияПриёмник.Добавить(),ЗаписьРС); КонецЕсли Иначе заполнитьзначениясвойств(КоллекцияПриёмник.Добавить(),ЗаписьРС); конецЕсли; конецпроцедуры тюнинх полнейший, кастомность 146%. | |||
| 79
    
        Повелитель 10.09.20✎ 12:01 | 
        (78) Проще уж запросом     | |||
| 80
    
        ДедМорроз 10.09.20✎ 18:32 | 
        Алгоритмов сортировки много и у каждого есть свои области применения.
 Опять же,О(N*N) нужно бояться,когда у вас уж очень много строк,так как всякие переносы и т.п.съедят время. И перестановка отсортированного-это отдельная интересная задача. | |||
| 81
    
        lodger 10.09.20✎ 19:55 | 
        (80) в силу специфики, у 1с с alloc'ом памяти у коллекций значений по мере роста всегда было туго. а у операции простой сортировки всегда известен выходящий размер.
 поэтому разумно сразу выделять ТЗ\массив\назови сам\ целевого размера. а дальше не добавлением\вставкой оперировать, а заполнением\очищением значений в элементах коллекции. | |||
| 82
    
        Волшебник 10.09.20✎ 20:30 | 
        Хватит разврата     | |||
| 83
    
        МихаилМ 10.09.20✎ 20:46 | 
        (55) (Asmody) 
 поделитесь идеей. | |||
| 84
    
        etc 11.09.20✎ 09:37 | 
        (0) любым из 3-х методов сортировки. 1-курс МИЭМ.     | |||
| 85
    
        МихаилМ 12.09.20✎ 12:57 | 
        Asmody 
 дайте решение Вашей задачи из (55). | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |