Как получить структуру из запроса

1. luda33 27.12.16 10:49 Сейчас в теме
Есть регистр сведений
номенклатура1 картинка1
номенклатура1 картинка2
номенклатура1 картинка3
номенклатура1 картинка4

Как запросом получить результат
номенклатура1 картинка1 картинка2 картинка3 картинка4 - при условии что нас интересует 4 любые картинки при их наличии в регистре
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
6. GeRon 27.12.16 13:18 Сейчас в теме
(1)задача называется "транспонирование"
Если просто получить таблицу, то только с постобработкой, язык запросов в 1с не такой развитый
8. ice-net 19 27.12.16 13:24 Сейчас в теме
(6)
Язык запросов довольно гибкий и функциональный! Правда, не всегда такие решения выигрывают по скорости и универсальности. =)
2. artem_from_minsk 27.12.16 10:55 Сейчас в теме
  | ВЫБРАТЬ ПЕРВЫЕ 4
        |   РегистрХ.Номенклатура КАК Номенклатура,
        |   РегистрХ.Картинка КАК Картинка
        | ИЗ
        |   РегистрСведений.РегистрХ
        | ГДЕ РегистрХ.Номенклатура = &Номенклатура


Как -то так. Выберет либо 4 записи либо меньше
3. luda33 27.12.16 12:41 Сейчас в теме
(2) и получу таблицу
номенклатура1 картинка1
номенклатура1 картинка2
номенклатура1 картинка3
номенклатура1 картинка4
а надо одну строку таблицы
номенклатура1 картинка1 картинка2 картинка3 картинка4
отбора по номенклатуре не будет - нужно получить результат типа

номенклатура1 картинка1.1 картинка1.2 картинка1.3 картинка1.4
номенклатура2 картинка2.1 картинка2.2 картинка2.3 картинка2.4
номенклатура3 картинка3.1 картинка3.2 картинка3.3 картинка3.4

4. antz 27.12.16 12:55 Сейчас в теме
Надо именно в запросе? Постобработка не канает?
корум; +1 Ответить
5. ice-net 19 27.12.16 13:07 Сейчас в теме
Примерно вот так...
Скрытый текст
luda33; корум; +2 Ответить
7. ice-net 19 27.12.16 13:21 Сейчас в теме
(5)

Откорректировал свое решение в (5) , теперь должно получиться как Вы и хотели.
9. luda33 27.12.16 13:52 Сейчас в теме
10. Sashares 34 27.12.16 14:13 Сейчас в теме
(5) Зачем так сложно?

ВЫБРАТЬ
    Регистр.Номенклатура,
    Регистр.Картинка
ПОМЕСТИТЬ Таб
ИЗ
    Регистр.МойРегистр КАК Регистр
ГДЕ
    Регистр.Номенклатура = &НужнаяНоменклатура

;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ первые 1 
	Таб.Номенклатура,
	Таб.Картинка КАК картинка1,
	Таб1.Картинка КАК Картинка1 КАК картинка2,
	Таб2.Картинка КАК Картинка2 КАК картинка3,
	Таб3.Картинка КАК Картинка3 КАК картинка4
ИЗ
	Таб КАК Таб
		ЛЕВОЕ СОЕДИНЕНИЕ Таб КАК Таб1
		ПО Таб.Номенклатура = Таб1.Номенклатура
			И Таб.Картинка <> Таб1.Картинка
		ЛЕВОЕ СОЕДИНЕНИЕ Таб КАК Таб2
		ПО Таб.Номенклатура = Таб2.Номенклатура
			И Таб.Картинка <> Таб2.Картинка
			И (Таб1.Картинка <> Таб2.Картинка)
		ЛЕВОЕ СОЕДИНЕНИЕ Таб КАК Таб3
		ПО Таб.Номенклатура = Таб3.Номенклатура
			И Таб.Картинка <> Таб3.Картинка
			И (Таб1.Картинка <> Таб3.Картинка)
			И (Таб2.Картинка <> Таб3.Картинка)
Показать


Такой вариант, как и в (5) подходит только для получения разных картинок 1 номенклатуры. Если будет без отбора по номенклатуре, или по нескольким, будет плохо.
корум; +1 Ответить
11. Sashares 34 27.12.16 15:03 Сейчас в теме
Более рабочий вариант, но картинок должно быть не меньше 4 =):
ВЫБРАТЬ
	"Ном1" КАК Номенклатура,
	"Кар1" КАК Картинка,
	1 КАК кол
ПОМЕСТИТЬ Таб

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном1",
	"Кар2",
	1
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном1",
	"Кар3",
	1
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном1",
	"Кар4",
	1
	
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном1",
	"Кар5",
	1
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном1",
	"Кар6",
	1
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном2", 
	"Кар1",
	1
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном2",
	"Кар2",
	1
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном2",
	"Кар3",
	1
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном2",
	"Кар4",
	1
	
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном2",
	"Кар5",
	1
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Ном2",
	"Кар6",
	1

;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Таб.Номенклатура КАК Номенклатура,
	максимум(Таб.Картинка) КАК Картинка1,
	максимум(Таб1.Картинка) КАК Картинка2,
	максимум(Таб2.Картинка) КАК Картинка3,
	максимум(Таб3.Картинка) КАК Картинка4
ИЗ
	Таб КАК Таб
		внутреннее СОЕДИНЕНИЕ Таб КАК Таб1
		ПО Таб.Номенклатура = Таб1.Номенклатура
			И Таб.Картинка < Таб1.Картинка
		внутреннее СОЕДИНЕНИЕ Таб КАК Таб2
		ПО (Таб.Номенклатура = Таб2.Номенклатура)
			И (Таб1.Картинка < Таб2.Картинка)
		внутреннее СОЕДИНЕНИЕ Таб КАК Таб3
		ПО (Таб.Номенклатура = Таб3.Номенклатура)
			И (Таб2.Картинка < Таб3.Картинка)
СГруппировать По Таб.Номенклатура
Показать
Прикрепленные файлы:
12. artem_from_minsk 27.12.16 15:08 Сейчас в теме
Ну в 1С я не стречал аналога SQL PIVOT (транспонирование). По этому как уже советовали либо через временную таблицу. Как по мне так не большая проблема пробежать по циклу и перенести данные по строкам в столбцы таблицы значений. Затем можно добавить в виде параметра в запрос, если нужно.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)