Имя: Пароль:
1C
1С v8
Отбор справочников с одинаковой табличной частью
,
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) Так и делаю. Только ТЧ сортирую сначала. Получаю ТЗ с двумя колонками: ссылка на элемент справочника, хнш.

Её и буду передавать в запрос.