|
v7: Поиск нескольких дублей в табличной части дока | ☑ | ||
---|---|---|---|---|
0
Mafiozaa
10.02.21
✎
09:46
|
Приветствую, есть нужда сравнить ТабличнуюЧасть и ТаблицуЗначений на наличие дублей по строкам, затык в том, что если в документе 1 строка где то задвоилась затроилась, номер строк каждой я вижу, но если 3 строки задвоилось затроилось, то вижу только крайнюю
ИтогТЗ = СоздатьОбъект("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(ИтогТЗ); ИтогТЗ.ВыбратьСтроки(); Для А = 0 По ИтогТЗ.КоличествоСтрок() Цикл Если ИтогТЗ.НайтиЗначение(Штрихкод, А, "КодМаркировки") = 1 Тогда Сообщить(А); КонецЕсли; КонецЦикла; Штрихкод - считанные данные сканером КодМаркировки - колонка в табличной части ИтогТЗ.КодМаркировки - колонка в таблице значений А так как в НайтиЗначении стоит Штрихкод то он ищет по последнему пикнутому, прошу подмоги))) |
|||
1
ChMikle
10.02.21
✎
09:50
|
табличную часть выгрузите в таблицу значений , добавьте в таблицу значений колонку "повтор" проставьте 1 в каждую строку, сверните по "номенклатуре" и суммировании "повтора", там где 2 и более значения - повторяются
|
|||
2
Mafiozaa
10.02.21
✎
10:37
|
(1) Все хорошо, но выдает ошибку Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов (число, строка, дата)
Добавлял в НоваяКолонка("Повтор", "Число"); ИтогТЗ = СоздатьОбъект("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(ИтогТЗ); ИтогТЗ.НоваяКолонка("Повтор", "Число"); ИтогТЗ.ВыбратьСтроки(); Пока ИтогТЗ.ПолучитьСтроку() = 1 Цикл ИтогТЗ.Повтор = 1; КонецЦикла; ИтогТЗ.Свернуть("КодМаркировки", "Повтор"); Для А = 0 По ИтогТЗ.КоличествоСтрок() Цикл Если ИтогТЗ.Повтор > 1 Тогда Сообщить(А); КонецЕсли; КонецЦикла; |
|||
3
ChMikle
10.02.21
✎
10:42
|
ИтогТЗ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ИтогТЗ); ИтогТЗ.НоваяКолонка("Повтор", "Число"); ИтогТЗ.ВыбратьСтроки(); Пока ИтогТЗ.ПолучитьСтроку() = 1 Цикл ИтогТЗ.Повтор = 1; КонецЦикла; ИтогТЗ.Свернуть("КодМаркировки", "Повтор"); Для А = 0 По ИтогТЗ.КоличествоСтрок() Цикл ИтогТЗ.получитьстрокуПономеру(а);// надо позиционировать на конкретную строку ТЗ Если ИтогТЗ.Повтор > 1 Тогда Сообщить(А); КонецЕсли; КонецЦикла; |
|||
4
Mafiozaa
10.02.21
✎
10:48
|
(3) Странно как то отыгрывает https://prnt.sc/yxw58r
|
|||
5
Mafiozaa
10.02.21
✎
10:51
|
(3) Если А = 0 То номер за пределами значения, Если А = 1 То то что на скрине
|
|||
6
ChMikle
10.02.21
✎
12:06
|
(5) угу , номер строки с 1
А=1 по По ИтогТЗ.КоличествоСтрок() получилось в итоге -то ? |
|||
7
MWWRuza
гуру
10.02.21
✎
18:00
|
Off... По картинке в (4) - а, что, клей уже маркируют?
|
|||
8
hhhh
10.02.21
✎
20:08
|
(7) может это парфюмерия? Его же нюхают.
|
|||
9
Исновая
10.02.21
✎
20:36
|
(8) если клей не маркированный - это не парфюмерия
|
|||
10
Mafiozaa
11.02.21
✎
02:14
|
(8) Все правильно, элитный парфюм)))
|
|||
11
Mafiozaa
11.02.21
✎
02:14
|
(6) А = 1 то получается, то что на скрине
|
|||
12
hhhh
11.02.21
✎
05:42
|
(11) вот это какая-то хрень
ИтогТЗ.ВыбратьСтроки(); Пока ИтогТЗ.ПолучитьСтроку() = 1 Цикл ИтогТЗ.Повтор = 1; КонецЦикла; выкинь, напиши ИтогТЗ.Заполнить(1,,,"Повтор"); |
|||
13
Mafiozaa
11.02.21
✎
08:25
|
(12) Спасибо, но решил уже))
|
|||
14
Злопчинский
11.02.21
✎
11:40
|
(12) В общем случае такой вариант Заплолнить - сломается или в попытки обернуть или на колво строк проверять
|
|||
15
skafandr
11.02.21
✎
13:21
|
(13) так напиши что было
|
|||
16
Mafiozaa
12.02.21
✎
02:57
|
(15) Да я обработку внешнего события пересобрал, чтоб дубли впринципе не попадали в тч
|
|||
17
Cthulhu
12.02.21
✎
03:27
|
(14): да схреновли??? вот такое - ИтогТЗ.Заполнить(1,1,ИтогТЗ.КоличествоСтрок(),"Повтор") - никогда не ломалось...
(16): правильное решение. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |