Имя: Пароль:
1C
1С v8
Запрос построен конструктором
0 Мисти
 
09.11.12
14:28
Запрос86 = Новый Запрос;
   Запрос86.Текст =    
   
   "ВЫБРАТЬ
   |    ХозрасчетныйОбороты.Счет,
   |    ХозрасчетныйОбороты.Субконто1,
   |    ХозрасчетныйОбороты.Субконто2,
   |    ХозрасчетныйОбороты.Субконто3,
   |    ХозрасчетныйОбороты.КорСчет,
   |    ХозрасчетныйОбороты.Организация,
   |    СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК СуммаОборотДт,
   |    СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СуммаОборотКт
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Обороты(
   |            &НачГраница,
   |            &КонГраница,
   |            Период,
   |            Счет = &Счет,
   |            ,
   |            Организация = &Организация
   |                И Субконто1 = &Субконто1
   |                И Субконто2 = &Субконто2
   |                И Субконто3 = &Субконто3,
   |            КорСчет = &КорСчет,
   |            ) КАК ХозрасчетныйОбороты
   |
   |СГРУППИРОВАТЬ ПО
   |    ХозрасчетныйОбороты.КорСчет,
   |    ХозрасчетныйОбороты.Счет,
   |    ХозрасчетныйОбороты.Субконто1,
   |    ХозрасчетныйОбороты.Субконто2,
   |    ХозрасчетныйОбороты.Субконто3,
   |    ХозрасчетныйОбороты.Организация";
   
Я просила сгруппировать только по корсчету.
Это нормально, что получилось так?
1 salvator
 
09.11.12
14:29
(0) Конструктор не врет. Доверься ему полностью.
2 Fragster
 
гуру
09.11.12
14:29
(0) так и задумано
3 Fragster
 
гуру
09.11.12
14:30
но название переменной-запроса меня пугает
4 salvator
 
09.11.12
14:30
(3) Счет 86, вестимо.. )
5 Мисти
 
09.11.12
14:32
Спасибо!
   РезультатЗапроса = Запрос86.Выполнить().Выбрать(ПланыСчетов.Хозрасчетный.НайтиПоКоду("51"),,,,,);
Я получу таким образом оборот с 51 счетом?
6 DEVIce
 
09.11.12
14:33
Автор, ты потом как будешь вспоминать что делает запрос под номером 86? :)
7 salvator
 
09.11.12
14:34
(5) Это что за хренотень?
8 Fragster
 
гуру
09.11.12
14:35
(5) не получишь
9 Aprobator
 
09.11.12
14:36
нефига се.
10 Aprobator
 
09.11.12
14:37
реально мистическое программирование какое то. Что сам текст запроса, что попытка получить результат.
11 Maxus43
 
09.11.12
14:38
РезультатЗапроса = Запрос86.Выполнить().Выбрать();
Пока выборка.следующий() Цикл
//смотри сколько там записей и чего с ними делать
КонецЦиклв;
12 Maxus43
 
09.11.12
14:39
синтакс-контроля кода на мисте не хватает)
13 cw014
 
09.11.12
14:40
Запрос86???? Жду-недождусь "Запрос69" :)
14 DUDE
 
09.11.12
14:42
(0) Автор, у тебя уже задан отбор в запросе кор счета. Что еще нужно? "КорСчет = &КорСчет"
15 salvator
 
09.11.12
14:43
Наверное все дело в "86"
16 GLazNik
 
09.11.12
14:45
А зачем выбирается Счет, Субсчет1, ... они же фиксированные(в отборе)
17 Мисти
 
09.11.12
14:45
(14) Ага, точно, ошибка, забыла выкинуть.
Мне сначала нужно было только по 1 корсчету, а теперь поняла, что по нескольким.
18 Мисти
 
09.11.12
14:46
(8) Почему не получу?
19 salvator
 
09.11.12
14:47
(18) Потому что надо внимательно изучить метод Выбрать() в синтаксис-помощнике.
20 Fragster
 
гуру
09.11.12
14:47
(18) потому что у Выбрать() первый параметр - это обходрезультатазапроса, а не ссылка на счет
21 salvator
 
09.11.12
14:49
(17) Тогда напишите КорСчет В (&МассивКорСчетов)
и пихайте в этот массив все счета, которые нужны
22 Мисти
 
09.11.12
14:52
(21) Ага, хорошо, а потом мне надо по каждому - отдельно получить обороты. Ну, т.е., есть обороты с 5 счетами, а мне нужны данные по 3 из них.
23 Мисти
 
09.11.12
14:53
РезультатЗапроса (QueryResult)
Выбрать (Choose)
Синтаксис:

Выбрать(<ТипОбхода>, <Группировки>, <ГруппировкиДляЗначенийГруппировок>)
Параметры:

<ТипОбхода> (необязательный)

Тип: ОбходРезультатаЗапроса.
Задает тип обхода записей в получаемой выборке.
Значение по умолчанию: Прямой
<Группировки> (необязательный)

Тип: Строка.
Список группировок по которым будет вестись обход, разделенных запятыми.
Для детальных записей указывается пустая строка. В случае, если группировки не указаны - будет использоваться следующая группировка, указанная в предложении запроса "ИТОГИ".
<ГруппировкиДляЗначенийГруппировок> (необязательный)

Тип: Строка.
Список группировок, из которых будут выбираться значения группировок для обхода, разделенных запятыми. Если указано "Все", то будут выбираться все значения группировок. Если указана пустая строка, то значения для группировок будут выбираться из предыдущей группировки.
Возвращаемое значение:

Тип: ВыборкаИзРезультатаЗапроса.

Описание:

Формирует выборку записей из результата запроса.

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

Да уж читала!
24 Aprobator
 
09.11.12
14:53
гы.
25 Мисти
 
09.11.12
14:58
РезультатЗапроса = Запрос86.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВЫборка.Следующий() Цикл
Если Выборка.КорСчет= ПланыСчетов.Хозрасчетный.НайтиПоКоду("51") Тогда

Так что ли?
26 Aprobator
 
09.11.12
14:58
ээээ, сударыня вы в 1С как оказались вообще?
27 Мисти
 
09.11.12
15:00
Выборка= Запрос86.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Там в 1 строчке должна быть выборка, конечно.
28 Мисти
 
09.11.12
15:01
(26) Да я скоро сама буду советы раздавать!
Вот доделаю еще пару отчетиков.
29 Aprobator
 
09.11.12
15:02
(28) вот не дай бог.
30 salvator
 
09.11.12
15:04
Уберите группировки. Сделайте итоги по корсчету. Думаю, вам именно это надо.
31 Мисти
 
09.11.12
15:05
(30)
ВЫБРАТЬ
   |    ХозрасчетныйОбороты.Счет,
   |    ХозрасчетныйОбороты.Субконто1,
   |    ХозрасчетныйОбороты.Субконто2,
   |    ХозрасчетныйОбороты.Субконто3,
   |    ХозрасчетныйОбороты.КорСчет КАК КорСчет,
   |    ХозрасчетныйОбороты.Организация,
   |    ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
   |    ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Обороты(
   |            &НачГраница,
   |            &КонГраница,
   |            Период,
   |            Счет = &Счет,
   |            ,
   |            Организация = &Организация
   |                И Субконто1 = &Субконто1
   |                И Субконто2 = &Субконто2
   |                И Субконто3 = &Субконто3,
   |            ,
   |            ) КАК ХозрасчетныйОбороты
   |ИТОГИ
   |    СУММА(СуммаОборотДт),
   |    СУММА(СуммаОборотКт)
   |ПО
   |    КорСчет
32 Мисти
 
09.11.12
15:06
(30) Так?
Чем по смыслу отличается группировка от итогов?
33 Мисти
 
09.11.12
15:21
И как теперь-то получить оборот по корсчету 51? Я когда-нибудь и сама догадаюсь, просто пока не могу проверить - писать еще много.
34 salvator
 
09.11.12
15:26
(33) Добавьте отбор по корсчету в параметры виртуальной таблицы.
35 Мисти
 
09.11.12
15:28
(34) Так мне по 3 нужно!
36 salvator
 
09.11.12
15:28
(35) --> (21)
37 Мисти
 
09.11.12
15:32
По каждому отдельно!
Может, их всего 3 и есть, я не вижу необходимости их задавать, как потом-то получить по каждому??
38 Мисти
 
09.11.12
15:36
А вот другая история, нужны обороты только по двум счетам:
       МассивСчетов = Новый Структура;
       МассивСчетов.Вставить("Сч6201",ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01"));
       МассивСчетов.Вставить("Сч6201",ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.21"));
- правильно?
39 Мисти
 
09.11.12
15:37
МассивСчетов.Вставить("Сч6221",ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.21")); - вторую строчку поправила
40 GANR
 
09.11.12
15:40
(0) Если хоть по каким-то полям запроса заданы агрегатные функции - остальные поля автоматически становятся группировками.
41 GLazNik
 
09.11.12
15:41
(38) "МассивСчетов = Новый Структура;"
Это еще что такое? Если уж на то пошло, то во:
МассивСчетов = Новый Массив;
МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01"))
Но лучше не по НайтиПоКоду
42 Мисти
 
09.11.12
15:41
(40) Это я уже догадалась, не догадалась только, почему.
И вопрос из (32) беспокоит!
43 GLazNik
 
09.11.12
15:42
(42) потому что поле может быть или в группировке или в агрегатной функции.
44 Мисти
 
09.11.12
15:43
(41) Так!! Чем массив отличается от структуры?
Ага, спасибо. И если не по коду, то как? по наименованию?
И почему не  по коду?
(43) Ну это я тоже заметила, но в суть не вникну. Ну да ладно, это не самое важное сейчас.
45 GLazNik
 
09.11.12
15:43
(42) Итоги - это результат в виде дерева
46 GANR
 
09.11.12
15:46
(42) А вы логически подумайте: куда деть поля, не включенные ни в группировки, ни в агрегатные функции ???
47 hhhh
 
09.11.12
15:46
(44) ИТОГИ - это группировка.
  СГРУППИРОВАТЬ - это свёртка. Свернуть по каким-то полям.
48 GLazNik
 
09.11.12
15:47
(44) СП продать? Не дорого
49 GLazNik
 
09.11.12
15:48
(47) "ИТОГИ - это группировка." ща в конец запутаешь ТС :)
50 salvator
 
09.11.12
15:48
(44) Ищите по предопределенному в конфигураторе значению.
51 hhhh
 
09.11.12
15:49
(47)+ СГРУППИРОВАТЬ вам не нужно, потому что РегистрБухгалтерии.Хозрасчетный.Обороты само сворачивает по всем счетам и субконто, которые в запросе перечислены.
52 GLazNik
 
09.11.12
15:50
(50) там не искать надо, а просто указать предопределенное значение.
53 salvator
 
09.11.12
15:52
(50) Ага. Неверно выразился.
54 Мисти
 
09.11.12
15:53
(45) В каком случае итоги, а в каком - группировка?
Когда что используется?
55 GLazNik
 
09.11.12
15:54
(54) группировка - это линейная таблица, итоги - дерево значений.
56 Мисти
 
09.11.12
15:54
(52)ПланыСчетов.Хозрасчетный.СебестоимостьПродаж - вроде как так?
Мне по коду как-то привычнее, это что, существенно влияет на что-то?
57 GLazNik
 
09.11.12
15:56
(56) да так.
быстрее, точнее
58 Мисти
 
09.11.12
15:56
Ну всё более-менее поняла, не поняла, как теперь сумму по 1 счету получить (а в запросе - сразу по 2, которые в массиве счетов).
Слова какие??
59 GLazNik
 
09.11.12
15:58
(58) Оставьте только
   "ВЫБРАТЬ
   |    ХозрасчетныйОбороты.КорСчет,
   |    СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК СуммаОборотДт,
   |    СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СуммаОборотКт
   |ИЗ
....

и уберите нафиг сгруппировать
60 salvator
 
09.11.12
16:00
(58) ВыборкаКорСчета = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаКорСчета.Следующий() Цикл
 Сообщить("По корсчету "+Выборка.КорСчет+" оборот Дт "+Выборка.СуммаОборотДт);
КонецЦикла;
61 salvator
 
09.11.12
16:00
Выборка = ВыборкаКорСчета
62 salvator
 
09.11.12
16:02
(59) Функция СУММА не нужна в таком случае.
63 Мисти
 
09.11.12
16:03
(60) Ура!
Я так и написала.
64 GLazNik
 
09.11.12
16:04
(62) это не я, это копипаст :)
65 samozvanec
 
09.11.12
16:05
Люди! Что с вами такое! Где фотка?????
66 Мисти
 
09.11.12
16:06
(59) Так я убрала сгруппировать, остались итоги
Сгруппировать - тогда не суммируется, а только группируется, правильно? Т.е. потом надо было бы еще всё сложить, чтоб получить итоги, правильно?
67 salvator
 
09.11.12
16:11
(65) Ты уверен?
68 EvgenPS
 
09.11.12
16:45
Мисти с фото дело быстрее пойдет))
69 Мисти
 
09.11.12
17:28
(68) Сегодня - просто распрекрасно! Обругали мало, а помогли - много. Обычно наоборот.
70 samozvanec
 
09.11.12
17:52
(67) в чем?
71 Мисти
 
09.11.12
17:57
(70) Ответь мне лучше в другой теме, а?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший