|
v7: Поиск одинаковых значений в ТЧ | ☑ | ||
---|---|---|---|---|
0
Enlighted
22.05.17
✎
08:32
|
Добрый день люди. Возникла необходимость поиска в ТЧ одинаковых реквизитов. Есть ли более изящный способ сделать это чем прямой перебор во вложенных циклах?
|
|||
1
Chameleon1980
22.05.17
✎
08:34
|
зачем во вложенных?
сортируй по искомому полю и сравнивай очередную строку с предыдущей |
|||
2
cw014
22.05.17
✎
08:34
|
Выгрузить в ТЗ, Добавить колонку, заполнить числом "1", свернуть по предполагаемому реквизиту с суммированием новой колонки
|
|||
3
Chameleon1980
22.05.17
✎
08:36
|
ну и вариант (2)
чтобы понять есть дубли или нет и дубли чего |
|||
4
Enlighted
22.05.17
✎
08:39
|
(1) Дубли нужны по совершенно определенной колонке ТЧ. Остальные колонки не колышат. сотрировать методом "Сортировать"?
(2) мне не нужно узнавать количество дублей мне нужно их найти, а далее я их просто из ТЧ удалю |
|||
5
bse
22.05.17
✎
08:47
|
(4) а если в других колонках разные данные?
|
|||
6
cw014
22.05.17
✎
08:48
|
(4) Таким образом ты узнаешь, на какие позиции есть дубли, а дальше уже перебором таблицы дублей и поиском в табличной части требуемой строки
|
|||
7
Андрей_Андреич
naïve
22.05.17
✎
08:48
|
создаешь список значений и перебираешь ТЧ с конца.
если реквизит не находишь в списке - добавляешь в список. находишь - удаляешь строку |
|||
8
Масянька
22.05.17
✎
08:49
|
(4) А сразу в ТЧ без дублей?
|
|||
9
KishMish
22.05.17
✎
08:50
|
(4) Еще один универсальный метод
Не искать, а создавать новую таблицу значений по условию. Удалять не надо. Один цикл, новая строка при условии отсутствия найденного значения. |
|||
10
Андрей_Андреич
naïve
22.05.17
✎
08:51
|
КолСтрок=КоличествоСтрок();
СЗ=СоздатьОбъект("СписокЗначений"); Пока КолСтрок>0 Цикл ПолучитьСтрокуПоНомеру(КолСтрок); Если СЗ.НайтиЗначение(Реквизит)=0 Тогда СЗ.ДобавитьЗначение(Реквизит); Иначе УдалитьСтроку(); КонецЕсли; КолСтрок=КолСтрок-1; КонецЦикла; |
|||
11
Смотрящий
22.05.17
✎
09:03
|
Перем ТЗ;
спСписок = СоздатьОбъект("СписокЗначений"); Док.ВыгрузитьТабличнуюЧасть(ТЗ); Переменная = 0; Пока ТЗ.НайтиЗначение(<ТвоеЗначение>, Переменная, "<Твояколонка>") = 1 Цикл спСписок.ДобавитьЗначение(ТЗ.НомерСтроки); ТЗ.УдалитьСтроку(Переменная); Переменная = 0; КонецЦикла; |
|||
12
Enlighted
22.05.17
✎
12:03
|
(8) Пока недогоню как. Вот задача: найти дубли в справочнике контрагенты. Вот код который однозначно находит дубли, но некоторые естественно по 2 раза:
контрик = СоздатьОбъект("Справочник.Контрагенты"); контрикдубль = СоздатьОбъект("Справочник.Контрагенты"); контрик.ВыбратьЭлементы(); Пока контрик.ПолучитьЭлемент() = 1 Цикл Если контрикдубль.НайтиПоНаименованию(контрик.Наименование) = 1 Тогда Если контрик.Код <> контрикдубль.Код Тогда НоваяСтрока(); ФИОКонтрика = контрик.ТекущийЭлемент(); КодКОнтрика = контрик.Код; НоваяСтрока(); ФИОКонтрика = контрикдубль.ТекущийЭлемент(); КодКОнтрика = контрикдубль.Код; КонецЕсли; КонецЕсли; КонецЦикла; |
|||
13
Масянька
22.05.17
✎
12:05
|
(12) "Вот задача: найти дубли в справочнике контрагенты. " - а дальше что? Ну, зачем дубли-то искать.
|
|||
14
aka AMIGO
22.05.17
✎
12:22
|
(12) Один и тот же контрагент может иметь разные наименования.. Проверено жизнью, на многих бухиях: бушки горазды создавать себе проблемы.
У нас этих дублей около 50 штук, да и не по 2, а по 3 и более раз.. Процесс размножения остановлен запретом вводить новых контров всем, кроме суперадминистраторов.. |
|||
15
aka AMIGO
22.05.17
✎
12:28
|
+14 может лучше проверить дубли по ИНН, а не по наименованию?
В (13) - правильный вопрос.. Записи в справочнике созданы "не просто так", на каждую есть ссылка в документах.. придется заменять в старых доках дубль-контрагентов на что-нибудь одно |
|||
16
aka AMIGO
22.05.17
✎
12:32
|
Не понял.. в топике и в сабже речь идет о ТЧ, так что решение предложено в (2)
При чем тут справочник контрагентов? |
|||
17
Enlighted
22.05.17
✎
13:57
|
(13) Дубли искать, чтобы удалить их можно было.
(14) (15) Естественно, поэтому дополнительно реализую поиск по документу, и по телефону, выше описано. (16) Поиск дублей то где осуществлять, не в справочнике же. А по поводу документов созданных на этих контрагентов, будем заменять их. |
|||
18
Масянька
22.05.17
✎
14:01
|
(17) По опыту: берешь буха, который работает с контрагентами, сажаешь, открываешь справочник и пошли... Дубли помечаете на удаление. Когда прошерстите весь справочник - запускаешь поиск и замену значений и меняешь.
Есесьно - сделать копию. Только зрячим поиском (т. е. бух пальцем тыкает - это дубль), поскольку (15). А по опыту - косяки могут быть в ИНН, телефоне и пр. А может быть не дубль, а другой контрагент, но с тем же ИНН. Так что - только с бухом на пару. Удачи! |
|||
19
Масянька
22.05.17
✎
14:05
|
+ (18) Кстати, еще есть договора... Песня...
|
|||
20
Злопчинский
22.05.17
✎
14:06
|
(15) мало того, почти во всех документах наряду со ссылками на контргаентов есть ссылки на договор... придется еще с договорами заморачиваться.. переподчинять, заменять в документах...
|
|||
21
Злопчинский
22.05.17
✎
14:06
|
(19) ты сильный колдун! ;-)
|
|||
22
Масянька
22.05.17
✎
14:08
|
(21) Ага... С граблями и кактусами :))))
|
|||
23
Chameleon1980
22.05.17
✎
22:51
|
классная роль суперадминистраторов..
|
|||
24
Enlighted
22.05.17
✎
22:54
|
Всем: нереально в организации сделать одного человека следящего за контрагентами, ибо точек около 15 на каждой необходимо чтобы была возможность создавать контрагентов. Планирую осуществить недопуск дубликатов по фио/по пасспорту/и по контактному телефону, если 2 из этих признаков совпадут, то это один и тот же контрагент.
|
|||
25
HawkEye
22.05.17
✎
22:56
|
(24) все можно... две девочки за 15-30 минут обрабатывают все дубли за прошедший день с более чем 70-ти точек...
|
|||
26
Enlighted
22.05.17
✎
23:18
|
(25) Автоматизация, фигли!
|
|||
27
Chameleon1980
23.05.17
✎
03:36
|
в другую кривую сторону :)
|
|||
28
h-sp
23.05.17
✎
05:48
|
(24) у вас контрагенты - какие0то люди? Почему по паспорту?
|
|||
29
Андрей_Андреич
naïve
23.05.17
✎
06:45
|
Процедуру ПриЗаписи() отменили что ли? Контролировать дубли ИНН при вводе
|
|||
30
VladZ
23.05.17
✎
06:46
|
(28) Возможно у них контрагенты - физические лица. К примеру, фирма занимается установкой пластиковых окон.
|
|||
31
VladZ
23.05.17
✎
06:48
|
Чисто технически эту проблему не решить. Нужен "контролирующий орган", т.е. человек, который будет контролировать, а лучше даже если будет один (или два) человека, которые занимаются вводом новых контрагентов. Пусть при вводе ищут наличие существующего. Да и при косяках будет кого наказать. :)
|
|||
32
Андрей_Андреич
naïve
23.05.17
✎
06:51
|
(24) Какая разница сколько точек? Обмен-то между ними есть и шанс что один новый контрагент за день появится в двух точках равен нулю.
|
|||
33
HawkEye
23.05.17
✎
07:58
|
(32) так-то от бизнеса зависит...
|
|||
34
Enlighted
23.05.17
✎
08:08
|
(28) Ломбард с несколькими филиалами, только частные лица
|
|||
35
Enlighted
24.05.17
✎
11:17
|
Всех благодарю. Решение в (10) выбрал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |