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

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

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

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

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

КвоСтрок = 0;
Если Выборка.Следующий() Тогда
   КвоСтрок = Выборка.Количество;
КонецЕсли;
Возврат КвоСтрок;

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