|   |   | 
| 
 | v7: Показать все номера строк дублей при сворачивании | ☑ | ||
|---|---|---|---|---|
| 0
    
        Mafiozaa 18.02.22✎ 08:10 | 
        Приветствую, при поиске дублей пользуюсь обычным свернуть, и вывожу если в принципе есть дубль, но щас нужно указать конкретно в каких строках есть дубли.
 ТЗДубли.Свернуть("КодМаркировки", "Повтор"); Для А = 1 По ТЗДубли.КоличествоСтрок() Цикл ТЗДубли.ПолучитьСтрокуПоНомеру(А); Если ТЗДубли.Повтор > 1 Тогда Сообщить("Дубль найден в строке №:" + А); КонецЕсли; КонецЦикла; Как мне показать что был найден дубль в строке под номером А, и такое же значение в строке под номером Б | |||
| 1
    
        mistеr 18.02.22✎ 08:18 | 
        Берешь код, ищешь его в исходной таблице. Показываешь.     | |||
| 2
    
        Смотрящий 18.02.22✎ 08:30 | 
        (0) Нужна ТЗ исходная и ТЗ дубль исходной
 ТЗ дубль исходной сворачиваешь, в ней ищещь все коды маркировки у которых повтор > 1 Через .НайтиЗначение (или как там оно) в ТЗ исходной ищещь код, запоминаешь номер строки, удаляешь строку, ищещь повторно Инкремент номеров только предусмотреть | |||
| 3
    
        АгентБезопасной Нацио 18.02.22✎ 08:31 | 
        открой для себя 1с++ и ИндексированнуюТаблицуЗначений     | |||
| 4
    
        Kigo_Kigo 18.02.22✎ 09:01 | 
        Имя колонок "КодМаркировки" "количество" = 1
 Тз.Свернуть("КодМаркировки","Количество") Тз.ВыбратьСтроки(); Пока Тз.получитьСтроку() = 1 Цикл Если Тз.Количество > 1 Тогда сообщить("У" + Тз.КодМаркировки + " Дублей" + Тз.Количество) | |||
| 5
    
        Kigo_Kigo 18.02.22✎ 09:05 | 
        но щас нужно указать конкретно в каких строках есть дубли.
 ОсновнаяТЗ.ВыбратьСтроки() Пока ОсновнаяТЗ. Цикл ТзСдудлями.ВыбратьСтроки() Пока ТзСдудлями. Цикл Если ОсновнаяТЗ. = ТзСдудлями Тогда Сообщить("Дубль " + ТзСдудлями +"В строке "+ ОсновнаяТЗ.НомерСтроки) | |||
| 6
    
        Kigo_Kigo 18.02.22✎ 09:06 | 
        К (4) Применительно к (5)
 Тз.Свернуть("КодМаркировки","Количество") Тз.ВыбратьСтроки(); Пока Тз.получитьСтроку() = 1 Цикл Если Тз.Количество > 1 Тогда сообщить("У" + Тз.КодМаркировки + " Дублей" + Тз.Количество) Иначе Тз.удалитьСтроку() Тз.выбратьСтроки() | |||
| 7
    
        Mafiozaa 18.02.22✎ 09:39 | 
        (5) Честно не совсем догнал, в (4) и (6) просто свораичваешь и говоришь у кого сколько дублей (тоесть 2-3-5-10 дублей), а мне нужно (у строки № 10 дубль находится в строке № 53) а в (5) не могу отстыковать к своему варианту)))     | |||
| 8
    
        Mafiozaa 18.02.22✎ 09:41 | 
        (6)     Процедура ПриЗакрытии()
 ТЗДубли = СоздатьОбъект("ТаблицаЗначений"); ТЗИсходная = СоздатьОбъект("ТаблицаЗначений"); Закрывать = 1; ВыгрузитьТабличнуюЧасть(ТЗИсходная, "КодМаркировки"); ВыгрузитьТабличнуюЧасть(ТЗДубли, "КодМаркировки"); ТЗДубли.НоваяКолонка("Повтор", "Число"); ТЗДубли.Свернуть("КодМаркировки", "Повтор"); ТЗИсходная.ВыбратьСтроки(); Пока ТЗИсходная.ПолучитьСтроку() = 1 Цикл ТЗДубли.ВыбратьСтроки(); Пока ТЗДубли.ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(ТЗДубли.КодМаркировки) = 1 Тогда ТЗДубли.Повтор = 0; Сообщить("В строке №:" + " " + ТЗДубли.НомерСтроки + " " + "нет кода маркировки."); Иначе ТЗДубли.Повтор = 1; Если ТЗИсходная.КодМаркировки = ТЗДубли.КодМаркировки Тогда Сообщить("Дубль" + " " + ТЗДубли.НомерСтроки + " " + "в строке" + " " + ТЗИсходная.НомерСтроки); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; //Для А = 1 По ТЗДубли.КоличествоСтрок() Цикл // ТЗДубли.ПолучитьСтрокуПоНомеру(А); // Если ТЗДубли.Повтор > 1 Тогда // Сообщить("Дубль найден в строке №:" + А + " " + СтрокаВИсходной); // Закрывать = 0 // КонецЕсли; // Если Закрывать = 0 Тогда // Предупреждение("Документ не проведен, до устранения ошибок, после устранения ошибок повторите попытку"); // Иначе // Док = СоздатьОбъект("Документ.Маркировка"); // Док.Новый(); // Док.Записать(); // КонецЕсли; //КонецЦикла; КонецПроцедуры Голова кипит, может показаться бредом, куда не то толкаю | |||
| 9
    
        АгентБезопасной Нацио 18.02.22✎ 09:50 | 
        (5)
 ИТЗ.Группировать("КодМаркировки","Количество",1); ИТЗ.ДобвавитьИндекс("Количество") ИТЗ.УстановитьФильтр(1,1,"Количество",0,0); ИТЗ.ВыбратьСтроки("Количество") пока ИТЗ.ПолучитьСтроку() Цикл Сообщить("Для кода маркировки"+ИТЗ.кодМаркировки+"дубли в строках:") Потомки=ИТЗ.ТзПотомки Потомки.ВыбраьтСтроки(); пока Потомки.получитьСтроку() Цикл Сообщить(Потомки.НомерСтроки) кц кц | |||
| 10
    
        АгентБезопасной Нацио 18.02.22✎ 09:53 | 
        +(9) должно быть  ИТЗ.УстановитьФильтр(1,1,"Количество",0,1);
 ну и можно Сообщить("Для кода маркировки"+ИТЗ.кодМаркировки+"найдено "+Итз.Потомки.КоличествоСтрок()+" дублей в следующих строках:") | |||
| 11
    
        Смотрящий 18.02.22✎ 10:04 | 
        ТЗДубли.НоваяКолонка("Повтор", "Число");
 ТЗДубли.Заполнить("Повтор", 1); ТЗДубли.Свернуть("КодМаркировки", "Повтор"); ТЗДубли.Сортировать("-Повтор"); ТЗДубли.ВыбратьСтроки(); Пока ТЗДубли.ПолучитьСтроку() = 1 Цикл Если ТЗДубли.Повтор = 1 Тогда Прервать; КонецЕсли; Стр = ""; Счетчик = 0; Пока 1 = 1 Цикл Переменная = 0; Если ТЗИсходная.НайтиЗначение(ТЗДубли.КодМаркировки, Переменная, "КодМаркировки") = 1 Тогда Стр = Стр + ?(ПустаяСтрока(Стр) = 0, ", ", "") + Переменная; Иначе Прервать; КонецЕсли; КонецЦикла; Если ПустаяСтрока(Стр) = 0 Тогда Сообщить("Дубли для " + ТЗДубли.КодМаркировки + " найдеы в строках:" + Стр); КонецЕсли; КонецЦикла; | |||
