|   |   | 
| 
 | Как работает поиск по наименованию? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Kvant1C 18.05.15✎ 09:13 | 
        Уважаемые коллеги, разъясните пожалуйста, что это такое недокументированное поведение функции или неправильное ее использование?
 В коде есть такая строка: Результат = Неопределено; Результат = Справочники.Партнеры.НайтиПоНаименованию(""); После выполнения этой строки в переменной Результат "сидит первый элемент справочника" Читаем СП: Возвращаемое значение: Тип: СправочникСсылка.<Имя справочника>; Неопределено. Ссылка на найденный элемент справочника. Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка. Если для справочника наименование не задано (длина = 0), то будет возвращено Неопределено. Платформа 1С:Предприятие 8.3 (8.3.6.1977) ЧЯНТД? | |||
| 1
    
        Fragster гуру 18.05.15✎ 09:13 | 
        (0) прочитай СП целиком     | |||
| 2
    
        ДенисЧ 18.05.15✎ 09:13 | 
        F tckb Результат = Справочники.Партнеры.НайтиПоНаименованию("", Истина); ?     | |||
| 3
    
        Kvant1C 18.05.15✎ 09:15 | 
        (1) прочитал уже 5 раз     | |||
| 4
    
        Fragster гуру 18.05.15✎ 09:15 | 
        (3) не верю     | |||
| 5
    
        Kvant1C 18.05.15✎ 09:16 | 
        (2) Да, так пустышка     | |||
| 6
    
        ДенисЧ 18.05.15✎ 09:17 | 
        (5) И спосле этого ты утверждаешь, что прочитал весь СП?     | |||
| 7
    
        Defender aka LINN 18.05.15✎ 09:17 | 
        (0) Читать не умеешь, вестимо. Какая длина наименования справочника "Номенклатура" в конфигураторе?     | |||
| 8
    
        Fragster гуру 18.05.15✎ 09:18 | 
        (7) ты тоже не умеешь..     | |||
| 9
    
        Cyberhawk 18.05.15✎ 09:19 | 
        (0) "в переменной Результат "сидит первый элемент справочника""
 Покажи на картинке | |||
| 10
    
        Kvant1C 18.05.15✎ 09:19 | 
        (6) Там написано 
 Поиск будет успешным, если строка поиска: в случае значения параметра Ложь - будет соответствовать левой части наименования; в случае значения параметра Истина - будет полностью совпадать с наименованием (за исключением "хвостовых" пробелов в наименовании). Про то что будет найден первый элемент если значение параметра - ложь ничего не сказано | |||
| 11
    
        Fragster гуру 18.05.15✎ 09:20 | 
        (10) целиком читай...     | |||
| 12
    
        ДенисЧ 18.05.15✎ 09:20 | 
        (10) А что в твоём понимании "первый"?     | |||
| 13
    
        Lama12 18.05.15✎ 09:22 | 
        (10) Так первый элемент и соответствует пустой строке в левой части. Разве нет?     | |||
| 14
    
        Fragster гуру 18.05.15✎ 09:22 | 
        (12) то, что скуль юзал индекс по наименованию и так уж получилось, что он отсортирован по наименованию. кстати, то, что он "первый" - недокументировано, потому что это не всегда так.     | |||
| 15
    
        Kvant1C 18.05.15✎ 09:23 | 
        (12) Делаю запрос:
 ВЫБРАТЬ Партнеры.Ссылка, Партнеры.Наименование ИЗ Справочник.Партнеры КАК Партнеры В первой строке тот элемент, который возвращает функция. Проверял на нескольких справочниках | |||
| 16
    
        Cyberhawk 18.05.15✎ 09:24 | 
        (15) тебя смущает, что поиск по наименованию идентичен запросу к БД?     | |||
| 17
    
        Fragster гуру 18.05.15✎ 09:24 | 
        (15) тогда в (14) не индекс по наименованию, а кластерный индекс, который по ссылке. но сути это не меняет - это может быть и не так.     | |||
| 18
    
        Kvant1C 18.05.15✎ 09:24 | 
        (11) Там больше ничего нет, там дальше про родителя и владельца и еще Примечание:
 Если существует несколько элементов с указанным наименованием, то будет найден только один из них. | |||
| 19
    
        Fragster гуру 18.05.15✎ 09:25 | 
        (18) все правильно. то, что будет найден один из них - никак не противоречит тому, что тебе возвращается один из них...     | |||
| 20
    
        Fragster гуру 18.05.15✎ 09:25 | 
        а вот то, что он "первый" не написано, так что на это полагаться не надо.     | |||
| 21
    
        Kvant1C 18.05.15✎ 09:30 | 
        (16) Да нет, это как раз не смущает, просто ожидал, что функция вернет мне пустышку.
 Ну теперь буду знать эту особенность :) | |||
| 22
    
        fisher 18.05.15✎ 09:31 | 
        (0) Насколько я понимаю, при поиске по неполному соответствию пустой строки - найдутся ВСЕ элементы справочника. Можно сказать, они все начинаются с пустой строки. Ну а возвращает первый попавшийся (без гарантий какой именно, т.к. без явного упорядочивания СУБД никакой определенный порядок не гарантирует).     | |||
| 23
    
        Fragster гуру 18.05.15✎ 09:34 | 
        Сообщить(Лев("Как же работает поиск по наименованию",0) = "");     | |||
| 24
    
        fisher 18.05.15✎ 09:37 | 
        На этой фишке (отсутствие неявного упорядочивания в SQL) еще в 7.7 палились. Ибо в DBF неявное упорядочивание было, как и в файловом движке 8-ки. И при переходе на клиент-сервер алгоритмы на это завязанные - "ломались". Сам недавно погорел, хотя прекрасно про эту фишку знал. Отладил пакетную печать на файловой и не обратил внимание, что забыл по ссылке упорядочить один запрос. А там последовательный обход двух связанных выборок. В итоге на файловой - всё ок, а в клиент-серверной бессистемно "пропускались" некоторые печатные формы. Чуть голову не сломал. Так и не вкурил, пока сервер в режим отладки не перевёл.     | |||
| 25
    
        Kvant1C 18.05.15✎ 09:41 | 
        (19) Элемента с пустым наименованием не существует...     | |||
| 26
    
        fisher 18.05.15✎ 09:42 | 
        (25) Зато наименования ВСЕХ элементов НАЧИНАЮТСЯ с пустой строки.     | |||
| 27
    
        Славен 18.05.15✎ 09:44 | 
        (25) до кучи иди учи простейшие типы, тебе нужна Строка.     | |||
| 28
    
        fisher 18.05.15✎ 09:45 | 
        (27) Причем здесь типы сами по себе? Речь о правилах поиска.     | |||
| 29
    
        Serg_1960 18.05.15✎ 09:45 | 
        Имхо, сравнение строк различной длины, не только для 1С "проблематично", но и при разработке других алгоритмических языков стаяло. Ибо не в математике "проблематично", а в логике И то, как она "решается" в том или ином языке, становится видно на строке "нулевой" длины.     | |||
| 30
    
        Serg_1960 18.05.15✎ 09:47 | 
        А по поводу "Если для справочника наименование не задано..." - это к метаданным 1С. У документов есть дата и номер, а у справочников есть код и наименование... даже если их нет :)     | |||
| 31
    
        Drac0 18.05.15✎ 09:48 | 
        (21) Это не особенность, это вполне документированное поведение функции в зависимости от параметра. А вот не уметь понимать прочитанное - особенность, да.     | |||
| 32
    
        Kvant1C 18.05.15✎ 09:52 | 
        (31) Ну так написанное можно по разному трактовать...     | |||
| 33
    
        Serg_1960 18.05.15✎ 09:55 | 
        (31) Насчёт "А вот не уметь понимать прочитанное" можно ещё поспорить. "А вот не уметь объяснить написанное" - это я бы к к разработчикам предъявил. Язык написали, а объяснения к нему... другие, видать, писали. Не на столько умные :) Иногда в СП так "объяснят", что крышу срывает в попытке осознать прочитанное.     | |||
| 34
    
        fisher 18.05.15✎ 09:56 | 
        Вот приколупались к человеку. То, что по пустой строке будут найдены все элементы - зависит от конкретной реализации поиска и нифига неочевидно на первый вгляд. Ну, кроме опытнейших разработчиков, собравшихся в этой ветке, конечно же.     | |||
| 35
    
        Serg_1960 18.05.15✎ 10:06 | 
        (34) Ценю Ваш юмор и сарказм... но по сути - всё верно, "... не всё так однозначно."(цы)     | |||
| 36
    
        Kvant1C 18.05.15✎ 10:09 | 
        (34) (35) Спасибо за поддержку!
 ДенисЧ Огромное спасибо! | |||
| 37
    
        МаксимМП23 18.05.15✎ 10:13 | 
        (15) ВЫБРАТЬ ПЕРВЫЕ 1 же...     | |||
| 38
    
        Smallrat 18.05.15✎ 10:19 | 
        Там еще дальше параметр на точное соответствие - по умолчанию "Ложь"     | |||
| 39
    
        Smallrat 18.05.15✎ 10:20 | 
        Поставить в "Истина" и уже ничего не найдется     | |||
| 40
    
        ДенисЧ 18.05.15✎ 10:23 | 
        (38) (39) Ему это объяснили уже в самом начале     | |||
| 41
    
        Smallrat 18.05.15✎ 10:29 | 
        (40) чукча писатель)     | |||
| 42
    
        Гёдза 18.05.15✎ 10:58 | 
        (0) твой код эквивалентен
 Наименование ПОДОБНО "" + % то бишь все элементы | |||
| 43
    
        Лефмихалыч 18.05.15✎ 10:59 | 
        (24) что значит "неявное упорядочивание"?     | |||
| 44
    
        fisher 18.05.15✎ 11:30 | 
        (43) Наличие некоторого порядка при отсутствии явных указаний на конкретный порядок.     | |||
| 45
    
        Лефмихалыч 18.05.15✎ 12:46 | 
        (44) значит в (24) брехня. Все таблицы БД 1С в sql всегда и строго упорядочены по кластерному индексу     | |||
| 46
    
        fisher 18.05.15✎ 13:06 | 
        (45) Резкий ты мой :) Это же не гарантирует, что результат сложного запроса будет отсортирован по кластерному индексу первой таблицы, в нём описанному.     | |||
| 47
    
        fisher 18.05.15✎ 13:14 | 
        Это не говоря уже о том, что насколько я понимаю, в postgresql нет прямого аналога кластерных индексов mssql     | |||
| 48
    
        Kvant1C 18.05.15✎ 13:23 | 
        (47) Кстати да, у нас postgresql     | |||
| 49
    
        Kvant1C 18.05.15✎ 13:33 | 
        Вот что нашел на счет упорядочивания в запросах:
 >>Если в запросе не указано упорядочивание, то сортировка происходит по внутреннему идентификатору записи в таблице, по сути никак. http://zapros-1c-8.ru/9-yazik-zaprosov-1c-8/8-order | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |