Имя: Пароль:
1C
1С v8
Не работает НайтипоРеквезиту почему?
0 ldgrad
 
21.03.14
18:38
Есть вот такая функция
Функция ПоискПоМодели(Модель,фКоличество,фЦена,фНаличие)
    Перем РезультатПоиска;
    
    Контр = Справочники.Поставщики;
    РезультатПоиска=0;    
    Попытка
        Запрос = Новый Запрос;
        Запрос.Текст=
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Артикул ПОДОБНО &Модель";
        
        Запрос.УстановитьПараметр("Модель",Модель);
        Результат=Запрос.Выполнить();
        
        Выборка=Результат.Выбрать();  
        Пока Выборка.Следующий()=1 Цикл
            
            Если Контр.НайтиПоРеквезиту("Контрагент",Контрагент.Ссылка,,Выборка.Ссылка)=1 Тогда  
                Сообщить("1");
                Контр.Наличие=фНаличие;
                Контр.Цена=фЦена;
                Контр.Количество=фКоличество;
                Контр.Записать();
            Иначе
                Сообщить("2");
                Контр.СоздатьЭлемент();
                Контр.Контрагент=Контрагент.Ссылка;
                Контр.Наличие=фНаличие;
                Контр.Цена=фЦена;
                Контр.Количество=фКоличество;
                Контр.ИД=Модель;
                Контр.Записать();

            КонецЕсли;
            
            РезультатПоиска=1;
            
        КонецЦикла;
        
    Исключение
        //Сообщить("ОШИБКА "+ Модель);
    КонецПопытки;
    
    Возврат РезультатПоиска;
    
КонецФункции
1 mehfk
 
21.03.14
18:39
СП прочитай по методу НайтиПоРеквезиту
2 Torquader
 
21.03.14
18:49
А что пишет ?
3 ldgrad
 
21.03.14
18:50
(2) Вообще ничего не пишет, думал непоставил индексацию на реквезит контра посмотрел стоит, а не работает, не знаю почему
4 Torquader
 
21.03.14
18:51
НайтиПоРеквизиту (FindByAttribute)
Синтаксис:

НайтиПоРеквизиту(<ИмяРеквизита>, <ЗначениеРеквизита>, <Родитель>, <Владелец>)

Может потому, что через И пишется ?
5 Шапокляк
 
21.03.14
18:52
Правда что ли "НайтиПоРеквЕзиту" используете? Попробуйте "НайтиПоРИквизиту"
6 Torquader
 
21.03.14
18:54
(5) У него так в коде написано - я ещё долго глаза тёр - думал - муха на мониторе, ан нет - оказывается - бага в программе.
7 romix
 
21.03.14
18:55
(0) В молчаливую попытку-исключение плохо засовывать что-либо, ибо скроет проблему.

Включите в меню Отладка - Остановка по ошибке...
8 Torquader
 
21.03.14
18:56
(7) У него там изначально было "сообщить", но про вывод информации об ошибке он просто не подумал.
9 Шапокляк
 
21.03.14
19:01
(6) Вопрос был к ТС. Я сама обалдела от увиденного. на попытку не посмотрела, теперь понятно, почему не пишет ничего.
10 Torquader
 
21.03.14
19:05
(9) Видимо, это такой забавный способ - делать из мухи слона - найти ошибку в коде, который ничего не возвращает.
Ошибка? Это не ошибка, это системная функция.