|
v7: НайтиПоКоду в справочнике с несквозной нумерацией | ☑ | ||
---|---|---|---|---|
0
Patrio_
O_Muerte 11.12.11
✎
15:31
|
Доброго времени суток.
Господа. Есть справочник с нумерацией в пределах подчинения, то есть возможно наличие элементов с одинаковыми кодами. При использовании метода НайтиПоКоду() какой именно элемент он вернет? |
|||
1
ДенисЧ
11.12.11
✎
15:32
|
Если родителя укажешь, то вернёт по родителю. Иначе - с минимальным ИД
|
|||
2
Patrio_
O_Muerte 11.12.11
✎
15:34
|
Не, без родителя.
Минимальный ИД - это че? Это по времени создания? |
|||
3
ДенисЧ
11.12.11
✎
15:35
|
по численному значению :-)
Хотя тут я прогнал слегка. Вернуть может всё, что угодно, ибо в SQL не определён порядок выборки, если нет явного указания сортировки. Нужно поставить экскремент и посмотреть на запрос, который 1с генерит при этом... |
|||
4
Patrio_
O_Muerte 11.12.11
✎
15:39
|
Не, это тижило.
:) В смысле много времени займет - потом разбираться что к чему :) Спасибо за ответ. |
|||
5
ДенисЧ
11.12.11
✎
15:40
|
да я про себя говорил :-) Если не забуду, завтра поставлю опыт...
|
|||
6
Patrio_
O_Muerte 11.12.11
✎
15:47
|
Если не затруднит отпишись по результату эксперимента:)
|
|||
7
Rie
11.12.11
✎
15:49
|
(0) НайтиПоКоду - какие параметры указаны?
Если уникальность стоит в пределах подчинения, то НайтиПоКоду по умолчанию ищет по полному коду. |
|||
8
Patrio_
O_Muerte 11.12.11
✎
15:52
|
(7)Никаких, только код (числовой).
|
|||
9
ДенисЧ
11.12.11
✎
15:54
|
Вот результат профайлинга
select * from SC1817(NOLOCK INDEX=CODE) where CODE=' 1' order by CODE,ROW_ID То есть действительно, первый по времени создания. |
|||
10
Patrio_
O_Muerte 11.12.11
✎
15:55
|
(9)гг шикарус :)
|
|||
11
Злопчинский
11.12.11
✎
15:55
|
(7) это как??? указываем НафтиПоКоду("007") - то по какому ПОЛНОМУ коду будет поиск?
|
|||
12
Rie
11.12.11
✎
15:56
|
(8) Значит, искомый код будет рассматриваться как полный код элемента справочника - то есть будет найден на верхнем уровне или вообще не найден.
|
|||
13
Rie
11.12.11
✎
15:56
|
(11)
"НайтиПоКоду(<?>,); Синтаксис: НайтиПоКоду(<Код>,<ФлагПоиска>) Назначение: Найти элемент справочника по коду. Возвращает: 1 - если действие выполнено; 0 - если действие не выполнено (элемент не найден). Параметры: <Код> - выражение со значением искомого кода, <ФлагПоиска> - флаг поиска (необязателен): 0 - поиск во всем справочнике вне зависимости от родителя; 1 - поиск внутри установленного подчинения (родителя); 2 - поиск по полному коду через разделитель. Значение по умолчанию: 0 - если код уникален во всем справочнике; 2 - если код уникален только в группе. Замечание: Метод можно использовать только для объектов, созданных функцией СоздатьОбъект". |
|||
14
Patrio_
O_Muerte 11.12.11
✎
15:56
|
+(10)То есть насколько бы бездарно не была бы построена структура БД, 1С всегда нас спасет своей непредсказуемостью :)
|
|||
15
Patrio_
O_Muerte 11.12.11
✎
16:00
|
Всем спасибо за участие, тему можно закрывать.
Хотя если есть желание холивар какой-нить устроить, я не против, ща тока пива возьму :) |
|||
16
Rie
11.12.11
✎
16:03
|
Утверждение (12) проверено электроникой: не находит элементы внутри группы.
Спр = СоздатьОбъект("Справочник.Новый1"); Если спр.НайтиПоКоду("00001")=1 Тогда Сообщить(Спр.Наименование); Иначе Сообщить(",,,"); КонецЕсли; выдало ,,, Справочник Ноыф |
|||
17
Rie
11.12.11
✎
16:04
|
+(16) Справочник Новый1 содержал группу с кодом 00002, в которой был элемент с кодом 00001
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |