Имя: Пароль:
1C
1С v8
Поиск элемента справочника
,
0 LOTOS2000
 
30.04.13
13:45
В модуле формы документа хочу сделать такое:
в цикле найти ссылку на объект справочника и записать её в реквизит табличной части.
Код:

Спр = Справочники.Ааа;
Для сч=1 по 12 Цикл
СпрСсылка =   НайтиПоКоду(Число(СокрЛП(Excel.Cells(ТекСтрока, 2).Value)),0);
Если СпрСсылка <> Спр.ПустаяСсылка() Тогда

   Если СпрСсылка.ЭтоГруппа()  Тогда
   Продолжить;
   КонецЕсли;

НоваяСтрока = Документы.Ббб.ТабличнаяЧастьБ.Добавить();
РеквТЧ1 = СпрСсылка;


КонецЕсли;
КонецЦикла;


Ошибка:
Метод объекта не обнаружен (ЭтоГруппа)

Как побороть?
1 Godofsin
 
30.04.13
13:46
убрать скобки?
2 NcSteel
 
30.04.13
13:47
Должно быть так:

1. Получаем необходимый код справочника
2. Ищем запросом данный справочник
3. Если 2 удачно отработал, то запихиваем его в ТЧ
3 Alex S D
 
30.04.13
13:48
а нормальный код привести религия не позволяет?)
4 Defender aka LINN
 
30.04.13
13:49
(0) СП предлагать?
5 LOTOS2000
 
30.04.13
13:49
(1) Помогло, но в рекв ТЧ ничего не записало, хотя в Спр элементы с соответствующими кодами присутствуют.
6 Defender aka LINN
 
30.04.13
13:50
(5) А должно было?
7 Lelic
 
30.04.13
13:50
СтрокаКода = "840";
Валюты = Справочники.Валюты;
НайденнаяСсылка = Валюты.НайтиПоКоду(СтрокаКода);
Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда
   Сообщить("Валюты """ + СтрокаКода + """ еще нет");
КонецЕсли;
8 LOTOS2000
 
30.04.13
13:50
(6) Хотелось бы )
я ж только учюсь ))
9 Defender aka LINN
 
30.04.13
13:50
+(6) И че, строка "НоваяСтрока = Документы.Ббб.ТабличнаяЧастьБ.Добавить();" прямо вот так риальне отработала?
10 LOTOS2000
 
30.04.13
13:51
(7) СП я читал.
11 1Сергей
 
30.04.13
13:51
//СпрСсылка =   НайтиПоКоду(Число(СокрЛП(Excel.Cells(ТекСтрока, 2).Value)),0);
СпрСсылка =   Спр.НайтиПоКоду(Число(СокрЛП(Excel.Cells(ТекСтрока, 2).Value)),0);
12 NcSteel
 
30.04.13
13:51
ДокументОбъект = Документы.ИмяДокумента.НайтиПоНомеру(НомерДокумента, ДатаДокумента);

МассивКодов = Новый Массив;
Для сч=1 по 12 Цикл
   МассивКодов.Добавить(Число(СокрЛП(Excel.Cells(ТекСтрока, 2).Value)));
КонецЦикла;

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать ПсевдонимТаблицы.Ссылка Из Спрвочник.ИмяСправочника Как ПсевдонимТаблицы Где ПсевдонимТаблицы.Код В (&МассивКодов)";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
   
   НоваяСтрока = ДокументОбъект.ТабличнаяЧастьДокумента.Добавить();
   НоваяСтрока.РеквТЧ1 = Выборка.Ссылка;

КонецЦикла;
13 LOTOS2000
 
30.04.13
13:52
(12) А если документ ещё не записан?
14 konsta_st
 
30.04.13
13:53
Возвращаемое значение:

Тип: СправочникСсылка.<Имя справочника>; Неопределено.
15 NcSteel
 
30.04.13
13:54
(13) В каком контексте выполняется код?

Если в модуле формы документа или модуле объекта, то

МассивКодов = Новый Массив;
Для сч=1 по 12 Цикл
   МассивКодов.Добавить(Число(СокрЛП(Excel.Cells(ТекСтрока, 2).Value)));
КонецЦикла;

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать ПсевдонимТаблицы.Ссылка Из Спрвочник.ИмяСправочника Как ПсевдонимТаблицы Где ПсевдонимТаблицы.Код В (&МассивКодов)";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
   
   НоваяСтрока = ИмяТабличнойЧастиДокумента.Добавить();
   НоваяСтрока.РеквТЧ1 = Выборка.Ссылка;

КонецЦикла;
16 1Сергей
 
30.04.13
13:54
(14) +1
17 Lelic
 
30.04.13
13:54
А почему тогда не пишете в каком справочнике поиск? И еще, из отрицательного опыта: посмотрите что вы ищите: нули проверьте и т.д..
18 LOTOS2000
 
30.04.13
13:56
(16) ПустаяСсылка и Неопределено две большие разницы? т.е. я получаю в цикле неопределено?
19 Alex S D
 
30.04.13
13:57
(18) отладчиком пробовал пользоваться?
20 NcSteel
 
30.04.13
13:58
(18) У тебя код весь из задницы.

В каждой строчке написан бред.
21 Godofsin
 
30.04.13
13:59
(20) +
22 x-a-d
 
30.04.13
14:00
(0) См (14)
Надо вместо
Если СпрСсылка.ЭтоГруппа()  Тогда
написать
Если СпрСсылка <> неопределено и СпрСсылка.ЭтоГруппа()

если первое условие выполнится, то будет проверяться второе, если не выполнится, то второе условие проверяться не будет и ошибки не будет.
23 cw014
 
30.04.13
14:01
Если для справочника код не задан (длина = 0), то будет возвращено Неопределено. (С) СП

Вот это: Число(СокрЛП(Excel.Cells(ТекСтрока, 2).Value))
Проверяй на то, что там что то есть
24 LOTOS2000
 
30.04.13
14:25
(20) Согласен.
(23) Там есть значения, совпадающие с кодом элементов справочника Ааа
25 cw014
 
30.04.13
14:27
(24) У справочника "ааа" код числовой что ли?
26 LOTOS2000
 
30.04.13
14:28
(25)да
27 1Сергей
 
30.04.13
14:40
(26) всё-равно надо искать по строке
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн