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

Как сделать возврат количество строк из функции

Ø [mikecool, 26.02.21 - 16:58]
Как сделать возврат количество строк из функции
Я
   Varlant1n
 
26.02.21 - 16:33
Здравствуйте. Есть фунция с запросом. Надо вернуть количество строк.
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЗаказКлиентаТовары.Ссылка КАК Ссылка,
    |    КОЛИЧЕСТВО(ЗаказКлиентаТовары.НомерСтроки) КАК Количество
    |ИЗ
    |    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
    |ГДЕ
    |    ЗаказКлиентаТовары.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |    ЗаказКлиентаТовары.Ссылка";
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаДокумент);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    Возврат ?????????????

Я пробовал Выборка.Количество. Но это не работает... Помогите, пожалуйста
   ДенисЧ
 
1 - 26.02.21 - 16:33
Выборка.Количество()
   Varlant1n
 
2 - 26.02.21 - 16:34
(1) Не работает. Всегда возвращает 1
   Вафель
 
3 - 26.02.21 - 16:35
(1) там будет 1
Нужно вначале
Выборка.Следующий()

   Масянька
 
4 - 26.02.21 - 16:35
(2) Сначала проверку на не пустой результат запрос. А потом (1).
   Varlant1n
 
5 - 26.02.21 - 16:36
(3) Если Выборка.Следующий() Тогда
        Возврат Выборка.Количество();
    КонецЕсли;    ?
   Вафель
 
6 - 26.02.21 - 16:36
А вообще проще в тз выгружать
РезультатЗапроса .Выгрузить()[0].Количество

   Varlant1n
 
7 - 26.02.21 - 16:36
(6) А что после вернуть?
   ДенисЧ
 
8 - 26.02.21 - 16:37
Раз пошла такая пьянка...
Если Выборка.Следующий() Тогда Возврат Выборка.Количество Иначе Возврат 0; КонецЕсли;
   Varlant1n
 
9 - 26.02.21 - 16:40
(8) У меня после возврата есть операции сравнения на больше-меньше. Но когда я делаю Возврат Выборка.Количество
Мне выдает ошибку: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
   МимохожийОднако
 
10 - 26.02.21 - 16:41
А можно и без запроса СсылкаНаДокумент.ПолучитьОбъект().Товары.Выгрузить().Количество()
   Вафель
 
11 - 26.02.21 - 16:42
(10) однако у тебя половина методов лишние
   Varlant1n
 
12 - 26.02.21 - 16:42
(10) Там нужен запрос, потому что есть пару условий
   МимохожийОднако
 
13 - 26.02.21 - 16:42
(11) Согласен )
   Вафель
 
14 - 26.02.21 - 16:42
"ВЫБРАТЬ
    |    &Ссылка,
    |    КОЛИЧЕСТВО(ЗаказКлиентаТовары.НомерСтроки) КАК Количество
    |ИЗ
    |    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
    |ГДЕ
    |    ЗаказКлиентаТовары.Ссылка = &Ссылка";
   Масянька
 
15 - 26.02.21 - 16:43
Ну, вы, блин, даёте (С) 
:)))))))))
   МимохожийОднако
 
16 - 26.02.21 - 16:43
(12) Если очень хочется запросом, то добавь поле 1 и сложи значения этого поля.
   Varlant1n
 
17 - 26.02.21 - 16:45
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    &Ссылка,
    |    КОЛИЧЕСТВО(ЗаказКлиентаТовары.НомерСтроки) КАК Количество
    |ИЗ
    |    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
    |ГДЕ
    |    ЗаказКлиентаТовары.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаДокумент);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    Если Выборка.Следующий() Тогда
        Возврат Выборка.Количество;
    КонецЕсли;

написал так. все равно ошибка о том, что нельзя сравнивать
   piter3
 
18 - 26.02.21 - 16:46
А что такое СсылкаНаДокумент и есть ли в нем в этой ТЧ строки?
   Масянька
 
19 - 26.02.21 - 16:46
До сотки дотянем? Пятница всё-таки...
   Varlant1n
 
20 - 26.02.21 - 16:48
Все, получилось. Проблема была в самих сравнениях. Спасибо за помощь огромное. тема закрыта
   fisher
 
21 - 26.02.21 - 16:48
(8) У меня такая стандартная конструкция:
КвоСтрок = 0;
Если Выборка.Следующий() Тогда
   КвоСтрок = Выборка.Количество;
КонецЕсли;
Возврат КвоСтрок;

Просто стараюсь везде где возможно избавляться от Иначе, чтобы потом лишними ветвлениями не нагружать свой уставший мозг.


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