Имя: Пароль:
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;
Если Выборка.Следующий() Тогда
   КвоСтрок = Выборка.Количество;
КонецЕсли;
Возврат КвоСтрок;

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