Имя: Пароль:
1C
1С v8
По какому принципу происходит ПоискПоНаименованию() у пользователей
,
0 Kigo_Kigo
 
16.02.22
11:02
Есть 2 внешние обработки с наименованиями
1) "Расчет базы распределения косвенных расходов"
и
2) "Расчет базы распределения косвенных расходов + НДС ставка 0"
Есть поиск
ВнешниеОбработки.НайтиПоНаименованию("Расчет базы распределения косвенных расходов")
Без точного поиска, то есть второй параметр "Ложь"
У всех пользователей находит №1, у одного №2, ставлю второй параметр "Истина", находит №1

Судя по кодуСправочника №2 введен раньше №1

Платформа 20-я, ОФ, почему так?

кеш пользователя прибивал и
проверял со своего компа с загрузкой со своего конфигуратора, путем подмены пользователя в параметрах, то есть кеш отметается(вроде бы как, ИМХО)
ПыСы холивар разводить, что ПоискПоНаименованию() - дичь, не стоит, я знаю, имею что дали
1 OldCondom
 
16.02.22
11:10
Просто ПоискПоНаименованию() - дичь, не стоит. Переделай, быстрее будет, чем на форуме глупости обсуждать, дел то на 2 минуты.
2 Dmitrii
 
гуру
16.02.22
11:11
(0) Ответ на этот вопрос никакого практического смысла не имеет.
1С всегда и везде писала, что результат поиска по наименованию предсказать точно невозможно.
Даже если кто-то тебе сейчас выдаст какое-то обоснованное объяснение, ты не сможешь никак применить его на практике.
Бессмысленная трата времени.

Единственное что ты можешь - сделать по-человечески. А уж тут вариантов масса. Начиная с того, чтобы объединить обработки в одну, работающую в двух режимах (для основной ставки НДС и ставки 0%). И заканчивая переносом обработок в расширение и использование вместо поиска по наименованию обращение по именам.
3 ДенисЧ
 
16.02.22
11:12
Ставь всегда истину. И задавай точное наименование
4 timurhv
 
16.02.22
11:13
(0) Скорее всего, файловый режим?
5 Dmitrii
 
гуру
16.02.22
11:15
>> У всех пользователей находит №1, у одного №2.

Придётся теперь этого пользователя увольнять. 1С не для него.
6 Kigo_Kigo
 
16.02.22
11:15
(1) (2) (3) Это понятно, в данной ситуации, быстро решить эту проблему - это переименовать №2, это я знаю
как в принципе все что удалось накопать с просторов , что поиск по наименованию зависит от температуры теплого океана и фазы луны
(4)К-С, МС Скуль
7 Kigo_Kigo
 
16.02.22
11:23
Еще промелькнуло мнение, что МенеджерСправочников зафиксировало "частое" обращение этого пользователя с поиском по наименованию этой обработки и закешировало себе, и после обращения НайтиПоНаименованию, не лезет в БД, а выдает сразу кешированный результат (ну так на детском языке если)
8 Dmitrii
 
гуру
16.02.22
11:34
(7) Как-то сомнительно. При таком варианте менеджеру справочника пришлось бы отслеживать изменение состава элементов (добавление/удаление) и их наименований. Чтобы актуализировать этот кэш. Да ещё и в разрезе каждого пользователя. Не слишком ли сложно.
9 Масянька
 
16.02.22
11:37
(6) Сортировка по какому реквизиту?
10 Kigo_Kigo
 
16.02.22
11:39
(9) какая сортировка, я где то про сортировку что то говорил?
11 Галахад
 
гуру
16.02.22
11:41
Гуру подтянулись. :-)
12 Dmitrii
 
гуру
16.02.22
11:46
Может там вообще у пользователя какие-то особенные права. И в текст непосредственного запроса к БД добавляются RLS. Потому и результат запроса отличается.
13 OldCondom
 
16.02.22
11:50
все же работает правильно, согласно описанию. Находит? Находит.
14 Kigo_Kigo
 
16.02.22
11:58
(12) Ник4аких особенных, рядом такой же бух сидит с полностью идентичными правами, находит №1, ц второго 2, но у кого находит не правильно - работала до этого с обработкой №2, потом ее, №2 переделали и залили как новую, но находит старую, при переименовании старой, или при параметре Истина, то находит и использует новую без проблем, отсюда и появилась версия из (7)
15 Масянька
 
16.02.22
12:02
(10) Не говорил. И что?
Во всех нормальных языках поиск (не важно, какое поле) происходит в индексированной таблице. Думаю, что и 1С не исключение.
А по теме - к гадалке.
16 Kigo_Kigo
 
16.02.22
12:08
(15) Если и есть индексированная таблица(а она есть), да даже кластерная индексация, то она как бы должна для всех выполнятся одинаково и от сортировок пользователя это уж никак не зависит
17 pechkin
 
16.02.22
12:13
если сортировка не указана (а она не указана), то найтись может любой.
Приучайся делать запросами
18 Масянька
 
16.02.22
12:16
(17) Быть тебе главой Почты России! 😀😀😀
А если не запросами, то указывай сортировку.
19 Kigo_Kigo
 
16.02.22
12:16
(17) не ясен принцип, при одних и тех же параметрах- результат разный, при чем к результату №1 вроде как выдача ближе , чем ко второму
20 pechkin
 
16.02.22
12:18
(18) без запроса нельзя сортировку указать
21 pechkin
 
16.02.22
12:19
(19) это тебе нужно понимать внутреннее устройство файлового движка
22 Bigbro
 
16.02.22
12:21
ищи по коду, делов то)
23 Dmitrii
 
гуру
16.02.22
12:22
(16) >> должна для всех выполнятся одинаково и от сортировок пользователя это уж никак не зависит.

Чистой воды домыслы и попытка выдать желаемое за какое-то правило.
Причем в условиях, когда вендор явно указывает, что никаких правил нет, и никому 1С в этом вопросе ничего не должна. А у тебя "должна" и всё тут.
24 Kigo_Kigo
 
16.02.22
12:24
(23) У вас тоже чистой воды домыслы исходя из- "и никому 1С в этом вопросе ничего не должна"
25 Kigo_Kigo
 
16.02.22
12:27
(24) + Из за таких же суждений, завтра 1С при одинаковых входных параметрах будет выдавать разный результат расчетов из регистров, к примеру, то тоже "и никому 1С в этом вопросе ничего не должна", а что удобненько так то...
26 pechkin
 
16.02.22
12:38
(25) поэтому см (17)
27 mistеr
 
16.02.22
12:39
(0) Ты на других языках программировал? Знаешь, что такое undefined behaviour? Вот это оно. Попытки выяснить причину смысла не имеют. Причина разумеется есть, посмотрев исходники платформы, можно ее найти, а толку? Косяк данного решения НайтиПоНаименованию на 1С не спишешь, как ни крути.
28 mistеr
 
16.02.22
12:42
Это примерно как знакомая продавщица в магазине все время давала в долг, а сегодня бац — за прилавком другая и посылает нах. А ты, весь такой в праведном гневе, идешь жаловаться директору.
29 Kigo_Kigo
 
16.02.22
12:47
(27) (28) Какие то нелепые примеры и оправдания, извини не впечатлило...
и что то мне думается на других языках за подобное разрабов бы по голове не погладили бы, особенно в более серьезных системах...
30 Галахад
 
гуру
16.02.22
12:49
(29) "разрабов бы по голове не погладили бы" это вы про коллег, которые код (0) написали? :-)
31 Bigbro
 
16.02.22
12:51
использование недокументированных возможностей непредусмотренным разработчиком образом - это конечно личное дело и риск каждого.
находятся индивидуумы например которые пытаются документы в рамках одной миллисекунды получать и ожидают определенного порядка.
хотя 1с честно говорит что порядка не будет.
32 Kigo_Kigo
 
16.02.22
12:53
(31) ЗаиЙсаль, НайтиПоНаименованию - не документированная функция, ок, ветку можно закрывать...
33 Dmitrii
 
гуру
16.02.22
12:54
(25) >> Из за таких же суждений.

Каких суждений? Ты бредишь? В документации явно прописана особенность работы метода НайтиПоНаименованию(). Ты же пытаешься всех убедить, что такой особенности быть не должно. Если бы её не должно было быть, то её и не было бы. Но она есть. Нравится тебе или нет. Просто прими это как данность.

>> завтра 1С при одинаковых входных параметрах будет выдавать разный результат расчетов из регистров.

Все особенности (а они тоже есть) результатов расчетов из регистров так же описаны в документации. И вендор имеет полное право расшириться перечень таких особенностей, если посчитает это целесообразным.
Не вижу в этом ничего предосудительного.

Претензии имело бы смысл предъявлять, если бы 1С никого не предупредило бы или вообще гарантировало бы, что будет один результат, а выдавался бы другой.
34 1Сергей
 
16.02.22
12:56
Я в типовой ЕРП 2.5. находил более ста вхождений "НайтиПоНаименованию"...

ЗЫ
Расстрелять!
35 Dmitrii
 
гуру
16.02.22
12:58
Представим, что в справочнике 1000 элементов с абсолютно одинаковыми наименованиями и кодом. То есть не как в (0), где наименования всё таки различаются, а именно одинаковые.
Какой именно элемент должен вернуть результат поиска по наименованию?
Что, по-твоему, должна указать 1С в документации к этому методу, если наблюдает различные результаты на различных СУДБ и даже на различных версиях одной и той же СУБД?
36 mistеr
 
16.02.22
13:00
(35) Который первый в списке! :))

p.s. А если после ТИИ будет другой, это предательство!
37 Bigbro
 
16.02.22
13:01
(32) именно что документированная. и выдает она ровно то что должна - возвращает первый найденный элемент совпадающий по наименованию.
а вот ваши ожидания что это будет один и тот же элемент для разных случаев - это уже сугубо ваши проблемы.
об этом в функции нет ни слова - это ваши домыслы и ваша ответственность полагаться на то что это будет работать так как вы себе выдумали.
38 Kigo_Kigo
 
16.02.22
13:01
(34) Тсссыыыы, это недокументированная функция, только для служебного пользования с неизвестным результатом, гыыы
(33) Хватит натягивать сову на глобус
(35) Должен быть один результат, по какому признаку пусть, как ты говоришь - вендор сам выберет и им пользуется, дата создания, гуид, код, индекс и хер пойми чего, но один и тот же, или выдавать сз со списком найденных результатов, ту уж пусть сами выбирает какой прогеру более подходит(это же касалось бы по коду, по реквизиту и т.д.)
39 Dmitrii
 
гуру
16.02.22
13:05
(38) >> Хватит натягивать сову на глобус.

+100500. Именно этим ты сейчас и занимаешься. Сам себе что-то придумал и теперь пытаешься всех окружающих убедить в незыблемости своей "правоты".
40 Kigo_Kigo
 
16.02.22
13:06
(37) "один и тот же элемент для разных случаев - это уже сугубо ваши проблемы." Читать умеешь, нет так перечитай(0)?
Какие нахер разные случаи и параметры, из разных параметров - другой пользователь и все, даже параметры запуска одни и те же из конфигуратора
41 mistеr
 
16.02.22
13:08
(38) Вот вендор и выбрал признак "хер пойми чего" с правом его менять по своему усмотрению.
Иначе было бы невозможно развивать платформу.
42 Kigo_Kigo
 
16.02.22
13:08
(39) еще раз, я себе ничего не придумал, а попытался понять и вас спросит от чего зависит, но в (6) уже сделал выводы "что поиск по наименованию зависит от температуры теплого океана и фазы луны", дальше этого мы не сдвинулись ни на микрон
43 pechkin
 
16.02.22
13:23
Так это скуль? Тогда пишите в спортлото (зачеркнуто) Микрософт
44 Масянька
 
16.02.22
13:33
- Ты суслика видишь?
- Нет.
- А он есть.
(С)
Описание ветки в трех строчках.
45 1Сергей
 
16.02.22
13:53
Единственное рациональное использование НайтиПоНаименованию вижу только при загрузке данных из внешних источников. А так, надо избавляться от овнокода
46 FIXXXL
 
16.02.22
14:34
(0) вот так ищет БСП, применяй

Функция КонфликтующиеДополнительныеОтчетыИОбработки(Объект, ЭтоОтчет, ИмяОбъекта)
    УстановитьПривилегированныйРежим(Истина);
    
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    ТаблицаСправочника.Ссылка КАК Ссылка,
    |    ТаблицаСправочника.Представление КАК Представление
    |ИЗ
    |    Справочник.ДополнительныеОтчетыИОбработки КАК ТаблицаСправочника
    |ГДЕ
    |    ТаблицаСправочника.ИмяОбъекта = &ИмяОбъекта
    |    И ТаблицаСправочника.Вид В(&ВидыДополнительныхОтчетовИОбработок)
    |    И ТаблицаСправочника.Публикация = ЗНАЧЕНИЕ(Перечисление.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется)
    |    И ТаблицаСправочника.ПометкаУдаления = ЛОЖЬ
    |    И ТаблицаСправочника.Ссылка <> &Ссылка";
    
    ВидыДополнительныхОтчетовИОбработок = Новый Массив;
    ВидыДополнительныхОтчетовИОбработок.Добавить(Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет);
    ВидыДополнительныхОтчетовИОбработок.Добавить(Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет);
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ИмяОбъекта",     ИмяОбъекта);
    Запрос.УстановитьПараметр("ВидыДополнительныхОтчетовИОбработок", ВидыДополнительныхОтчетовИОбработок);
    Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
    
    Если Не ЭтоОтчет Тогда
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТаблицаСправочника.Вид", "НЕ ТаблицаСправочника.Вид"); // не локализуется
    КонецЕсли;
    
    Запрос.Текст = ТекстЗапроса;
    
    Конфликтующие = Запрос.Выполнить().Выгрузить();
    Возврат Конфликтующие;
КонецФункции
47 fisher
 
16.02.22
15:02
Хм... Любопытная фигня. Действительно интересно, чем конкретно обусловлена разная выдача для разных пользователей (в плане лучшего понимания внутренней механики).
И да - действительно было бы лучше, если бы при поиске при наименованию платформа стабилизировала бы выдачу явной сортировкой.
ЗЫ. Что не отменяет того факта, что использовать неточный поиск - это быть ССЗБ.
48 Злопчинский
 
16.02.22
15:31
А что значит НайтиПоНаименование("ЧтоТо",Ложь)..?
найдет первую любую какую-то значение которое Начинается с "ЧтоТо"..?
то есть в ответ можно получить и
"ЧтоТо"
или
"ЧтоТоКомуТо"
.
иликак ?
49 Kigo_Kigo
 
16.02.22
15:35
(48)Именно так, Читай (0), там все написано, почти всем выдает ЧтоТо, а не понятно почему, кому то "ЧтоТоКомуТо"