| 12
    
        Смотрящий 18.02.22✎ 10:07 | 
        Если ТЗИсходная.НайтиЗначение(ТЗДубли.КодМаркировки, Переменная, "КодМаркировки") = 1 Тогда
 Стр = Стр + ?(ПустаяСтрока(Стр) = 0, ", ", "") + (Переменная + Счетчик); ТЗИсходная.Удалить(Переменная); Счетчик = Счетчик + 1; Иначе | |||
| 13
    
        АгентБезопасной Нацио 18.02.22✎ 10:11 | 
        о ужас...     | |||
| 14
    
        Смотрящий 18.02.22✎ 10:14 | 
        (13) Ога. ТС то тут не шарит, а ты ему (3) предлагаешь изучить )))     | |||
| 15
    
        uno-group 18.02.22✎ 10:16 | 
        Почему бы не отсортировать ТЗ и не указать юзеру 1 строку с дублем остальные будут рядом ему и исправлять это будет легче. А вообще лучше не допускать дублей на этапе ввода. Сразу при выборе товара или клиента осуществлять поиск говорить что такой товар уже есть и позиционироваться на этой строке.     | |||
| 16
    
        Mafiozaa 18.02.22✎ 10:22 | 
        (12) Продублировал, на выходе 
 Если ПустаяСтрока(Стр) = 0 Тогда Сообщить("Дубли для " + ТЗДубли.КодМаркировки + " найдеы в строках:" + Стр); КонецЕсли; Условие не отрабатывает, если ставлю <> 0 Тогда вижу Дубли для Повтор найдены в строках: | |||
| 17
    
        АгентБезопасной Нацио 18.02.22✎ 10:24 | 
        (14)
 Копия.Загрузить(тз); Копия.ДобавитьКолонку("КоличествоДублей"); Копия.Заполнить(1,1,копия.КоличествоСтрок(),"КоличествоДублей") копия.свернуть("КодМаркировки","количествоДублей") Копия.выбратьСтроки() пока Копия.ПолучитьСтроку() Если Копия.количествоДублей > 1 Сообщить(Для кода кодМаркировки найдено Копия.количествоДублей дублей ) тз.выбратьСтроки() пока тз.получитьСтроку() Если тз.КодМаркировки=копия.КодМаркировки Сообщить(в строке тз.НомерСтроки) ... и не надо огород городить. Ну да, О большое в квадрате в худшем случае. Но тупо, бысто пишется и нефиг допускть дубли на малых данных пофиг. будут большие данные - может, научится думать. или, на крайняк, программиста наймет | |||
| 18
    
        Смотрящий 18.02.22✎ 10:26 | 
        (16) Походи в отладчике     | |||
| 19
    
        Злопчинский 18.02.22✎ 10:39 | 
        Где-то страдает один хомячок     | |||
| 20
    
        Mafiozaa 18.02.22✎ 10:48 | 
        Кароче, можете издеваться, смеятся, решил в 3 строки, проблема была в том, что первично при наполнении документа, данные попадали в тз, если док закрывали и потом открывали по новой, то тз обнулялось и была возможность сделать дубль, сделал призакрытии значение в файл, при открытии значение из файла, и все дубли никаким образом не попадут     | |||
| 21
    
        Ёпрст гуру 18.02.22✎ 10:56 | 
        (20) хранить что то с наружи таким способом - моветон     | |||
| 22
    
        АгентБезопасной Нацио 18.02.22✎ 11:09 | 
        (21) ты ж знаешь, что делятся на две категории - те, кто так делает, и те, кто уже не делает...     | |||
| 23
    
        Злопчинский 18.02.22✎ 11:13 | 
        (22) и кто планирует так делать и кто планирует не делать так.
 есть еще отдельная категория, которая планирует делать, но не так | |||
| 24
    
        Mafiozaa 18.02.22✎ 11:21 | 
        (21) (22) (23) 
 Не столкнешься, не набьешь шишечки | |||
| 25
    
        uno-group 18.02.22✎ 12:57 | 
        Так долго заполнить по новой ТЗ дублей при открытии?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |