Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Поиск элемента в многоуровневом справочнике

v7: Поиск элемента в многоуровневом справочнике
Я
   Аньго Феликс Железны
 
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) Структура справочника? Проще - что есть "Серии кодов"?
   hhhh
 
6 - 15.03.18 - 10:53
(3) чтобы работало, надо сделать "серии кодов стоят во всем справочнике"
   Аньго Феликс Железны
 
7 - 15.03.18 - 10:54
(6) Я не могу трогать сам справочник, низя
   Злопчинский
 
8 - 15.03.18 - 10:57
(4) все работает. неизвестного объекта не может быть. при неудачном посике ты получаешь "неспозиционированную выборку, то есть тебе возвращается пустой элемент данного типа
   vova1122
 
9 - 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.ТекущийЭлемент();
  Сообщить(Тек.ЕдИзмер);
  КонецЕсли;
  КонецЕсли; 
  КонецЕсли;
Нормально сообщает Тек.ЕдИмер, Тек.Наименование. А вот Цену почему-то не может, вместо нее выводит неизвестный объект. Цена в справочнике есть. По наименованию этот элемент находится и его цена тоже.
 
 Рекламное место пустует
   vova1122
 
11 - 15.03.18 - 11:25
потому что для группі и для єлемента используется одна переменная "Спр1". Создай еще такой же обект СПР2. И для не го установи СПР2.ИспользоватьДату(ДатаДок); Ну дальше по коду перепиши для СПР2
   vova1122
 
12 - 15.03.18 - 11:36
Стоп. "НеизвестныйОбект" сообщается для переодических реквизитов. Цена у тебя переодический реквизит. Поэтому или в коде нужно создать переодический обект. или в печатном макете прописать СПР2.Цена.Получить(ДатаДок)
   Аньго Феликс Железны
 
13 - 15.03.18 - 12:04
(12) Ура! Заработало! Огромное человеческое спасибо!
   Злопчинский
 
14 - 15.03.18 - 16:40
(11) абсолютно пофиг. вполне достаточно одной переменной.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует