Поиск дублей в табличной части документа #645066


#0 by RasuLL
Документ записан. Как проверить есть ли в табличной части документа дубли, если есть то удалить и сообщить? Обшарила форумы ничего подходящего не нашла. Заранее благодарна за помощь.
#1 by DrShad
запросом?
#2 by RasuLL
?
#3 by H A D G E H O G s
Фотку?
#4 by DrShad
да, без фотки никак
#5 by RasuLL
какая еще фотка?
#6 by H A D G E H O G s
Какая, какая... Твоя.
#7 by Armando
с такими вопросами как только топлес
#8 by ОбычныйЧеловек
месяц на форуме а обычи так и не узнала )
#9 by Torquader
Посчитать количество различных и выбрать те, которые больше 1.
#10 by RasuLL
да тут одни джентльмены!
#11 by DrShad
что не по-джентельменски?
#12 by RasuLL
можете привести пример?
#13 by alexei366
Модам, вы неверно хотите это проверять перед записью документа?
#14 by RasuLL
нет, после записи
#15 by ERWINS
#16 by alexei366
это не принципиально, то есть это должно выполняться в интерфейсе и пользователя сразу оповещать?
#17 by RasuLL
мне нужно проверить в таб. части, а это не то
#18 by Torquader
После записи - смысл этой проверки ? Или это будет проверяться потом, чтобы "зверям отвесить по полной" ?
#19 by ERWINS
думаю что  ОбработкаПроверкиЗаполнения
#20 by Torquader
А что мешает выбирать из табличной части ? Открыли конструктор запросов и мышкуем по нужным полям.
#21 by Torquader
Если в ОбработкаПроверкаЗаполнения, то выгрузить табличную часть, добавить колонку - проставить единицу в неё, свернуть табличную часть, суммируя по колонке с единицей - ну и перебрать потом, чтобы пользователю сообщить, где он не прав.
#22 by RasuLL
знания, не знаю как это сделать...
#23 by DrShad
какой изврат
#24 by RasuLL
#25 by alexei366
Я так думаю что ей нужно в событии формы "ПередЗаписьюНаСервер" организовать обход строк табличной части, в этом обходе данные текущей строки сравниваются с данными строк где номер строки больше текущего, и при совпадении создавать СообщениеПользователю в котором ссылаться на текущую строку, таким образом мы не только не запишем ошибочный документ, но и тыкнем пользователя носом.
#26 by RasuLL
все верно)
#27 by alexei366
Вот моя умничка, я знал что вы никогда не скажите что хотите
#28 by alexei366
Ну чтож пример кода придумать или сама?
#29 by RasuLL
цель проверять на коды, если в строке имеются одинаковые коды элементов, то удалить их и сообщить об этих строках
#30 by DrShad
а не проще сворачивать по-умолчанию?
#31 by RasuLL
не получается у меня...((
#32 by alexei366
DrShad эт идея, ток надо не сварачивать а в событии таблицы ОкончаниеРедактирования проверять на совпадение с другими строками , если да удалять эту и сообщить пользователю что он дурак
#33 by alexei366
Модмозель, вы определитесь пока с вариантом исполнения, а примеры кода после фотографии (не всёж на халяву)
#34 by alexei366
Мужики я сделал это!!!!!))))))))))))))
#35 by DrShad
что ты сделал?
#36 by alexei366
DrShad ты опоздал, фотка висела пару минут
#37 by alexei366
Эх походу кто-то обиделся и примеры кода не нужны, ладно ещё 3 минуты посмотрю потом закрою страничку.
#38 by ERWINS
#39 by DrShad
за такой код, человек его написавший уже бы не работал у нас, ничего личного, но не стоит учить плохому начинающих
#40 by alexei366
ERWINS есть одно но, небудет подсветки на ошибочную строку если в модуле объекта.
#41 by ОбычныйЧеловек
а не проще выгрузить только колонку товары, добавить числовую колонку - запонить ее единичкой потом свернуть и там гле будет больше единицы вывести на экран...код в 3 строчки.
#42 by ERWINS
и чем плохо кроме имен переменных? тогда делать по другому, тоже не сложно
#43 by DrShad
зачем!? не проще сделать тоже самое запросом к ТЧ?
#44 by Noroving
Помоему самый верный вариант... зачем писать замудроватые запросы и усложнять запись документа... проще сразу проверять внесенные данные...
#45 by DrShad
например выгрузка в ТЗ и обход по ТЗ, а не сразу же по ТЧ
#46 by alexei366
DrShad а как запрос делать к незаписанному объекту?
#47 by ОбычныйЧеловек
запрос будет работать при условии, что документ уже записан.
#48 by ERWINS
там вообще то сортировка... сортировать табличную часть????
#49 by DrShad
а ее обязательно сортировать, чтоб найти дубли? имхо клюшечный код в снеговике
#50 by alexei366
ERWINS а как твой код отработает, если две совпадающие строки будут в конце таблицы?
#51 by ERWINS
что бы найти номера строк обязательно
#52 by alexei366
а всё не посмотрел сначала.
#53 by ERWINS
да, проверил
#54 by DrShad
если уж ты получил ТЗ, то скорми ее запросу и получи все дубли в результат
#55 by ERWINS
зачем?
#56 by kokamoonga
извините за вопрос немного не по теме. а почему нельзя сортировать табличную часть? судя по количеству вопросительных знаков в конце вашего возмущенного вопроса речь идет о чем-то предельно порочном и некрасивом...
#57 by DrShad
потому что сортировка ТЗ тормознутый метод потому что дублей может и не быть, а цикл пройдет всю ТЗ и это тоже время потому что так кошернее
#58 by DrShad
ее потом с оригиналом не удобно сверять, к примеру ввод ПТиУ
#59 by ERWINS
потому что я не знаю, можно ли произвольно в документе менять порядок строк. Иногда это бывает черевато
#60 by kokamoonga
ну это первое и единственное, что пришло мне в голову да. просто такое количество вопросительных знаков... думал может за этим кроется что-то еще
#61 by ERWINS
просто я один раз так сделал, а потом объяснялся с лдьми из росалкоголя
#62 by kokamoonga
документ в котором нельзя меня порядок строк в табличной части это какой-то плохой документ как мне кажется. что-то есть неправильное в таком документе
#63 by kokamoonga
бред какой-то... но вобщем наши регулирующие органы никогда не были средоточием здравого смысла
#64 by Noroving
модуль формы перед записью на сервере
#65 by Snovy
Выгрузить ТЧ в ТЗ, свернуть ТЗ по колонкам, где могут быть дубли, сравнить количество строк свернутой ТЗ и оригинальной ТЧ. Если разошлись количества строк - значит есть дубли. А вот уже потом искать любыми производительными способами дубли и сообщать о них пользователю. А то часто видел код проверки на дубли, который очень долго ищет их там, где их нет...
#66 by Max Street
#67 by ERWINS
#68 by DrShad
больше никому это не показывай
#69 by ERWINS
почему?
#70 by Noroving
Представляю что будет с таб частью в 50 строк... Можно записать документ и пойти пообедать)))
#71 by DrShad
во-первых двойной цикл во-вторых удаление строк с нарушением выборки
#72 by ERWINS
где ты видишь удаление строк???? какой двойной цикл?
#73 by Noroving
Таки да, если это и будет работать, то только при обратном обходе. Не тупи, мы коментируем не твой код.
#74 by ERWINS
понял, извини удаление строк в двойном цикле это минное поле
#75 by DrShad
иди уже отдыхать :)
#76 by Dethmont
Пока самый близкий вариант... Но опять же обход всей Табличной части (а если нету дублей?)
#77 by Dethmont
Тоже самое но с условием в запросе
#78 by Dethmont
Или же примитив:
#79 by Infsams654
В типовой БГУ в ОбщегоНазначения есть Функция ЭтоСтрокаДубль(ТабЧасть, СтрокаТабЧасти, СтруктураРеквизитов)
#80 by Serg_1960
и Прежде чем искать чёрную кошку в тёмной комнате хотелось бы убедиться, что она там есть.
#81 by Noroving
Писал на ходу без отладок... так что уж извините... А нащет этого  |ГДЕ ВТ.КоличествоДублей > 1 может я и ошибаюсь, но помоему сначало срабатывает отбор, а потом групировка, не???
#82 by Ns33
Единственно, нужно сначала ТЧ во временную таблицу кинуть, чтобы 2 раза не читать, но для краткости пока без ВТ.
#83 by ERWINS
квадратичная зависимость... жесть, так нельзя
#84 by ERWINS
Каждый раз гонять данные на скл и обратно не есть гуд, это дополнительная нагрузка и значительные задержки, правда практически константные, лучше уж делать только на одном уровне трехзвенки (случай ошибок особый)
#85 by Ns33
Конечно нельзя, ведь правильно это делать циклами и без запросов, и для полного счастья всё это на клиенте.
#86 by ERWINS
смотри
#87 by Ns33
Так я про это и писал.
#88 by ERWINS
на мой взгляд лучший  вариант....
#89 by Ns33
А вот давай попросим знающих людей выбрать наилучший вариант из предложенных в данной теме. Если они сюда зайдут, конечно.
#90 by ERWINS
хотелось бы
#91 by МихаилМ
вот эффективный алгоритм поиска дублей
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям