Имя: Пароль:
1C
 
Туплю, спать хочу, почему не работает?
,
0 Klesk666
 
26.08.14
04:44
Объект.КартаЛояльности = ПолучитьКартуЛояльности(Объект.Партнер);
    
    
КонецПроцедуры

&НаСервере
Функция ПолучитьКартуЛояльности(Партнер)
    Запрос= Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    |    КартыЛояльности.Ссылка
    |ИЗ
    |    Справочник.КартыЛояльности КАК КартыЛояльности
    |ГДЕ
    |    КартыЛояльности.Партнер = &Партнер
    |    И КартыЛояльности.Статус = &Статус";
    Запрос.УстановитьПараметр( "Партнер",Партнер);
    Запрос.УстановитьПараметр( "Статус",Перечисления.СтатусыВидовКартЛояльности.Действует);
    Результат=Запрос.Выполнить().Выгрузить();
    Если Результат.Количество()>0 Тогда
        Возврат Результат[0].Ссылка;
    Иначе
        Возврат Справочники.КартыЛояльности.ПустаяСсылка();
    КонецЕсли;
    
КонецФункции



в консоле по определенному партнеру возвращает одно значение, в модуле не хочет. Заранее спасибо.
1 Wobland
 
26.08.14
04:52
параметры
2 Klesk666
 
26.08.14
05:05
(1) спасибо
3 DrZombi
 
гуру
26.08.14
06:33
(0) Перечисление можно не засовывать в параметры.
Можно так:

И КартыЛояльности.Статус = Значение(Перечисление.СтатусыВидовКартЛояльности.Действует)
4 DrZombi
 
гуру
26.08.14
06:34
+(3) Зачем тебе получать все данные по запросу, когда ты всегда берешь только первую строчку. Так и пиши запрос, где получаешь только одну запись :)
5 DrZombi
 
гуру
26.08.14
06:37
+(4) А так же, зачем Выгружать в ТЗ?
Когда делать проще

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


Если Выборка.Следующий() Тогда
        Возврат Выборка.Ссылка;;
    Иначе
        Возврат Справочники.КартыЛояльности.ПустаяСсылка();
КонецЕсли;
6 Cube
 
26.08.14
06:37
А ещё вместо

    Результат=Запрос.Выполнить().Выгрузить();
    Если Результат.Количество()>0 Тогда
        Возврат Результат[0].Ссылка;
    Иначе
        Возврат Справочники.КартыЛояльности.ПустаяСсылка();
    КонецЕсли;


пиши

    Выборка = Запрос.Выполнить().Выбрать();
    Возврат ?(Выборка.Следующий(), Выборка.Ссылка, Справочники.КартыЛояльности.ПустаяСсылка());
7 DrZombi
 
гуру
26.08.14
06:38
(6) Точно, так красивее
:)
8 Любопытная
 
26.08.14
06:38
(6) Минималист, елки)
9 Cube
 
26.08.14
06:40
(8) Дык, зачем плодить сущности, которые далее в коде не используются...
10 Cube
 
26.08.14
06:41
(9) Это я про

Результат=Запрос.Выполнить();
Выборка = Результат.Выбрать();
11 Любопытная
 
26.08.14
06:42
(9) Не все сразу. Человек же учится, когда-нибудь и до этого голова дойдет
12 Godofsin
 
26.08.14
07:09
(9) По шаблону просто пишется. Кто-то привык и на автомате обозначает результат запроса, потому что, к примеру, привык проверять его на пустоту.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс