#0
by Loko
как быстро из справочника найти все те элементы, которые были бы равны по наименованию определенному значению (не через выбратьэлементы...)?
#0
by Loko
как быстро из справочника найти все те элементы, которые были бы равны по наименованию определенному значению (не через выбратьэлементы...)?
#2
by Мулька
ПорядокНаименований, предыдущий сравнивать с последующим. Или то же в ТЗ - через запрос, но тоже перебор
#7
by Программист 484
У меня смутное подозрение что наименования могут быть и не полностью одинаковы (лишний пробел, точка и прочее...)
#13
by Конь в пальто
быстрее всего будет прямо в таблицу долбануть запросом, а так (3,5) самое оптимальное имхо
#20
by kazam
запросы -отстой. Не используй их никогда. Делай ПорядокНаименований и ВыбратьЭлементы с Тарзакцией (можно сохранить резултат в СписокЗначений в глоб модуле и обновлять и поворять ВыбратьЭлементы только когда Время файла справочника изменилось);
#23
by ZanderZ
и я про то же типа прямой обход бытрее запроса... ГОН .... а транзакции использовать особенно если база большая в таких случаешь вообще опа
#27
by Loko
думаю, что самый оптимальный способ в . в данном случае поиск будет быстр. единственное, чтоб "пользователей не задолбало"))) сейчас забацаю. всем спасибо (кроме ниф-ниф, конечно).
#31
by GrayT
+29 Не скажу как ведет себя скуль и не буду утверждать за Наименование, но запрос по сортированному реквизиту на ДБФ индекс не использует. Но под тем, что запрос=тормоз, я бы не расписался
#33
by kazam
Может на Скуле запросы не тормозят, но с ДБФ версией я не раз убедился в . Всегда можно обойтись кодом вместо запроса, и код будет работать намного быстрее.
#38
by kazam
"но запрос по сортированному реквизиту на ДБФ индекс не использует." Сказал. Скажи ты - как запрос быстрее кода?
#39
by kazam
согласен. но что такое СпрНужный.ВыбратьСтроки; ?? Можно запросом просто выбрать все элементы справочник, выгрузить и в ТЗ обработать. По идее должно быть быстро.
#41
by kazam
Ты вроде уверен, но аргументировать не можешь. Может у вас у весх супер-компы с рэйд-масивом и 2яйцевимы процессорами, но на моем целероне запросы тормозят.
#42
by zalex
В данном случае быстрее перебрать, поскольку в любом случае из базы нужно достать весь справочник, а запрос будет делать лишние телодвижения. Запрос быстрее если тебе нужен какой-либо фильтр (а проверку на повторящиеся элементы в запрос не сунешь), и при условии что у тебя скульная база, тогда выборка будет произведена средствами скуля и по сетке пойдут только результаты запроса, это быстрее, но в сабже не тот случай...
#44
by GrayT
При работе с регистрами - без запросов ни куда. Задача решается быстрее всего не запросом и не полным перебором
#47
by zalex
+ Просто свернуть в 100 раз быстрее отработает, чем сам будешь сравнивать предыдущий со следующим...
#57
by Vitello
см 34,25.,20й пост: "Не используй их никогда" - это что, не бред по вашему? + 10, согласен на все 100.
#59
by GrayT
Сколько ж там нужно иметь одинаковых наименований, чтоб их реально залочить? Хотя бы в сравнении по времени с проведением среднего документа?
#60
by zalex
Теперь все, в следующий раз буду в пофигураторе писать. Но вообще я тяп-ляп саму схему набросал, вот и накосячил по мелочи, но мелочи эти ловятся за 3 минуты... :)
#61
by kazam
со скулем быстрее, не спорю. "лишние телодвижения" - должно бы выглядеть как как считывание с винта с адреса 1 записи по послендюю и запись считанного в ОЗУ.
#65
by zalex
А ты правда считаешь что многократные НайтиПоНаименованию + сравнения/изменения работают быстрее чем ВыбратьЭлементы Пока ПолучитьЭлемент?
#68
by kazam
НайтиПоНаименованию + сравнения/изменения медленнее, т.к. позиция индекса постоянно сбрасывается
#70
by zalex
Не придирайся по мелочам, писал не думая, лишь бы смысл набросать, СпрНужный.Количество опять нарисовалось, брррр...
#73
by zalex
Ну зацикливание там никак не получится, разве что в мозгах :) В общем накидал-то саму идею, а кинулись синтаксические ошибки исправлять и ушли от темы... Надо было на словах, перебором в ТЗ, ТЗ свернуть. Но вот объяснить с суммируемоей колонкой решил что проще кодом будет, да спросоня вместо =1 какую-то хрень написал. А уж ВыбратьСтроки, это вообще ни о чем, понятно что очепятка...
#77
by zalex
Добавь ТЗ.НоваяСтрока и успокойтесь. Этот код и не должен был быть рабочим, хотя бы уже потому что отсутствует Справочник.НужныйСправочник. Цель была не в том чтобы скопипастил, запустил, заработало, а чтобы саму идею понял. Стебайся дальше, я пошел отсюда. ЗЫ: Вообще-то единственный эффективный вариант предложил, но нерабочий, что ты!.. Самому за три минуты баги исправить не судьба, сварганьте мне...
#78
by Loko
а если в справочнике 40 тыс. элементов? и данный код выполняется в цикле? т.е. допустим есть 10 тыщ. наименований и нужно из нужного справочника найти все дубликаты (сгруппировать по количеству)?
#84
by GrayT
10 тыщ дубликатов из 40 - возникает вопрос а нужно ли ваще наименование? Согласно теории информации получается, что практически нет :)
#86
by zalex
Не больше. Можно сделать 2 ТЗ одну с остатками по всей номенклатуре, отсортированную по наименованию, потом как в находим повторяющиеся наименования, идем по таблице дубликатов, если КоличествоЭлементов>1 Тогда ищем в таблице остатков Наименование и пускаем цикл Для Сч = 1 по КоличествоЭлементов, в цикле ТЗОстатков.ПолучитьСтрокуПоНомеру(НайденныйНомер+Сч-1); и выводим остаток. Итого имеем один запрос, чтобы получить все остатки (или как ты их там будешь получать), один перебор элементов справочника (в случае запроса можно заменить на выгрузить), один проход по таблице совпадений, с частичным проходом таблицы остатков. Т.е. многократного прохождения справочника или таблицы не будет и отработает максимально эффективно.
#90
by Loko
хотя, признаться, отчет выполняется долго (через запросы еще дольше), поскольку дальше используются регистры, условия, проверки и т.д. вопрос: можно ли оптимизировать этот код (выше)? или есть другие варианты решения задачи?
#94
by Skom
а тебе вообще что надо.... поиск по наименованию..... или просто найти все элементы у которых совпадают наименования
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- как в запросе выбрать номенклатуру, по определенной группе?
- v8. Как выбрать только элементы первого уровня из справочника ?
- Как выбрать иерархически элементы справочника в обрятном порядке ?
- Как выбрать элементы из группы справочника,исключая элементы подгруппы?
- упп , не олучается выбрать в кодах дохода НДФЛ выбрать код 2720 новогодний
- Выбрать тип справочника и выбрать элементы
- Кнопка "Выбрать" на форме выбора или как выполнить нажатие кнопки "Выбрать"
- УНФ 1.6 Как выбрать в документе перемещение запасов выбрать набор/комплект ?
В этой группе 1С
- В штрихкоде появилась буква.
- Ведение учета и партионного учета по сериям.
- Время в остатках по регистр
- Ай нид хелп! 1с Рарус Торговля+Склад!
- Ошибка при сетевой установке 1С-Рарус: Общепит ред.8
- Проблема с защитой листа Excel из 1С
- Почтовый шлюз для сервера HP
- VBA Word выбрать принтер для печати
- v7: Обновления(порядок обновления) релизов бухгалтерии
- Привязка периодического реквизита справочника к документу
- 1C 8.1 + PostgreSQL 8.2 = Ошибка создания базы - Еще и еще!
- Факт/план отработанного времени сотрудника
- Пауза в 7.7
- Изменение конфигурации (УРИБ)
- Ошибка СУБД: Не удалось зафиксировать файл базы данных для открытия или изм
- Во что можно конвертировать grs файлы?
- v7: Проверка СКК 62.2*18/118 <> СКД 76.АВ (Бух 4.88 Россия)
- Как получить результат Отчета, но чтобы сам отчет не открывался?
- OFF: Операция циклического сдвига в делфи
- Увольнение и прием совместителя в ЗУП