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

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) абсолютно пофиг. вполне достаточно одной переменной.

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