Имя: Пароль:
1C
 
v8: Гений 1С еще не раз и не два ступит с обходом по группировкам
↓ (Стерва-бух 28.03.2008 17:51)
0 Гений 1С
 
гуру
27.03.08
10:43
Господа. Никогда не юзал обход выборки результата запроса по группировкам, всю жизнь выгружал в ТЗ, но тут для ускорения решил попробовать.

Скажите, это правда что обход по группировкам можно делать только когда в запросе используются "ИТОГИ ПО", а если "СГРУППИРОВАТЬ ПО", то не получится?

Т.е. у меня был GROUP BY Склад, Товар, я надеялся выбрать сначала склады, потом товары, но фиг вам как говорится, пришлось написать ИТОГИ ПО Склад, Товар.

Это действительно так, или мне кажется.

Почему если это так, то для группировки не сделано способа отхода и можно юзать только СледующийПоЗначениюПоля??? Ведь СледующийПоЗначениюПоля медленнее, чем выборка по одной группировке - нужно еще перебирать записи и идти до следующего значения поля.
1 hhhh
 
27.03.08
10:45
(0) СГРУППИРОВАТЬ ПО - это совсем из другой оперы.
2 asady
 
27.03.08
10:47
(0) Г1С в своем репертуаре!
3 hhhh
 
27.03.08
10:47
+ (1) это как "свернуть" в ТЗ. Группировки образуются только по ИТОГИ.
4 Валерыч
 
27.03.08
10:49
оператор СГРУППРИОВАТЬ ПО выполняет грубо говоря свертку по полям, указанным в списке группировочных полей с применением указанных функций к агрегатным полям.
Т.е. если у тебя агрегатная функция СУММА, то выполнение запроса с такой группировкой эквивалентно свертке таблицы значений. Естественно, что никаких группировок ты и не получишь. А вот оператор ИТОГИ формирует итоговые значения (группировки) для указанных измерений, что и выбирается потом с учетом группировок из результата запроса. Это просто семантический парадокс.
5 Defender aka LINN
 
27.03.08
10:52
(0) Мда...
СГРУППИРОВАТЬ ПО - это аналог "Свернуть" для ТЗ.
Итоги запроса - это и есть то, что в 7.7 называли "группировкой".
"для группировки не сделано способа отхода и можно юзать только СледующийПоЗначениюПоля" - да что ты говоришь...
6 Mitriy
 
27.03.08
10:55
(0) Итоги строят иерархию, а группировка просто сворачивает по полям (5)
7 Гений 1С
 
гуру
27.03.08
14:09
(5) Ну а какой у них способ обхода, батенька?
8 Defender aka LINN
 
27.03.08
14:18
(7) Пока Выборка.Следующий() Цикл
Как ни странно.
9 Гений 1С
 
гуру
27.03.08
14:24
(8) Съязвил, да? Речь идет о выборке из выборке, т.е. обходу по группировкам, а не тупо перебрать всю таблицу.
10 ЗлобнийМальчик
 
27.03.08
14:28
(0) Стаж 3г 6 месяцев!!!
Юзайте построитель отчета - там написано как выборку из выборки делать....
11 Господин ПЖ
 
27.03.08
14:28
я в шоке
12 ЗлобнийМальчик
 
27.03.08
14:29
(11)+1
Радченко. Пособие для разработчиков...
13 Гений 1С
 
гуру
27.03.08
14:46
(11) посетил ЭТО?
14 Defender aka LINN
 
27.03.08
15:32
(9) Вот так вот...
Занимаюсь уже третий год 8.х, а оказывается, я все это время неправильно делаю...
А может ты документацию почитаешь, перед тем как бред свой тут изливать?
Например, касательно параметров метода "Выбрать"?
15 Гений 1С
 
гуру
27.03.08
15:34
(14) Ну просвети меня темного. Читал, не нашел
16 Defender aka LINN
 
27.03.08
15:45
(15) Пипец... Там их не так уж и много вроде...
Ладно, вот тебе:

Запрос = Новый Запрос;
Запрос.Текст =
"Выбрать
|    Склад,
|    Номенклатура,
|    КоличествоОстаток КАК Количество
|ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки
|ИТОГИ
|    СУММА(Количество)
|ПО
|    ОБЩИЕ,
|    Склад";

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

//следим за руками
ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаОбщийИтог.Следующий();

Сообщить("Всего штук, килограмм и прочей ереси на складах: " + ВыборкаОбщийИтог.Количество);

//продолжаем следить за руками
ВыборкаСклад = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСклад.Следующий() Цикл
   Сообщить("Всего штук, килограмм и прочей ереси на складе """ + ВыборкаСклад.Склад + """: " + ВыборкаСклад.Количество);

   //детальные записи
   Выборка = ВыборкаСклад.Выбрать();
   Пока Выборка.Следующий() Цикл
       Сообщить("Всего номенклатуры """ + Выборка.Номенклатура + """ на складе """ + Выборка.Склад + """: " + Выборка.Количество);
   КонецЦикла;
КонецЦикла;
17 Гений 1С
 
гуру
27.03.08
17:11
(16) Ну и к чему ты ляпнул в (14)
Что нового ты мне открыл?
Об этом и была речь - можно ли получить ВыборкаСлад Выборка из запросов с GROUP BY
Уже ответили что нет, к чему твой пример?
18 Defender aka LINN
 
27.03.08
17:15
(17) Это к тому, что некто в (0) (не знаешь его, случайно?) написал "для группировки не сделано способа отхода и можно юзать только СледующийПоЗначениюПоля". Я тебе наглядно показал, как это должно выглядеть в человеческом коде.
19 Дядя Васька
 
27.03.08
17:18
хм, вот интересно, только я увидев автора ветки могу правильно ответить на вопрос не зная восьмерки? :)
20 hhhh
 
27.03.08
17:31
(19) нам бы тоже на него посмотреть.
21 Дядя Васька
 
27.03.08
17:32
(20) набери в яндексе fixin
22 Sasha_H
 
27.03.08
17:36
Да в 8.х можно много чего, только скорей всего тупит не 1С, а программист. Так, что ветка громко названа. Не стоит она такой темы!
23 Sasha_H
 
27.03.08
17:38
Но много чего и нельзя, наприммер с СКЛ они поиздевались и конвертора дат так и не сделали если я не ошибаюсь. ТОисть если мне нужно дату со строкой соединить в запросе то это никак! Вот это уже грустно...
24 ZyXEL
 
27.03.08
17:44
ветка просто жесть!!
25 Гений 1С
 
гуру
27.03.08
17:44
(23) В СКД можно вызывать функции общих модулей, нефиг издеваться над запросами! Вот так вот, батенька!
26 wPa
 
27.03.08
17:45
(0) Просто итоговые записи обознают в выборке группировки. Ты же выгружаешь в таблицы- посмотри с итогами и без (список, а  не в дерево). Поэтому и обход группировки невозможен без меток группировок - итоговых записей. Тоже удивлялся.
27 ЗлобнийМальчик
 
27.03.08
17:46
(25) хммм, все зависит. Таки запросом очень часто оказалось бы эффективнее
28 Гений 1С
 
гуру
27.03.08
17:47
(27) Примеры?
29 УПП
 
27.03.08
17:57
А можно пробегать по корктретной групперовке
ВыборкаПоМатериалам = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Материалы");
Пока ВыборкаПоМатеиалам.Следующий() Цикл
 ВыборкаЕдИзм = ВыборкаПоМатеиалам.Выбрать  (ОбходРезультатаЗапроса.ПоГруппировкам, "ЕдИзм");
  Пока ВыборкаЕдИзм.След() Цикл
  КонецЦикла
КонецЦикла
30 Fragster
 
гуру
27.03.08
18:01
а модератор жжот! только надо «все же тупит» :)
31 wPa
 
27.03.08
18:03
(29) обхода группировок без итогов не будет
32 Гений 1С
 
гуру
27.03.08
18:10
(31) что и требовалось узнать! Ваще это не так прозрачно, как вам кажется.
33 wPa
 
27.03.08
18:12
(32) это совершенно не прозрачно после 7.7 и TSQL
34 Гений 1С
 
гуру
27.03.08
18:12
(33) вово
35 ZyXEL
 
27.03.08
18:13
(33,34) учиться, учиться и еще раз учиться.... не прозрачно...прозрачно... знать надо...
36 Гений 1С
 
гуру
27.03.08
18:17
(35) Для меня было ударом, что Формат(1234)="1 234".... От 1с всего можно ждать... Надо бдеть!
37 КомПрог
 
27.03.08
18:28
+(36) А Цел("91.02.1") выдает ошибку. Просто попадалово.
38 Господин ПЖ
 
27.03.08
18:42
(36) региональные стандарты, однако...
39 Господин ПЖ
 
27.03.08
18:44
Вопрос, скока раз 1С-ина еще ударит фиксина??? (36)
40 Читатель
 
27.03.08
18:53
(0) %ля писец... чел хрен знает сколько программит на восмере и всегда выгружал результаты запроса в тз :-(
41 D_E_S_131
 
27.03.08
19:12
(40) Такое возможно. Особенно если за все это время учиться программировать в 8-ке "методом тыка".
42 Злопчинский
 
27.03.08
19:57
я тоже регулярно туплю в некоторых вопрсах...
не тупят только тупые..
43 wPa
 
27.03.08
20:15
(41) Даже не методом тыка. Делаешь запрос, в котором нужны группировки, но итоговые значения по группам не нужны. Итоги не ставишь соотв. Обхода нет.
44 SilentMan
 
27.03.08
21:13
(41) Зачем ты обижаешь слово "учиться"?
45 Гений 1С
 
гуру
28.03.08
08:43
(40) Я знал про метод выбрать, но он мне особо никогда не нужен был... ;-)
Если только прямой обход. А вот тут в целях ускорения одной фичи понадобился оход по группировкам.
46 Defender aka LINN
 
28.03.08
08:46
(45) Мда... Искренне надеюсь, что я никогда не увижу твой код в работе...
47 Злопчинский
 
28.03.08
13:17
(46) Пофиг код, если функционал который нужен - обеспечивает
48 Юрий Юрьевич
 
28.03.08
13:32
(36) Хочу обрадовать Гения 1С: Формат(1234,"ЧГ=0")="1234".
А вообще-то информации по 1С (языку, стандартам разработки и проектированию) - её навалом, нужно просто уметь ею пользоваться...
49 iSeRG
 
28.03.08
13:43
да ладно вам гения обижать, гении они все немного странные :)
50 Defender aka LINN
 
28.03.08
13:44
(47) "Format C:" тоже обеспечит удаление файла с диска "С", но "del" все же быстрее, да и удаляет только один файл.
51 Злопчинский
 
28.03.08
13:45
(48) а не будете ли так добры подкинуть пару ссылок по "стандартам разработки и проектированию по 1С"
???
52 Злопчинский
 
28.03.08
13:46
(50) не надо язвить ;-) сравнил - божий дар и яичницу ;-)
..
Гении, они это - правильные... мир двигают...
53 Юрий Юрьевич
 
28.03.08
13:47
А диски ИТС Вам ничем не помогают?
54 Юрий Юрьевич
 
28.03.08
13:48
53 на (51)
55 hhhh
 
28.03.08
13:49
(50) можно винт под пресс положить, тогда уж точно, а то вдруг какие-нибудь умельцы доберутся до файла.
56 Defender aka LINN
 
28.03.08
13:50
(52) Я лишь привел пример, где "код - не главное".
Код - весьма хитрая штуковина. Обеспечить функционал худо-бедно могут большинство одинэснегов. Обеспечить его, написав при этом нормальный, читаемый и эффективый (с этим вообще беда!) код - единицы.
57 Читатель
 
28.03.08
13:55
(47) Ага старая как мир пестня "пофиг код если работает"
Только как правило люди, которые так говорят, нихрена не учитывают то, что код возможно придется править. И вот тут то на кривом коде и будет жпо.
Особенно бесит, когда вот так говорят любители копи-паста блин. Он, сцуко, "доработал" отчет скопировав весь текст и изменив одну строчку, а за ним потом приходится ,мля, код "дизассеблировать"
58 Леха Дум
 
28.03.08
14:04
(56) +1000000000
59 Гений 1С
 
гуру
28.03.08
14:06
(56) и не говори, противно потом смотреть....
Особенно бесит, когда юзают глобальные переменные и дают матерные названия переменным.
60 nop
 
28.03.08
14:08
Надо предъявить эту ветку во Всемирное Общество (Не)Признанных Гениев!
Пусть лишат его этого звания :(
61 Sasha_H
 
28.03.08
14:15
(25) Фига издеваться, то! Просто если пишут что-то то нужно было дописать нормально также как работает нормальный СКЛ!!!
62 Регистратор
 
28.03.08
14:32
Аффтар="Гений1С";
ТемоСообщения=СтрЗаменить(Аффтар,"ни","")+СтрЗаменить(" еще не раз и не два ступит с обходом по группировкам ..."," кг\ам");
63 Злопчинский
 
28.03.08
14:40
(56) Мы не рассматриваем крайний случай когда функционал типа почти ок, а код вообще гуано... смысл в том, что вылизывать код до совершентсва имеет смысл в апробированных решениях, там где это критично... если бы я все задания писал так, чтоб мог разобраться посторонний или писал исключительно оптимально - ничего бы не успел ваапще.
..
вот ответьте мне на вопрос:
совеременный комп, нехилая штука.. ЧТО ОН МОЖЕТ ДЕЛАТЬ ТАК ДОЛГО ПРИ ЗАГРУЗКЕ...?
64 Господин ПЖ
 
28.03.08
14:44
(63) тупо - ищет принтера в сети (или саму сеть)...
65 Регистратор
 
28.03.08
14:45
эх маладеж код им не нравится.
Код фигня касячить надо не на уровне кода (это может любой дурак), по настоящему мастер косячит в АРХИТЕКТУРЕ приложения.
Можно так все продумать что никакое кодирование в принципе не сможет исправить ситуацию.
И программист становится практически незаменимым т.к. без него в приложении вносить изменения будет затруднительно.
66 nop
 
28.03.08
14:48
(65) боян
67 Гений 1С
 
гуру
28.03.08
14:59
(63) а меня бесит, когда комп висит, пока драйвер DVD пытается читать битые сектора на DVD диске. Блин, многопоточность...
68 Fragster
 
гуру
28.03.08
15:03
(67) а ты BUS MASTERING выключи в биосе (по-моему так) - это контроллер IDE (SATA) является арбитром при обработке очереди прерываний... но это такое сугубо ИМХО, да и вообще нам это в институте объясняли, уже плохо помню...
69 Господин ПЖ
 
28.03.08
15:06
Ждите новую ветку "БИОС стал ударом для фиксина"...
70 Злопчинский
 
28.03.08
16:32
- Что значит "Windows - многозадачная система"?
- Она работает и глючит одновременно...
71 Гений 1С
 
гуру
28.03.08
16:39
(68) а виндоус не может должным образом систему настроить?
72 Chin
 
28.03.08
16:50
(69) А fixin - это что... или хто?
73 Berck
 
28.03.08
17:05
(72) см (21)
74 Господин ПЖ
 
28.03.08
17:11
(72)>>А fixin - это что... или хто?

фиксин - это НЕЧТО...
75 Hadgehogs
 
28.03.08
17:35
(72) Гений 1С - это тот, кто движет человечество вперед. Поэтому ему можно все простить.
Вот, например, публикация:
http://forum.membrana.ru/forum/scitech.html?parent=1052477417&page=1
76 nop
 
28.03.08
17:37
(75) + и взад тоже!
77 hhhh
 
28.03.08
17:39
(0) что-то я не понял, во что ступит Гений 1С?
78 nop
 
28.03.08
17:46
(77) во что?... это вопрос по процессу эволюции?
79 Immortal
 
28.03.08
17:52
в кросс-таблице посмотри=) там этих обходов - считать заипёшься
80 Fragster
 
гуру
28.03.08
17:52
А что значит стрелочка рядом с разделом в списке тем?
81 nop
 
28.03.08
17:57
(80) значит Стерва-бух начала зачистку
82 Fragster
 
гуру
28.03.08
17:58
в пятницу? в шесть вечера?
83 JBF
 
28.03.08
18:00
Что мне "нравится" в нашем форуме - так это то, что необосранным не уйдешь в 90% случаев. Почему нельзя ответить с толком, без слива своего внутреннего мира на окружающих ? Каждый мнит себя гением, написав закорючку на 1С ?
84 nop
 
28.03.08
18:04
(82) она токо так и нападает. Когда все уже пьяные и сонные....
(83) да. Гуру медитации в позе лотоса - нет. Все сливааем
2 + 2 = 3.9999999999999999999999999999999...