выбрать из справочника элементы по одинаковому наименованию #276061


#0 by Loko
как быстро из справочника найти все те элементы, которые были бы равны по наименованию определенному значению (не через выбратьэлементы...)?
#0 by Loko
как быстро из справочника найти все те элементы, которые были бы равны по наименованию определенному значению (не через выбратьэлементы...)?
#1 by ZanderZ
запросом..
#2 by Мулька
ПорядокНаименований, предыдущий сравнивать с последующим. Или то же в ТЗ - через запрос, но тоже перебор
#3 by GrayT
В транзакции с отменой оной поиск по наименованию с переименованием...
#4 by Loko
а проще есть варианты? по типу цикла "выбратьэлементыпореквизиту?
#5 by Ёпрст2
Удаление в мнимой транзакции + НайтиПоНаименованию ...
#6 by ZanderZ
#7 by Программист 484
У меня смутное подозрение что наименования могут быть и не полностью одинаковы (лишний пробел, точка и прочее...)
#8 by Loko
рассматривается именно ситуация, когда наименования одинаковые.
#9 by GrayT
//что может проше и быстрее 3 и 5 Думаешь запрос индекс использует?
#10 by Программист 484
Хм если база sql то может быть быстрее?
#11 by Конь в пальто
+ 1
#12 by Ёпрст2
Конечна нет ...
#13 by Конь в пальто
быстрее всего будет прямо в таблицу долбануть запросом, а так (3,5) самое оптимальное имхо
#14 by Программист 484
Тразакция работает быстрее??? Хм - проверю.
#15 by Loko
проверил, работает. но давольно-таки долго.
#16 by Loko
а можно про транзакцию по-подробней?
#17 by Ёпрст2
НачатьТранзакцию;
#18 by kazam
100% работает. Не раз использовал. Пока пользователей не задолбало
#19 by Loko
понял.
#20 by kazam
запросы -отстой. Не используй их никогда. Делай ПорядокНаименований и ВыбратьЭлементы с Тарзакцией (можно сохранить резултат в СписокЗначений в глоб модуле и обновлять и поворять ВыбратьЭлементы только когда Время файла справочника изменилось);
#21 by Нуф-Нуф
Запросы рулят. "выбратьЭлементы" - это для лохов
#22 by kazam
запросы = тромоза
#23 by ZanderZ
и я про то же типа прямой обход бытрее запроса... ГОН .... а транзакции использовать особенно если база большая в таких случаешь вообще опа
#24 by Конь в пальто
ты не прав
#25 by Skom
1c++ канает? база скуль?
#26 by kazam
Слепцы! Говорю вам: запросы - тормозят. Они для ленивых
#27 by Loko
думаю, что самый оптимальный способ в . в данном случае поиск будет быстр. единственное, чтоб "пользователей не задолбало"))) сейчас забацаю. всем спасибо (кроме ниф-ниф, конечно).
#28 by Конь в пальто
ты не прав
#29 by GrayT
Бредятина Где ты видишь прямой обход в НайтиПоНаименованию?
#30 by ZanderZ
в ВыбратьЭлементы
#31 by GrayT
+29 Не скажу как ведет себя скуль и не буду утверждать за Наименование, но запрос по сортированному реквизиту на ДБФ индекс не использует. Но под тем, что запрос=тормоз, я бы не расписался
#32 by GrayT
А-а-а-, это все к 20 было? Ну да.... уже высказался :)
#33 by kazam
Может на Скуле запросы не тормозят, но с ДБФ версией я не раз убедился в . Всегда можно обойтись кодом вместо запроса, и код будет работать намного быстрее.
#34 by ZanderZ
типа запрос это не код :)
#35 by Программист 484
?????????????? Тебе уже все сказал.
#37 by zalex
лучше так:
#38 by kazam
"но запрос по сортированному реквизиту на ДБФ индекс не использует." Сказал. Скажи ты - как запрос быстрее кода?
#39 by kazam
согласен. но что такое СпрНужный.ВыбратьСтроки; ?? Можно запросом просто выбрать все элементы справочник, выгрузить и в ТЗ обработать. По идее должно быть быстро.
#40 by Vitello
Вроде не маленький, а такую чушь несешь...
#41 by kazam
Ты вроде уверен, но аргументировать не можешь. Может у вас у весх супер-компы с рэйд-масивом и 2яйцевимы процессорами, но на моем целероне запросы тормозят.
#42 by zalex
В данном случае быстрее перебрать, поскольку в любом случае из базы нужно достать весь справочник, а запрос будет делать лишние телодвижения. Запрос быстрее если тебе нужен какой-либо фильтр (а проверку на повторящиеся элементы в запрос не сунешь), и при условии что у тебя скульная база, тогда выборка будет произведена средствами скуля и по сетке пойдут только результаты запроса, это быстрее, но в сабже не тот случай...
#43 by Программист 484
ВОзьми большой запрос - о как вариант отчет по продажам перепеши без запроса
#44 by GrayT
При работе с регистрами - без запросов ни куда. Задача решается быстрее всего не запросом и не полным перебором
#45 by shaytanarh
Ой...А оно точно работает?
#46 by zalex
О то ж :) Проверь
#47 by zalex
+ Просто свернуть в 100 раз быстрее отработает, чем сам будешь сравнивать предыдущий со следующим...
#48 by GrayT
:) Это было - но коммент :)
#49 by shaytanarh
И так видно что с багом.
#50 by zalex
Предложи что-либо эффективнее
#51 by GrayT
3 и 5 пост....
#52 by zalex
Ну синтаксические имеют место. Я ж прямо здесь писал... Так точнее:
#53 by ZanderZ
ага юзеров лочить...
#54 by GrayT
Один фиг с ошибкой вылетает :)
#55 by shaytanarh
СпрНужный.Количество - что такое вобще, может "=1" и все?
#56 by ZanderZ
эт че СпрНужный.Количество
#57 by Vitello
см 34,25.,20й пост: "Не используй их никогда" - это что, не бред по вашему? + 10, согласен на все 100.
#58 by zalex
Разумеется :)
#59 by GrayT
Сколько ж там нужно иметь одинаковых наименований, чтоб их реально залочить? Хотя бы в сравнении по времени с проведением среднего документа?
#60 by zalex
Теперь все, в следующий раз буду в пофигураторе писать. Но вообще я тяп-ляп саму схему набросал, вот и накосячил по мелочи, но мелочи эти ловятся за 3 минуты... :)
#61 by kazam
со скулем быстрее, не спорю. "лишние телодвижения" - должно бы выглядеть как как считывание с винта с адреса 1 записи по послендюю и запись считанного в ОЗУ.
#62 by ZanderZ
смотря какая база тут же траны не разделяются на чтения и запись - одинаково лочит
#63 by kazam
речь не о регистрах
#64 by zalex
Тьфу, блин сплю, так конечно:
#65 by zalex
А ты правда считаешь что многократные НайтиПоНаименованию + сравнения/изменения работают быстрее чем ВыбратьЭлементы Пока ПолучитьЭлемент?
#66 by kazam
ЛОЛ!!!
#67 by ZanderZ
#68 by kazam
НайтиПоНаименованию + сравнения/изменения медленнее, т.к. позиция индекса постоянно сбрасывается
#69 by shaytanarh
вот так и получается зацикливание ).
#70 by zalex
Не придирайся по мелочам, писал не думая, лишь бы смысл набросать, СпрНужный.Количество опять нарисовалось, брррр...
#71 by kazam
ссылку на элемент сохранить бы
#72 by Конь в пальто
началась уже откровенная тупость
#73 by zalex
Ну зацикливание там никак не получится, разве что в мозгах :) В общем накидал-то саму идею, а кинулись синтаксические ошибки исправлять и ушли от темы... Надо было на словах, перебором в ТЗ, ТЗ свернуть. Но вот объяснить с суммируемоей колонкой решил что проще кодом будет, да спросоня вместо =1 какую-то хрень написал. А уж ВыбратьСтроки, это вообще ни о чем, понятно что очепятка...
#74 by zalex
Не получится, не свернется тогда. Потом по наименованию найдешь
#75 by GrayT
Один фиг нерабочий код :)
#76 by shaytanarh
Ага. Ищите баги дальше...
#77 by zalex
Добавь ТЗ.НоваяСтрока и успокойтесь. Этот код и не должен был быть рабочим, хотя бы уже потому что отсутствует Справочник.НужныйСправочник. Цель была не в том чтобы скопипастил, запустил, заработало, а чтобы саму идею понял. Стебайся дальше, я пошел отсюда. ЗЫ: Вообще-то единственный эффективный вариант предложил, но нерабочий, что ты!.. Самому за три минуты баги исправить не судьба, сварганьте мне...
#78 by Loko
а если в справочнике 40 тыс. элементов? и данный код выполняется в цикле? т.е. допустим есть 10 тыщ. наименований и нужно из нужного справочника найти все дубликаты (сгруппировать по количеству)?
#79 by Loko
"нужно из нужного"))) извиняюсь за тавтологию.
#80 by shaytanarh
Имха, для этого вариант с транзакциями подходит больше чем с ТЗ.
#81 by GrayT
имха для поиска ВСЕХ дубликатов ТЗ больше годится
#82 by Конь в пальто
имха дя поиска всех дубликатов больше сгодитсо select
#83 by Loko
мда
#84 by GrayT
10 тыщ дубликатов из 40 - возникает вопрос а нужно ли ваще наименование? Согласно теории информации получается, что практически нет :)
#85 by Loko
я к примеру сказал. в действительности где-то 500 из 35 тыщ.
#86 by zalex
Не больше. Можно сделать 2 ТЗ одну с остатками по всей номенклатуре, отсортированную по наименованию, потом как в находим повторяющиеся наименования, идем по таблице дубликатов, если КоличествоЭлементов>1 Тогда ищем в таблице остатков Наименование и пускаем цикл Для Сч = 1 по КоличествоЭлементов, в цикле ТЗОстатков.ПолучитьСтрокуПоНомеру(НайденныйНомер+Сч-1); и выводим остаток. Итого имеем один запрос, чтобы получить все остатки (или как ты их там будешь получать), один перебор элементов справочника (в случае запроса можно заменить на выгрузить), один проход по таблице совпадений, с частичным проходом таблицы остатков. Т.е. многократного прохождения справочника или таблицы не будет и отработает максимально эффективно.
#87 by zalex
=>
#88 by shaytanarh
признаться, сам так делал...
#90 by Loko
хотя, признаться, отчет выполняется долго (через запросы еще дольше), поскольку дальше используются регистры, условия, проверки и т.д. вопрос: можно ли оптимизировать этот код (выше)? или есть другие варианты решения задачи?
#91 by Skom
а почему бы не воспользоваться 1с++...прямым запросом?
#92 by Loko
не умею.
#93 by Skom
у тя база скуль?
#94 by Skom
а тебе вообще что надо.... поиск по наименованию..... или просто найти все элементы у которых совпадают наименования
#95 by Skom
короче если поиск по наименованию то вот так
#96 by Skom
% заменяет любой символ...
#97 by Нуф-Нуф
100
#98 by Skom
а эта выводит все дублирующиеся элементы, то есть те у которых совпадают наименования
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С