|
РезультатЗапроса.Пустой() | ☑ | ||
---|---|---|---|---|
0
timgan
12.05.15
✎
07:42
|
Что значит: без учета общих итогов?
|
|||
1
vicof
12.05.15
✎
07:58
|
Открываем СП и читаем, там русским по белому написано, зачем нужен метод пустой()
|
|||
2
timgan
12.05.15
✎
09:15
|
Спасибо, СП читал: "Определяет, есть ли в результате записи (без учета общих итогов).
Извини, если вопрос глупый, а что могут быть общие итоги без записей? |
|||
3
1Сергей
12.05.15
✎
09:16
|
(2) общий итог есть всегда. не?
|
|||
4
User_Agronom
12.05.15
✎
09:17
|
(2) Да. Итого, 0 единиц!
|
|||
5
timgan
12.05.15
✎
09:26
|
User_Agronom, если можно пример Запроса: Итого, 0 единиц!
|
|||
6
timgan
12.05.15
✎
10:19
|
Может кто-нибудь объяснит?
|
|||
7
1Сергей
12.05.15
✎
10:31
|
(6) слушай, а тебе вот не всё-равно? Разве сказанное в скобках как-то кардинально меняет суть? Тебе нужно использовать где-то общие итоги, даже если не было строк в результате запроса? Или, может, ты не знаешь как правильно пользоваться функцией Пустой()?
|
|||
8
timgan
12.05.15
✎
10:44
|
Функция Пустой() понятная, я просто в голове не могу придумать пример где нет строк в результате запроса, а общий итог есть.
Да, ты прав вопрос, чисто теоретический. |
|||
9
fisher
12.05.15
✎
11:24
|
Подозреваю - атавизм в справке. Вполне возможно, что когда-то пустой общий итог возвращался.
|
|||
10
ViSo76
12.05.15
✎
11:43
|
(9) Не атавизм. Итоги расчитываются на сервере предприятия. Никаких итогов нет в возврате данных из базы.
1С действует так: посылает запрос в базу по команде Выбрать(). По команде .Пустой() считывается информация сколько реально было выбрано записей и возвращается соответственно истина если записей = 0. Данные запроса на клиента не тащатся. |
|||
11
timgan
12.05.15
✎
13:36
|
(10) Выполнить() (не Выбрать())
|
|||
12
timgan
12.05.15
✎
13:37
|
(9) атавизм - хорошая версия
|
|||
13
ViSo76
12.05.15
✎
13:43
|
(11) Да ошибся, конечно же Выполнить()
|
|||
14
fisher
12.05.15
✎
14:12
|
(10) Спасибо, кэп. А теперь еще раз - как в свете этого сакрального знания трактовать фразу "без учета общих итогов"?
|
|||
15
b_ru
12.05.15
✎
14:28
|
(5)
ВЫБРАТЬ 1 КАК Количество ИЗ ВЫБРАТЬ "А" КАК Поле1 КАК Запрос1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВЫБРАТЬ "Б" КАК Поле2 КАК Запрос2 ПО Запрос1.Поле1 = Запрос2.Поле2 ИТОГИ ПО Сумма(Количество) ОБЩИЕ. |
|||
16
fisher
12.05.15
✎
15:08
|
(15) Судя по синтаксическим ошибкам, сам ты его не запускал, но почему-то свято уверен, что итоговая запись будет в результате.
|
|||
17
timgan
12.05.15
✎
15:32
|
(15) Уважаемый, не мог бы ты прокомментировать решение, я так понимаю что:
ИТОГИ СУММА(Количество) ПО ОБЩИЕ РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам) Выборка.Следующий(); Выборка.Количество должно быть равно 1. У меня Выборка.Количество равно Неопределено |
|||
18
timgan
12.05.15
✎
16:00
|
(16) Нет запускал, я сделал свой:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | 1 КАК Количество |ИЗ | Документ.МножественныйВыбор.Товары КАК МножественныйВыборТовары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары | ПО МножественныйВыборТовары.Номенклатура = Товары.Ссылка |ИТОГИ | СУММА(Количество) |ПО | ОБЩИЕ"; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Выборка.Следующий(); Сообщить(Выборка.Количество); Сообщить(ТипЗнч(Выборка.Количество)); |
|||
19
timgan
12.05.15
✎
16:12
|
fisher я думал это ты мне, ссори
|
|||
20
sanja26
12.05.15
✎
16:35
|
Если указаны Итоги в запросе, результат запроса будет не пустой, несмотря на то, что записей нет. Будет одна строка в результате с нулем.
|
|||
21
fisher
12.05.15
✎
16:45
|
Еще один писатель.
|
|||
22
ViSo76
12.05.15
✎
21:22
|
(14) Общие итоги в последствии добавляются в результат "возврата". Итоги добавляют в результат строки с рассчитанными итоговыми колонками и с системной информацией, типа строка является итоговой, уровень и т.д.
|
|||
23
timgan
13.05.15
✎
06:41
|
(22) Я так тебе понимаю:
В примере Запрос: выборка из ТабличнойЧасти "Товары" документа "РасходнаяНакладная". В ТабличнойЧасти всех документов, попадающих в выборку, Реквизит Сумма = 0, тогда детальных записей нет и Функция Пустой() = Истина, т.е. в РезультатеЗапроса записей нет. Тем не менее Итоги Общие - запись есть и к ней можно "обратиться" и вернет она Тип "Неопределено" Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяТовары.Сумма КАК Сумма |ИЗ | Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары | |ИТОГИ ПО | ОБЩИЕ"; РезультатЗапроса = Запрос.Выполнить(); //Общий Итог ВыборкаОбщийИтог = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ВыборкаОбщийИтог.Следующий(); Сообщить(ВыборкаОбщийИтог.Сумма); Сообщить(ТипЗнч(ВыборкаОбщийИтог.Сумма)); Сообщить(РезультатЗапроса.Пустой()); //Выборка Детальных записей ВыборкаДетальныеЗаписи = ВыборкаОбщийИтог.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(ВыборкаДетальныеЗаписи.Сумма); КонецЦикла; |
|||
24
timgan
13.05.15
✎
06:51
|
Добавлю, если в Запросе указать:
|ИТОГИ ПО | ОБЩИЕ, | Сумма"; То записей по группировке "Сумма" - нет и "обратиться" к ним нельзя, тогда в описании СП: "без учета общих итогов" есть ИСТИНА. |
|||
25
ViSo76
13.05.15
✎
08:14
|
(23) Ты не правильно меня понял вернет истину если записей нет вообще в табличной части, а итог будет построен на сервере предприятия и в результате будет 1 строка итоговая.
|
|||
26
timgan
13.05.15
✎
09:03
|
(25) ViSo76 спасибо за разъяснение, -я именно это и имел в виду в (23) и (24), что в результате будет 1 строка итоговая.
fisher, спасибо. Всем спасибо. |
|||
27
fisher
13.05.15
✎
09:22
|
(25)(26) Не будет итоговой строки. Она исключается из результата при отсутствии детальных записей. Об этом и речь. Формулировка "без учета общих итогов" сейчас не имеет смысла, т.к. общие итоги и так не учитываются при отсутствии детальных записей.
(26) Модифицируй свой пример из (18). Сделай Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Количество); Сообщить(ТипЗнч(Выборка.Количество)); КонецЦикла; |
|||
28
fisher
13.05.15
✎
09:32
|
Выборка.Следующий() на пустой выборке исключения не даёт. Хоть обвызывайся. Просто возвращает Ложь.
|
|||
29
timgan
13.05.15
✎
10:29
|
(28) Надо признать,что ты прав, метод Следующий(), - который позиционирует на запись выборки результата запроса, дает: ЛОЖЬ.
Значит: атавизм Спасибо fisher, за науку |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |