|
Как правильно проверить 2 таблицы на наличие хотя бы одной совпадающей строчки? | ☑ | ||
---|---|---|---|---|
0
Bigbro
12.05.23
✎
13:20
|
Как прожженый клюшечник я бы сделал двойной цикл по одной табличке внешний по второй внутренний где совпало - Возврат Истина после циклов возврат ложь.
но надо идти вперед, и в парадигме снеговиков наверное есть другие варианты? типа какой то запрос в который передать таблицы. или может функции БСП какие то есть? Подскажите, коллеги! |
|||
1
OldCondom
12.05.23
✎
13:31
|
в запрос их, свернуть "ИМЕЮЩИЕ Количество > 1"?
|
|||
2
OldCondom
12.05.23
✎
13:32
|
Возврат Результат.Пустой();
|
|||
3
Fish
12.05.23
✎
13:37
|
(0) Вот тут вроде толковая статейка, где сравнивают разные методы по быстродействию: https://infostart.ru/public/326983/
А какой будет правильным в твоём случае, сам определи. |
|||
4
PR
12.05.23
✎
13:49
|
(0) Лучше всего обходом ТЗ, быстрее будет
Но, если красиво, то запросом выбираешь обе таблицы объединением, в запросе добавляешь два поля ЕстьВТаблице1 и ЕстьВТаблице2, в первой выборке ЕстьВТаблице1 = Истина, ЕстьВТаблице2 = Ложь, во второй наоборот Потом все группируешь по всем полям, по ЕстьВТаблице1 и ЕстьВТаблице2 агрегируешь по максимум Потом фильтр, что ЕстьВТаблице1 и ЕстьВТаблице2, то есть что есть и в первой и во второй Если запрос что-то вернул, значит есть совпадения |
|||
5
PR
12.05.23
✎
13:50
|
(1) А если в первой ТЗ две одинаковые строки, а во второй ни одной?
|
|||
6
PR
12.05.23
✎
13:51
|
Ну или, кстати, сначала выбрать различные из обеих таблиц, потом добавить поле Количество = 1 и потом сагрегировать по нему и искать, где Количество > 1
|
|||
7
shuhard
12.05.23
✎
14:02
|
(0)[или может функции БСП какие то есть?]
есть, одноименные |
|||
8
Garykom
12.05.23
✎
15:14
|
(0) В парадигме 1С 8 УФ надо обе ТЗ передать в запрос как ВТ
И тупо их внутренне соединить по нужным полям |
|||
9
Garykom
12.05.23
✎
15:16
|
(8)+ не забыть номера строк исходных ТЗ, чтобы вернуть в результате
|
|||
10
Donkey_hot
12.05.23
✎
17:49
|
(0) А внутреннее соединение по всем полям не подходит?
|
|||
11
Bigbro
12.05.23
✎
20:42
|
спасибо за советы, будем пробовать мучать запрос_)
|
|||
12
vde69
12.05.23
✎
22:22
|
||||
13
AIMAN
12.05.23
✎
22:53
|
(0) если часто такое делать, то хорошо бы их отсортировать, тогда значительно ускориться проверка (ищем пока "меньше" до первого значения "больше" или "равно")
|
|||
14
НафНаф
12.05.23
✎
23:27
|
(8) кто Вам это сказал?
|
|||
15
AlvlSpb
12.05.23
✎
23:39
|
Дозаполнить Тз_1 строками из ТЗ_2, получить результирующую ТЗ. Запомнить ТЗ.Количество() в переменной. Свернуть результирующую по всем полям. Сравнить количество ДО свертки с Количеством строк после свертки. Если не равны - есть совпадения
|
|||
16
Garykom
13.05.23
✎
01:29
|
(14) Вроде как H A D G E H O G s тестировал разные способы обработки данных
и в случае сервера 1С оказалось даже потери на передачу в СУБД и обратно незначительны относительно скорости обработки на СУБД |
|||
17
МихаилМ
13.05.23
✎
02:32
|
вопрос обсуждался больше сотни раз. если человек не может найти обсуждения на этом форуме - ему не место ит индустрии. умение пользоваться поисковыми сервисами - базовое
|
|||
18
Bigbro
13.05.23
✎
07:10
|
(15) спасибо кстати, кажется это должен быть лучший вариант, что то у меня вылетел он из головы сразу.
когда-то именно так делал. спасибо, решение найдено расходимся. ) |
|||
19
Garykom
13.05.23
✎
18:23
|
(18) советую убедиться что решение с ТЗ.Свернуть() точно наилучшее
ибо не так давно был глюк в платформе и любые операции с ТЗ при наличии ссылочных типов дико тормозили ну и на 200% уверен что при наличии сервера 1С (а не файловая) через СУБД и запросы будет быстрей |
|||
20
NorthWind
13.05.23
✎
20:28
|
(0) собрать две табли в одну, добавив колонку КолСтрок со значением 1.
Далее - Свернуть () по всем значениям, кроме КолСтрок. Профит. Если количество строк в таб1 и таб2 больше чем количество строк в результате - значит, дубликаты есть. Где именно - можно определить по КолСтрок, там где значение стало 2 и больше - те строки и дублируются. Было? |
|||
21
NorthWind
13.05.23
✎
20:28
|
минус - расход памяти большой, плюс - думаю, будет шустро.
|
|||
22
NorthWind
13.05.23
✎
20:29
|
а, блин, уже было. Сорьки
|
|||
23
Garykom
14.05.23
✎
00:52
|
(20) А в какой таблице и сколько дублей?
Или таблиц больше 2? |
|||
24
Aleksey
14.05.23
✎
03:25
|
(18) даже с учетом (5)?
|
|||
25
Bigbro
14.05.23
✎
05:47
|
(24) ну чтоб дубли убрать все равно сворачивать.
хотя это все больше теоретические построения, на практике там конечно и дублей не будет и в 99% случаев в таблицах по одной строке)) |
|||
26
Индиго
15.05.23
✎
05:56
|
1.Добавь в каждую ТЗ по колонке
2. перебери каждую и выгружая значения строк в структуры сериализуй структуру в строку и складывай в новый колонки. 3. закидывай тз в запрос, выбирай в ВТ и соединяй по заполненным колонкам. У одинаковых строк сериализованные значения буду одинаковыми и они соединятся |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |