Гость
Форумы / [игнор отключен] [закрыт для гостей] / Получение данных из регистров сведений запросом / 9 сообщений из 9, страница 1 из 1
20.05.2014, 18:20
    #38646858
shilvlad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных из регистров сведений запросом
Добрый день коллеги. Столкнулся со следующей задачкой. Специально сформулирую ее в общем виде, что бы понять принцип.

Имеется регистр сведений с записями следующего вида (не обязательно отсортированы, но это не влияет на суть):



Base Object | Added object

A1 | B1

A1 | B2

A1 | B3

A2 | B4

A2 | B5

A3 | B6

A4 | B7

A4 | B8

A4 | B9

A4 | B0



Задача, сформировать отчет сгруппировав данные следующим образом (сортировка, опять же, не играет никакой роли):

А1 - B1 - B2 - B3

A2 - B4 - B5

A3 - B6

A4 - B7 - B8 - B9 - B0



То есть должна получиться табличка с количеством строк равным кол-ву уникальных элементов и, вообще говоря, переменным чилом заполненных столбцов для каждой строки.

Вопрос №1.

Как это реализовать запросом?

Вопрос №2.

Решается ли задача наиболее общим случаем для заранее неизвестного кол-ва столбцов?



Заранее благодарю, за помощь в изысканиях.
...
Рейтинг: 0 / 0
20.05.2014, 19:01
    #38646900
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных из регистров сведений запросом
shilvlad, а так не пойдет?
* B1B2B3B4B5B6A1++A2++A3++A4+
...
Рейтинг: 0 / 0
20.05.2014, 20:10
    #38646958
shilvlad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных из регистров сведений запросом
Не очень понял результатом чего является Ваше решение, но надо именно в той форме как я сформулировал. Проблема прежде всего заключаетсяв том, что записей пар может быть около 30 - 40 тысяч, поэтому на выходе я бы хотел получить отчет как в задаче. Суть вопроса заключается в том, что есть или нет возможность реализовать это ЗАПРОСОМ. Если возможность есть, то как?
...
Рейтинг: 0 / 0
20.05.2014, 22:34
    #38647041
EugeniaK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных из регистров сведений запросом
shilvlad, Обычный запрос + ИТОГИ ПО Base Object
Получите выборку итогов из 4х строк А1, A2, A3, A4
По каждой строке итогов разверные данные.
...
Рейтинг: 0 / 0
20.05.2014, 22:44
    #38647048
shilvlad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных из регистров сведений запросом
EugeniaKshilvlad, Обычный запрос + ИТОГИ ПО Base Object
Получите выборку итогов из 4х строк А1, A2, A3, A4
По каждой строке итогов разверные данные.
Я тут картинку нарисовал.. И, извините за лошпедность, никак не могу сообразить как ИТОГИ ПО примонстрячить к моим данным, что бы получить то что на картинке:
...
Рейтинг: 0 / 0
20.05.2014, 23:37
    #38647084
EugeniaK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных из регистров сведений запросом
shilvladЯ тут картинку нарисовал.. И, извините за лошпедность, никак не могу сообразить как ИТОГИ ПО примонстрячить к моим данным, что бы получить то что на картинке:
Итоги дадут такое дерево
А1
- B1
- B2
- B3
A2
- B4
- B5
A3
- B6
A4
- B7
- B8
- B9
- B0
Из него уже получаете нужный вам отчет.
Сразу получить результат запроса с переменным количеством колонок не получится.

А, вообще, если нужен именно отчет, просто отбираете данные и выбираете в СКД режим отчета "Таблица", где Base Object - строки, Added object - колонки.
...
Рейтинг: 0 / 0
20.05.2014, 23:41
    #38647088
EugeniaK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных из регистров сведений запросом
shilvlad, Теоретически, можно извратиться через пакет из нескольких запросов и временных таблиц и получить именно в нужном Вам формате, но все равно нужно изначально задать максимальное количество N. Переменное количество колонок не получите в любом случае.
...
Рейтинг: 0 / 0
21.05.2014, 08:26
    #38647178
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных из регистров сведений запросом
На чистом языке запросов 1С добиться такой перекрестной таблицы не получится.
Вижу два варианта формирования нужного вам отчета:
1) ИТОГИ ПО и далее запрограммировать нужную вам логику формирования отчета;
2) Может быть вам поможет СКД, я к сожалению уже очень далек от данного механизма и более точную информацию дать не могу;
...
Рейтинг: 0 / 0
21.05.2014, 19:38
    #38648041
dmi3j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных из регистров сведений запросом
При определенных условиях, как частный случай, можно пакетным запросом получить результат в виде:

BaseObject | AddedObject | НомерКолонки

A1 | B01 | 1
A1 | B02 | 2
A1 | B03 | 3
A2 | B04 | 1
A2 | B05 | 2
A3 | B06 | 1
A4 | B07 | 1
A4 | B08 | 2
A4 | B09 | 3
A4 | B10 | 4
A5 | B11 | 1
A6 | B12 | 1
A6 | B13 | 2
A6 | B14 | 3

А уже его в СКД вывести как таблицу, где BaseObject - строки, НомерСтолбца - колонки, AddedObject - ресурс (к примеру Максимум по НомеруСтолбца).

Сам запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
/////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	РС.BaseObject,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РС.AddedObject) КАК Количество
ПОМЕСТИТЬ ВТ1
ИЗ
	РегистрСведений.РС КАК РС

СГРУППИРОВАТЬ ПО
	РС.BaseObject

ИНДЕКСИРОВАТЬ ПО
	РС.BaseObject
;

/////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	РС.BaseObject,
	РС.AddedObject,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РС1.AddedObject) КАК Количество2
ПОМЕСТИТЬ ВТ2
ИЗ
	РегистрСведений.РС КАК РС
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РС КАК РС1
		ПО РС.BaseObject = РС1.BaseObject
			И РС.AddedObject < РС1.AddedObject

СГРУППИРОВАТЬ ПО
	РС.BaseObject,
	РС.AddedObject

ИНДЕКСИРОВАТЬ ПО
	РС.BaseObject
;

//////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВТ2.BaseObject,
	ВТ2.AddedObject,
	ВТ1.Количество - ВТ2.Количество2 КАК НомерСтолбца
ИЗ
	ВТ2 КАК ВТ2
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ1 КАК ВТ1
		ПО ВТ2.BaseObject = ВТ1.BaseObject

/////////////////////////////////////////////////////////////////


При этих условиях задача решается и в случае заранее неизвестного количества столбцов.
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Получение данных из регистров сведений запросом / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]