|
Отбор справочников с одинаковой табличной частью | ☑ | ||
---|---|---|---|---|
0
User_Agronom
14.05.15
✎
11:35
|
Есть справочник с табличной частью.
Вопрос: можно ли запросом найти все элементы справочника, табличные части которых совпадают? |
|||
1
asady
14.05.15
✎
11:45
|
(0) если ограничить по количеству строк в ТЧ то может взлететь
1. тупо отобрать в Вт_1 - справочники с 1 строкой в ТЧ, ВТ_2 с 2 строками в ТЧ и т.д. 2 . динамически построить запросы с соединением номерстроки=номерстроки и (реквизитN=реквизитN) |
|||
2
1С_Fitness
14.05.15
✎
11:46
|
(0) можно наверно, убрать ссылку только из сравнения
|
|||
3
1С_Fitness
14.05.15
✎
11:46
|
внутреннее соединение
|
|||
4
User_Agronom
14.05.15
✎
11:50
|
(1) 2. Порядок значений в ТЧ может быть разный.
|
|||
5
Timon1405
14.05.15
✎
11:53
|
(4) тогда это разные ТЧ
|
|||
6
DrShad
14.05.15
✎
11:57
|
без предварительной обработки выборки вряд ли получится
|
|||
7
1С_Fitness
14.05.15
✎
11:57
|
(4) упорядочить сделай
|
|||
8
User_Agronom
14.05.15
✎
11:58
|
(5) Нет. Если строки ТЧ1 совпадают со строками ТЧ2 (без учета номеров строк) - то это одинаковые ТЧ.
|
|||
9
asady
14.05.15
✎
11:58
|
(2) наоборот ссылка<>ссылка д.быть
(4) не вопрос. убери номерстроки=номерстроки |
|||
10
User_Agronom
14.05.15
✎
12:00
|
(6) Похоже придётся пускать цикл...
|
|||
11
1С_Fitness
14.05.15
✎
12:02
|
(10) временные таблицы в запросе , цикл не есть гуд
|
|||
12
asady
14.05.15
✎
12:02
|
(10) если ограничить число строк можно без предварительной обработки - текст запроса построить динамически
|
|||
13
User_Agronom
14.05.15
✎
12:05
|
(12) Это связано с операцией, которую планируется проводить раз в квартал. Нельзя ограничивать.
|
|||
14
User_Agronom
14.05.15
✎
12:06
|
(11) Циклом подготовить ТЗ, которую передать в запрос вместо этого справочника.
|
|||
15
фобка
14.05.15
✎
12:11
|
1. Отобрать запросом документы с пересекающимися записями в тз (можно еще с учетом количества строк)
2. Пробежать циклом по результату и сравнить тч 3. ... 4. profit |
|||
16
1Сергей
14.05.15
✎
12:13
|
(15) всё понятно, кроме одного. Откуда документ взялся?
|
|||
17
Timon1405
14.05.15
✎
12:13
|
(13) Если раз в квартал, есть смысл подумать над хранением данных,а не вычислении их на ходу. Например, делаем РС "аналоги Вашего справочника", подписку при записи, которая текущий элемент кидает в фоновое задание. в фоновом задании сравнивает конкретный текущий элемент со всеми, если нашли совпадение, пишем в РС оба элемента. в отчете просто выводим регистр.
|
|||
18
OLень
14.05.15
✎
12:15
|
(17) может все-таки проще запрос написать?
|
|||
19
фобка
14.05.15
✎
12:16
|
(16) ну пусть справочник. И не тз в первом пункте а тч
|
|||
20
Timon1405
14.05.15
✎
12:16
|
(18) Если элементов справочника 100000 и в тч по 100 строк, то может быть и не проще
|
|||
21
IVT_2009
14.05.15
✎
12:26
|
1. Хэшируем по любому алгоритму ТЧ справочника. Это будет ключ отбора. (может быть коллизия , но скорей всего вам так не повезет + порядок следования строк не важен.)
2. Далее сложим это в ТЗ и присвоим каждой строчке ИД = 1 3. Свернем ТЗ суммируя ИД 4. Любым удобным способом отбираем записи с ИД >1 это и есть повторения 5. Профит |
|||
22
IVT_2009
14.05.15
✎
12:28
|
Вариант 2
1. приводим строки ТЧ справочника к верхнему регистру 2. сортируем тч справочника 3. Далее хэшируем 4. как постом выше |
|||
23
User_Agronom
14.05.15
✎
12:41
|
(21) (22) Так и делаю. Только ТЧ сортирую сначала. Получаю ТЗ с двумя колонками: ссылка на элемент справочника, хнш.
Её и буду передавать в запрос. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |