|   |   | 
| 
 | Супер-уникальный поиск дублей в любой ТЗ по любым критериям | ☑ | ||
|---|---|---|---|---|
| 0
    
        Eugeneer 06.09.22✎ 22:10 | 
        Мой ге... не .... мой Маня дарит вам. Так как и вы помогаете мне на форуме, хотя тут нормальных то людей способных дельно ответить - единицы. Остальные обычно пос.. приходят в тему.
 Конкурс на лучший алгоритм. Из любой, абсолютной любой ТЗ получить список дублей. Определить, вычленить, убрать - да что угодно то и делайте. Главное что это их очень быстро определит и не каким то выборками, переборками таблицы. Никаких там НайтиСтроки, Свернуть и прочая тормознутая фигня. Заявляю что я сделал это первым. Все что в интернете - отстой. Все что то сворачивают, бегают по циклам, Найти...НайтиСтроки.. жесть жестяная. Все тормоза ужасные. Итак все очень и очень просто!!! Берется любая ТЧ / ТЗ (в которой есть колонка Номер строки). Кидаем в запрос. В запросе перечень каких то полей - критериев. Например - номенклатура, но могут быть абсолютно любые. А чтобы впоймать дубли все что нужно сделать это | МИНИМУМ(ВременнаяТаблица.НомерСтроки) КАК НомерСтрокиМин, | МАКСИМУМ(ВременнаяТаблица.НомерСтроки) КАК НомерСтрокиМакс Так вот. Там где НомерСтрокиМин = НомерСтрокиМакс - это не дубли. А все где <> дубли! Согласно указанным критериям выборки. Далее вы можете использовать это полученное знание по своему усмотрению. А если хотите сразу мгновенно получить в результате из всей огромной таблицы - в 100 000 строк только дубли, то в запросе добавляется |ИМЕЮЩИЕ | НЕ МИНИМУМ(ВременнаяТаблица.НомерСтроки) = МАКСИМУМ(ВременнаяТаблица.НомерСтроки)"; И готово. Работает с бешанной скоростью. В тестил на 100к, 1 миллионе позиций. Все работает секунды. | |||
| 84
    
        Gantosha 08.09.22✎ 12:39 | 
        не, я просто пытаюсь понять он чо там пишет про групировку по полям поиска что ли ? или что то другое ?     | |||
| 85
    
        Garykom гуру 08.09.22✎ 12:42 | 
        (80)+ для удобства юзания из 1С есть https://github.com/rqlite/rqlite
 все через http запросы по api перед этим из макета в темп сохранил и запустил и юзай как не нужен shut down ноду(ы) | |||
| 86
    
        Eugeneer 08.09.22✎ 13:51 | 
        (81) все тоже самое. не увеличивает расход     | |||
| 87
    
        Eugeneer 08.09.22✎ 13:52 | 
        (78) ну и что с этого? записи и чтения и работы с базой нет. Поэтому какая пофиг разница СКЛ или не СКЛ для этой задачи. Один хрен тут работа профессора и оперативки.     | |||
| 88
    
        Eugeneer 08.09.22✎ 13:53 | 
        Да и 1С однопоточная.     | |||
| 89
    
        Eugeneer 08.09.22✎ 13:55 | 
        Я еще понимаю вопрос если бы был - что многотысячную запись в регисры или чтение. А тут вообще работа с ТЗ в запросе.. На уровне повторов значений в разных количествах строк)
 Еще раз напишу - тесты показали ошуительные результаты!!! МИЛЛИСЕКУНДЫ. Что тут еще надо мосх ипать не понимаю. | |||
| 90
    
        H A D G E H O G s 08.09.22✎ 14:22 | 
        Веселые истории экран покажет наш     | |||
| 91
    
        Конструктор1С 08.09.22✎ 14:30 | 
        (87) временные таблицы хранятся на диске. Внезапно, да?
 (89) >>Я еще понимаю вопрос если бы был - что многотысячную запись в регисры или чтение Считай что создаётся временный регистр, в него заливаются все твои многотысячные записи, а потом выполняется запрос по этому регистру | |||
| 92
    
        Eugeneer 08.09.22✎ 14:37 | 
        (91) какой еще нафиг регистр... только что меня дураком назвали, а сам такую хрень пишешь.     | |||
| 93
    
        timurhv 08.09.22✎ 14:38 | 
        (91) 
 >временные таблицы хранятся на диске. Внезапно, да? Не всегда https://xn----1-bedvffifm4g.xn--p1ai/articles/временные-таблицы-3-вопроса/#:~:text=Действительно%2C%20все%20временные%20таблицы%20относятся,обязательно%20будут%20записываться%20на%20диск. | |||
| 94
    
        Гений 1С гуру 08.09.22✎ 14:38 | 
        (91) могут и в памяти храниться, внезапно. Это тебе не Navision     | |||
| 95
    
        Eugeneer 08.09.22✎ 14:42 | 
        Запросы так вообще чистейшая оперативка. А обсуждаемая тут задача это и есть запрос и скорость результата.
 А не источник. | |||
| 96
    
        H A D G E H O G s 08.09.22✎ 14:52 | 
        Все нормально, автор работает с ларьками, там продуктива даже на 50 пользователей не найти, пусть развлекается с ВТ     | |||
| 97
    
        Конструктор1С 08.09.22✎ 14:54 | 
        (93) блиин... Вот куда тебя понесло? У нас тут ларёчная ситуация, файловые базы. А так-то и вся БД может in-memory распологаться     | |||
| 98
    
        Конструктор1С 08.09.22✎ 14:56 | 
        (94) тебе-то откуда знать? Ты документацию отродясь не читал. Тем более по таким тонкостям     | |||
| 99
    
        unenu 08.09.22✎ 15:05 | 
        (0) наличие колонки "номер строки" - не обязательно.
 уже давно можно таблицу пронумемеровать в запросе | |||
| 100
    
        Arbuz 08.09.22✎ 15:06 | 
        После маниакальной фазы обязательно наступает депрессивная. Причём чем ярче, интенсивнее маниакальная, тем длительней и глубже депрессивная. После особенно ярких маниакальных эпизодов, выход из депрессивной фазы может занять годы или не состоятся вовсе никогда...     | |||
| 101
    
        Fynjy 08.09.22✎ 15:16 | 
        Ребят ну будьте снисходительны слесарь из Мариуполя. Высшего образования нет. Потуг обучения нет. 40+ лет. И так "Доступно и всерьез" человек оправдывает.     | |||
| 102
    
        Eugeneer 08.09.22✎ 16:35 | 
        Вот народ же))) Сами хрен кому помогут и ответят)
 А тут с добром пришел) Так сказать хорошую тему обозначил, решения нашлись сразу несколько. Тесты провел. Сказал о результатах. А вам лишь бы желчь лить))) Завидуете просто мне да и все) В тоже мог бы сказать что вы все неудачники! Потому что я зарабатываю миллион в месяц. а вы нищеброды жалкие. Но этого делать не стану) | |||
| 103
    
        Eugeneer 08.09.22✎ 16:36 | 
        Я не обидчивый) А вот у вас зависть что я слесарем был, а вы нет))     | |||
| 104
    
        leonidk 08.09.22✎ 16:38 | 
        Пятнично     | |||
| 105
    
        H A D G E H O G s 08.09.22✎ 16:42 | 
        Добродетель не упадет на колени перед неумолимой поступью прогресса.     | |||
| 106
    
        Eugeneer 08.09.22✎ 16:45 | 
        Вы на лекциях сисьски старой училки рассматривали и подрачивали двумя пальцами. А я на заводе трудовые мазоли натирал)     | |||
| 107
    
        АгентБезопасной Нацио 08.09.22✎ 16:48 | 
        (101) "доступно и всерьез - мордой и в навоз!"©pit     | |||
| 108
    
        Конструктор1С 08.09.22✎ 17:15 | 
        :)
 Маньяк может уйти из слесарей, но слесарь из Манька не уйдёт никогда | |||
| 109
    
        Гений 1С гуру 08.09.22✎ 19:23 | 
        (106) да ладно, че там в каптерке девочек не было?     | |||
| 110
    
        БигБаг 08.09.22✎ 19:40 | 
        (100) У некоторых, после маниакальной фазы не наступает депрессивная. Для них после маниакальной наступает другая маниакальная. Посмотри например на Гений1С.     | |||
| 111
    
        Eugeneer 08.09.22✎ 19:46 | 
        (109) я в цеху по производству газовых котлов работал) Малярши были) Целый участок.     | |||
| 112
    
        Fynjy 08.09.22✎ 19:55 | 
        Жень у тебя масса времени страдать х.ней. Вот реально возьми курсы не обязательно 1С, а лучше совсем не 1С. Java - самое то. Они на все твои умения наложат знания нормального программирования. Они доступны и в возрасте 40+. Как раз на этих курсах дают, что почему то не дают на курсах 1С - на них учат программировать, а не применять в задачах.
 Такие курсы дадут тебе нормальный базис, парень ты не глупый, ну не повезло в молодости догоняй в возрасте. | |||
| 113
    
        СеменовСемен 08.09.22✎ 20:00 | 
        (112) курсы учат программировать?     | |||
| 114
    
        Eugeneer 08.09.22✎ 20:03 | 
        (112) у меня два студента) уже вторые курсы проходят за полгода. Думаю не последние)     | |||
| 115
    
        Eugeneer 08.09.22✎ 20:04 | 
        Мне нафига эти курсы)) Ты знаешь что даже на курсах 1С ничего толкового не учат. Они там до сих пор по старинке сидят одну и туже базовую фигню молотят.
 А на специалиста очень много и частно отвлекаются. Но у меня ребята молодые) таланты. Я им много разных курсов куплю. | |||
| 116
    
        Eugeneer 08.09.22✎ 20:09 | 
        Это первое. А второе - раз ты меня считаешь что у меня знания не ахти по 1С. То какого фигли тут бывает вопросы заводишь и ноль толковых ответов. Хотя лица все теже мелькают.
 Вот товарищ Ежов - постоянно в ветках отмечается, но кроме какого то высера ничего больше не делает. При этом якобы он себя всезнайкой показывает, но по факту ничего по теме сказать не может. такое поведение смахивает на то что все такие "из себя" тут специалисты, что сами в теме вопроса не разбираются. И даже в этой теме уже разжеванной чуть ли не сразу и понятной, после того как я объявил тесты и скорость что это все работает 0-1 секунду, кто то усомнился что на СКЛ оно так работать не будет.... Запомните - если что то работает 0-1 секунду, оно не станет вдруг иначе работать в 50 раз хуже. | |||
| 117
    
        Eugeneer 08.09.22✎ 20:10 | 
        Как будто в файловой базе не временные файлы... ну уморы.
 Уже кто то ляпнул что это регистр создается с временной таблицей... | |||
| 118
    
        Eugeneer 08.09.22✎ 20:10 | 
        Судя по всему - регистр сведений))) бугага.     | |||
| 119
    
        Eugeneer 08.09.22✎ 20:11 | 
        Ато смотри умник на умнике сидит. Слесаря решили учить)     | |||
| 120
    
        СеменовСемен 08.09.22✎ 20:12 | 
        (117) в файловой не нужно тз на скуль передавать и обратно. все на месте происходит. а если скуль еще и на другом серваке ... | |||
| 121
    
        Eugeneer 08.09.22✎ 20:13 | 
        (120) у тебяф запросы где делаются? их на клиенте даже создать невозможно. Любые запросы это сервер. 
 А файловая не файловая - какая пофиг разница. | |||
| 122
    
        Eugeneer 08.09.22✎ 20:16 | 
        И мы тут не про передачу говорим с клиента на сервер или с сервера на клиент. Это вообще отдельная песня.
 Что такое для СКЛ передача 100-200 мегабайт. тьфу. | |||
| 123
    
        Eugeneer 08.09.22✎ 20:18 | 
        Другое дело что у большинства сервера допотопные. У Гилева даже там процентов 50 тестов на каком то овне 15 летней давности. И я часто вижу у клиентов сервера .... дешевле какого нибудь айфона.
 Печатный станок. | |||
| 124
    
        Eugeneer 08.09.22✎ 20:20 | 
        Но один хрен оптимизированный запрос. если на 100к ТЗ работает на 2000 дублей меньше секунды. То оно даже на овне никак не станет работать в 50 раз хуже. Ну станет 3 секунды.     | |||
| 125
    
        Eugeneer 08.09.22✎ 20:21 | 
        (120) и ты тут дико ошибашся что в файлово все на месте происходит. Если какие то данные на форме. То хрена два! Там передача идет и еще какая. с формы в модуль и обратно!     | |||
| 126
    
        Eugeneer 08.09.22✎ 20:24 | 
        физиечски то да) все на одном ПК, но данные во временных файлах забиваются все также. Ибо ясень пень что никаких таблиц в самой базе не создается, и никаких регистров.....     | |||
| 127
    
        Eugeneer 08.09.22✎ 20:25 | 
        А вот кстати если делать переборку дублей. типа свернуть и потом НайтиСтроки и прочая хрень... то это не секунды и даже не 1-2 минуты.     | |||
| 128
    
        Eugeneer 08.09.22✎ 20:26 | 
        Сень петь что НайтиСтроки это по сути запрос и ничем не отличается от запроса. По факту запрос запихнутый в метод.
 И если он где то в цикле - то получаем главную ошибку программирования. цикличные запросы. | |||
| 129
    
        Eugeneer 08.09.22✎ 20:30 | 
        Каюсь я нашел пару мест где я так делал. ибо иногда в процессе работы и каких то задач программируешь чтобы быстрее решить задачу. когда шквал.
 И также ничего страшного если сама задача никогда не коснется каких то больших данных. Ну фигли там поставить НайтиСтроки где никогда не будет больше 100 строк. Какая нибудь таблица настроек. Нафига к ней запрос писать. А вот если серьезные данные то только запросы и запросы. Вот видите я отлично знаю курсы 1С. там именно так поясняют. Что все нужно использовать от предметной задачи и ситуации. не всегда нужно лепить запрос там где нафиг не надо. но всегда когда мы понимаем что тут будет обьем данных. | |||
| 130
    
        Eugeneer 08.09.22✎ 20:32 | 
        А по поводу передачи между формой и сервером и прочее ТЗ и ТЧ уже тема была. Эта хрень мне покоя не дает ужасно.     | |||
| 131
    
        H A D G E H O G s 08.09.22✎ 20:51 | 
        (116) "Товарищ" Ежов вам не товарищ и смотрит на вас, как манул на репортера.     | |||
| 132
    
        Eugeneer 08.09.22✎ 20:53 | 
        (131) Репортер Ежов с места событий)     | |||
| 133
    
        H A D G E H O G s 08.09.22✎ 21:01 | 
        Я иду, куда требует Высшее Благо.     | |||
| 134
    
        Конструктор1С 08.09.22✎ 21:03 | 
        (116) >>Запомните - если что то работает 0-1 секунду, оно не станет вдруг иначе работать в 50 раз хуже
 Ну-ну. Я такое сотни раз видел. Написан небрежный запрос, вроде работает нормально, и написан давно. А потом накапливается большой объем данных, и запрос начинает люто тормозить | |||
| 135
    
        Eugeneer 08.09.22✎ 21:06 | 
        (134) и что с того что ты видел) Как будто я не видел) или кто то другой тут что то не видел)))
 Ты в теме где школьник запрос напишет этот и тест проведет. на чем угодно что у него есть. | |||
| 136
    
        Eugeneer 08.09.22✎ 21:07 | 
        Мы тут больше болтаем, чем просто ты мог за 2 минуты накидать обработку с ТЧ и таким запросом. и проверить на чем хочешь. Сложность обработки уровень школота.     | |||
| 137
    
        Eugeneer 08.09.22✎ 21:09 | 
        Было бы тут прикрепление файлов я бы сам скинул) мне не жалко.
 Вошбнику на заметку - что было бы здорово файлы выкладывать 1С формата | |||
| 138
    
        Eugeneer 08.09.22✎ 21:09 | 
        Уже бы давно конкуренцию ИС сделал.     | |||
| 139
    
        H A D G E H O G s 08.09.22✎ 21:19 | 
        (136) Давно бы уже выложил бы на гугл-диск.     | |||
| 140
    
        RomanYS 08.09.22✎ 21:43 | 
        (127) 
 1. Чтобы найти дубли в отсортированной ТЗ ничего сворачивать не надо, делается в один обход цикла. 2. В ТЗ можно тоже индексы и тогда множественный поиск не будет занимать минуты... | |||
| 141
    
        H A D G E H O G s 08.09.22✎ 21:44 | 
        (140) действительно множественный поиск нужно делать через merge.     | |||
| 142
    
        H A D G E H O G s 08.09.22✎ 21:45 | 
        (141) Но я ни разу этого ни у кого не видел. И не увижу.     | |||
| 143
    
        СеменовСемен 08.09.22✎ 21:46 | 
        (141) для поиска дублей не нужен мердж, достаточно обычного прохода     | |||
| 144
    
        RomanYS 08.09.22✎ 21:47 | 
        (141)(143) Расшифруйте     | |||
| 145
    
        СеменовСемен 08.09.22✎ 21:48 | 
        (144) не знаешь что такое мердж?     | |||
| 146
    
        H A D G E H O G s 08.09.22✎ 21:50 | 
        (143) Я в целом, понятно, что дубли складываем в hashmap     | |||
| 147
    
        RomanYS 08.09.22✎ 21:51 | 
        (145) Нет. Это?
 https://ru.wikipedia.org/wiki/Merge_(SQL) | |||
| 148
    
        RomanYS 08.09.22✎ 21:52 | 
        (146) Кстати да, тогда и сортировка не нужна     | |||
| 149
    
        СеменовСемен 08.09.22✎ 21:53 | 
        (147) merge - это алгоритм, как из 2 отсортированных массивов сделать 1 отсортированный     | |||
| 150
    
        H A D G E H O G s 08.09.22✎ 21:54 | 
        (147) Сортируем 2 таблицы по полям поиска (или берем уже отсортированные) и проходим их в одном цикле, сравнивая по полям поиска и сдвигая указатель по отставшей.     | |||
| 151
    
        RomanYS 08.09.22✎ 21:54 | 
        (149) (150) Понятно "сортировка слиянием". Спасибо.     | |||
| 152
    
        Eugeneer 08.09.22✎ 21:54 | 
        (149) как ты смеешь магистру такое говорить     | |||
| 153
    
        СеменовСемен 08.09.22✎ 21:56 | 
        (151) сортировка слиянием - это уже применение слияния для сортировки. само слияние - оно само по себе     | |||
| 154
    
        H A D G E H O G s 08.09.22✎ 21:56 | 
        (151) Нет     | |||
| 155
    
        RomanYS 08.09.22✎ 22:07 | 
        (154) ну принцип (слияния) вроде тот же. Смысла погружаться в терминологию не вижу, для себя по крайней мере.     | |||
| 156
    
        RomanYS 08.09.22✎ 22:11 | 
        (146) Кстати можно Маньяка потроллить)
 Женя, это по идее будет быстрее твоих запросов на любых объемах при любых ключах. Для отсортированных ТЗ правда всё горазда проще | |||
| 157
    
        H A D G E H O G s 08.09.22✎ 22:17 | 
        (156) Это... скучно.     | |||
| 158
    
        СеменовСемен 08.09.22✎ 22:25 | 
        (156) с хэшмапом не удобно, если несколько полей. нужно как-то составной ключ придумывать     | |||
| 159
    
        H A D G E H O G s 08.09.22✎ 22:27 | 
        (158) Новый ХэшированиеДанных.     | |||
| 160
    
        СеменовСемен 08.09.22✎ 22:28 | 
        (159) может статься, что сортировка то побыстрее будет, чем хэширование полей по всей таблице     | |||
| 161
    
        H A D G E H O G s 08.09.22✎ 22:32 | 
        (160) Может. Я хеширование 5+к MD5 строковых полей выносил в ВК. Даже с учетом конвертаций UTF-BSRT-UTF выходило на порядок быстрее, чем встроенным механизмом.     | |||
| 162
    
        Eugeneer 08.09.22✎ 22:38 | 
        (156) прикол в том что не нужна сортировка. Нужно сохранить порядок.     | |||
| 163
    
        Eugeneer 08.09.22✎ 22:40 | 
        и второй прикол в том что куда быстрее если миллисекунды работает все, включая даже выборку и перебор строк. А там у меня из 100к - 40к дублей.     | |||
| 164
    
        Eugeneer 08.09.22✎ 22:45 | 
        Я думаю сортировка ТЗ будет тормознее. Кстати в 1С они тоже тормозной метод.     | |||
| 165
    
        СеменовСемен 08.09.22✎ 22:47 | 
        (162) порядок восстанавливается второй сортировкой     | |||
| 166
    
        Eugeneer 08.09.22✎ 22:48 | 
        заканчивайте эту тему)     | |||
| 167
    
        Eugeneer 08.09.22✎ 22:48 | 
        Не нужно страдать там где в этом уже нет необходимости. Из курсов 1С.     | |||
| 168
    
        СеменовСемен 08.09.22✎ 22:49 | 
        на скл попробуй повторить. хотелось понять сколько времени тратится на передачу данных между серверами     | |||
| 169
    
        Eugeneer 08.09.22✎ 22:51 | 
        Вот другая есть задача)))
 Как зная теперь дубли и даже номера дублей. В уникальные дубли ТЗ (зная что это дубли) проставить нужное значение. | |||
| 170
    
        Eugeneer 08.09.22✎ 22:52 | 
        а стоп. отмет знаю     | |||
| 171
    
        RomanYS 08.09.22✎ 23:08 | 
        (160) на простой ТЗ из одной числовой колонки
 При 100к записей сортировка в 3 раза медленней чем вставка+поиск в соответствии. На 1М записей в 5 раз медленнее. Это без всяких сериализаций и хешей | |||
| 172
    
        Сергиус 08.09.22✎ 23:56 | 
        (121)[у тебяф запросы где делаются? их на клиенте даже создать невозможно. Любые запросы это сервер.
 А файловая не файловая - какая пофиг разница.] Ну как бы есть разница, какой "движок" это всё обрабатывает - тот, что в скуле, или тот, что в платформе 1с зашит. | |||
| 173
    
        Гений 1С гуру 10.09.22✎ 20:46 | 
        (0) выгружаешь в ТЗ, добавляешь колонку Счетчик.
 туда пишеть 1000000 + номер строки. Сворачиваешь по полям, по которым ищешь дубли и суммируешь по Счетчик. Где счетчик > 1000000 там значит есть дубль, берешь остаток от деления на 1000000, получаешь номер строки. | |||
| 174
    
        Злопчинский 10.09.22✎ 20:51 | 
        Возьмем ТЗ, в которой всего две строки
 строки являются дублями. счетчик-1 = 1'000'001 счетчик-2 = 1'000'002 свернули. получили одну строку с "дублем" счетчик = 2'000'003 берем остаток от деления 1'000'000 = 3 и что нам говорит "номер строки 3"...? что пора идти в лес..? | |||
| 175
    
        RomanYS 10.09.22✎ 20:51 | 
        (173) в остатке получишь СУММУ номеров строк. Сергей пытается в математику - неожиданно     | |||
| 176
    
        Злопчинский 10.09.22✎ 20:53 | 
        слово с одной гласной... взбзднуть... ;-)     | |||
| 177
    
        RomanYS 10.09.22✎ 20:54 | 
        (174) ну 3 - как раз один из двух вариантов, которые дают конкретные номера строк.     | |||
| 178
    
        Злопчинский 10.09.22✎ 21:04 | 
        (177) и дальше что?     | |||
| 179
    
        RomanYS 10.09.22✎ 22:12 | 
        (178) да ничего
 >> и что нам говорит "номер строки 3"...? Говорит, что нам очень повезло, и дубли в 1й и 2й строке. А вот во всех остальных случаях (кроме 3 и 4) - да, идти в лес. | |||
| 180
    
        Конструктор1С 11.09.22✎ 07:04 | 
        (174) типичный генизм. Некогда думать, надо хениальные мысли в эфир вываливать     | |||
| 181
    
        PR 11.09.22✎ 21:08 | 
        Как-то раз Маня выяснил, что в запрос можно передавать ТЗ...     | |||
| 182
    
        Eugeneer 11.09.22✎ 21:20 | 
        (181) ТЧ. и то не всегда. если это будет ТЧ объекта то хрен.     | |||
| 183
    
        PR 11.09.22✎ 21:33 | 
        (182) Маня, ну не позорься уже вконец что ли
 ТЧ ссылки вообще простейшим образом выбирается в запросе ТЧ объекта - это уже ТЗ Так что речь именно про ТЗ и только про ТЗ | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |