Имя: Пароль:
1C
1С v8
Подскажите идею по отчету
0 LenaAt
 
15.05.17
13:15
Здравствуйте!
Есть регистр накопления Период - Участок - Клиент - Количество.
Нужно вывести вот такой отчет:
https://hostingkartinok.com/show-image.php?id=86c23ad3f7a10ba4d1672354fdbe815d

Как это сделать с минимумом программирвания? Число клиентов за выбранный период построения отчета неизвестно: это может быть и один клиент, а может несколько десятков.
1 Ёпрст
 
15.05.17
13:18
Открыть универсальный отчет и написать за 2 минуты. Без программирования.
2 kumena
 
15.05.17
13:18
а что не получается?
3 LenaAt
 
15.05.17
13:20
(2) Не понимаю, как написать запрос такой, чтобы результат его сразу вывести в отчет без дополнительных действий.
4 Lexey_
 
15.05.17
13:21
(3) СКД
5 LenaAt
 
15.05.17
13:22
(4) Спасибо, я сама пишу запросы и вывожу их в отчет. Никаких СКД мне не надо.
6 Джинн
 
15.05.17
13:22
(5) Нашли чем гордиться.
7 LenaAt
 
15.05.17
13:23
(6) Я не горжусь, это был ответ на 4. Что мне нужно, это подсказка как лучше написать запрос к регистру накопления.
8 Рэйв
 
15.05.17
13:24
(5)Напиши запрос в консоли запросов с построителем и будет тебе красиво
9 Ёпрст
 
15.05.17
13:24
(3) Открой для себя функцию Количество() в тексте запроса.
+ 2 группировки Клиент и Участок
10 kumena
 
15.05.17
13:24
(7) написать запрос итоговыми группировками, и обойти по ним
11 kumena
 
15.05.17
13:26
Выбрать
*
Из ТвойРегистр

Итоги
Сумма(Количество)
по Участок, Клиент


и потом обойти их с выборкой по группировкам
12 Джинн
 
15.05.17
13:26
(9) Отбор по периоду еще
13 Любопытная
 
15.05.17
13:26
(7) Просто на СКД это сделать гораздо проще, чем лепить макет такого вида. Заранее же неизвестно, сколько у вас клиентов и участков. Выводить замучаетесь
14 Lexey_
 
15.05.17
13:27
(5) самостоятельная прям, какой вопрос был? "Как это сделать с минимумом программирвания?"
Ну вот и ответ
15 kumena
 
15.05.17
13:27
а да, отбор еще указать, как тут пишут
16 Ёпрст
 
15.05.17
13:28
(13) ?
Любой универсальный отчет сделает это сам, на том же построителе отчета.
17 LenaAt
 
15.05.17
13:28
(11) спасибо, сейчас попробую
18 Ёпрст
 
15.05.17
13:28
ничего кодить не надо. Написать только текст запроса и сказать, что есть измерения, а что ресурсы.. усё.
19 Любопытная
 
15.05.17
13:30
(16) Да, но автор пишет, что запросы сама делает и вывод в отчет тоже делает сама.
20 Ёпрст
 
15.05.17
13:31
(19) построитель отчета сам всё выведет, в таокм случае. Ежели она скд не хочет
21 Ёпрст
 
15.05.17
13:31
даже макет рисовать нет надобности
22 kumena
 
15.05.17
13:31
+15, еще нюанс, в выборке для горизонтальной группировки указать период - "ВСЕ".
23 Любопытная
 
15.05.17
13:33
(20) да я в курсе. Что имеет в виду автор под "сама вывожу", этого мы не знаем. А впрочем, всё равно от темы отклоняемся
24 LenaAt
 
15.05.17
13:50
(11) попробовала, еще больше такой запрос запутывает дело

Уж лучше использовать стандартное sql - ое средство group by ...

Буду думать, как теперь все это вывести в отчет.
25 LenaAt
 
15.05.17
13:52
24+ Подошля бы для этих целей какая - нибудь структура в виде дерева, где корнем является участок, а листьями - клиенты...
26 torgm
 
15.05.17
13:53
(11) для быстрого обхода декартово произведение  сделать , потом уже таблицу присоединять.
27 catena
 
15.05.17
13:58
(25)В (11) так и есть же...

А вообще(шепотом): а какая религия все-таки мешает использовать СКД? Я просто не в курсе, не читала предыдущие серии.
28 Lexey_
 
15.05.17
14:08
(27) просто она сама пишет запросы и выводит их в отчет с минимумом программирования, а потом думает, как теперь все это вывести в отчет
29 azernot
 
15.05.17
14:13
Если уж какая-то религия не позволяет использовать Построитель или СКД, то:

Запрос из (11)
ОбщийРезультатЗапроса = Запрос.Выполнить();
ОбщаяВыборкаПоКлиентам = ОбщийРезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Клиент", "Все");

//Вывод шапки
//выводим первые колонки заголовка
Пока ОбщаяВыборкаПоКлиентам.Следующий() Цикл
//присоединяем заголовок таблицы с клиентами
КонецЦикла;

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

  Пока ВыборкаПоКлиентам.Следующий() Цикл
   //присоединяем данные таблицы с клиентами
  КонецЦикла
КонецЦикла;

//Вывод подвала
ОбщаяВыборкаПоКлиентам.Сбросить()
//выводим первые колонки подвала
Пока ОбщаяВыборкаПоКлиентам.Следующий() Цикл
//присоединяем подвал/итог таблицы с клиентами
КонецЦикла
30 ildary
 
15.05.17
14:33
(38) боюсь что правду мы никогда не узнаем, потому что стыдно признаться, что не умеешь в СКД.