|
v7: Поиск элемента в многоуровневом справочнике | ☑ | ||
---|---|---|---|---|
0
Аньго Феликс Железны
15.03.18
✎
10:28
|
Вопрос глупый, но я только личинка программиста ))
Есть справочник с 3 уровнями. Серии кодов в пределах подчинения. Нужно программно найти элемент по коду. Как это сделать? Проверяла на другом справочнике, где серии кодов стоят во всем справочнике, ищет без проблем. |
|||
1
Масянька
15.03.18
✎
10:39
|
(0) НайтиПоКоду(<?>,);
FindByCode(<?>,); Синтаксис: НайтиПоКоду(<Код>,<ФлагПоиска>) Назначение: Найти элемент справочника по коду. Возвращает: 1 - если действие выполнено; 0 - если действие не выполнено (элемент не найден). Параметры: <Код> - выражение со значением искомого кода, <ФлагПоиска> - флаг поиска (необязателен): 0 - поиск во всем справочнике вне зависимости от родителя; 1 - поиск внутри установленного подчинения (родителя); 2 - поиск по полному коду через разделитель. Значение по умолчанию: 0 - если код уникален во всем справочнике; 2 - если код уникален только в группе. Замечание: Метод можно использовать только для объектов, созданных функцией СоздатьОбъект. Полезно читать СП... |
|||
2
Злопчинский
15.03.18
✎
10:45
|
Сначала сделай Спр.ИспользоватьРодителя(тутГруппаВкоторойХочешьИскать), далее - см.п.1
|
|||
3
Аньго Феликс Железны
15.03.18
✎
10:48
|
(1) Читала. В том и дело, что НайтиПоКоду() не срабатывает в данном случае.
|
|||
4
Аньго Феликс Железны
15.03.18
✎
10:49
|
(2) Спасибо, сейчас попробую. Просто пункт 1 не работает, вместо текущего элемента - неизвестный объект.
|
|||
5
Масянька
15.03.18
✎
10:50
|
(3) Структура справочника? Проще - что есть "Серии кодов"?
|
|||
6
hhhh
15.03.18
✎
10:53
|
(3) чтобы работало, надо сделать "серии кодов стоят во всем справочнике"
|
|||
7
Аньго Феликс Железны
15.03.18
✎
10:54
|
(6) Я не могу трогать сам справочник, низя
|
|||
8
Злопчинский
15.03.18
✎
10:57
|
(4) все работает. неизвестного объекта не может быть. при неудачном посике ты получаешь "неспозиционированную выборку, то есть тебе возвращается пустой элемент данного типа
|
|||
9
vova1122
15.03.18
✎
11:13
|
(0) Код поиска в студию.
|
|||
10
Аньго Феликс Железны
15.03.18
✎
11:19
|
Вот так получилось
СПР1=СоздатьОбъект("Справочник.ЦеныДляСубАбонентов"); СПР1.ИспользоватьДату(ДатаДок); Если СПР1.НайтиПоКоду("00000000053")=1 Тогда Группа=СПР1.ТекущийЭлемент(); Если Группа.ЭтоГруппа()=1 Тогда Спр1.ИспользоватьРодителя(Группа); Если СПР1.НайтиПоКоду("00000000093",1)=1 Тогда Тек=СПР1.ТекущийЭлемент(); Сообщить(Тек.ЕдИзмер); КонецЕсли; КонецЕсли; КонецЕсли; Нормально сообщает Тек.ЕдИмер, Тек.Наименование. А вот Цену почему-то не может, вместо нее выводит неизвестный объект. Цена в справочнике есть. По наименованию этот элемент находится и его цена тоже. |
|||
11
vova1122
15.03.18
✎
11:25
|
потому что для группі и для єлемента используется одна переменная "Спр1". Создай еще такой же обект СПР2. И для не го установи СПР2.ИспользоватьДату(ДатаДок); Ну дальше по коду перепиши для СПР2
|
|||
12
vova1122
15.03.18
✎
11:36
|
Стоп. "НеизвестныйОбект" сообщается для переодических реквизитов. Цена у тебя переодический реквизит. Поэтому или в коде нужно создать переодический обект. или в печатном макете прописать СПР2.Цена.Получить(ДатаДок)
|
|||
13
Аньго Феликс Железны
15.03.18
✎
12:04
|
(12) Ура! Заработало! Огромное человеческое спасибо!
|
|||
14
Злопчинский
15.03.18
✎
16:40
|
(11) абсолютно пофиг. вполне достаточно одной переменной.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |