|
Супер-уникальный поиск дублей в любой ТЗ по любым критериям | ☑ | ||
---|---|---|---|---|
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) Маня, ну не позорься уже вконец что ли
ТЧ ссылки вообще простейшим образом выбирается в запросе ТЧ объекта - это уже ТЗ Так что речь именно про ТЗ и только про ТЗ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |