Транспонирование с телепортирование в запросе 8.2

1. dedkov 213 19.01.12 11:35 Сейчас в теме
Есть Справочник, в котором есть ТабличнаяЧасть, которая содержит 2 колонки Элемент и Значение - предназначенная для хранения характеристик.
В Регистре хранятся остатки элементов Справочника.
Для наглядности (ну например):
ТабличнаяЧасть Элемента 1 Справочника:
Элемент_________Значение
Цена____________3
Цвет____________красный
Дата_покупки____2011_11_05

ТабличнаяЧасть Элемента 2 Справочника:
Цена____________4
Размер__________15
Форма___________куб
Дата_покупки____2012_01_05
......

Остатки:
Элемент 1 - 10 шт.
Элемент 2 - 15 шт.

(Понятное дело таких элементов много и у них разный набор характеристик и в разном порядке эти характеристики располагаются в табличной части.)

Как мне создать запрос что бы получить остатки элементов и в колонках же разместить данные по характеристикам.

То есть результат запроса должен быть:

Элемент____Количество_____Цена____Цвет______Дата_покупки____­Размер___Форма_
1__________10_____________3_______Красный___2011_11_05
2__________15_____________4_________________2012_01_05______­15_______куб

Или может быть посоветуете по другому хранить эти характеристики.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Uncore 1273 19.01.12 15:04 Сейчас в теме
(1) uri-fl, а какой тип у вас у элементов Цвет, Форма и т.д.?
6. dedkov 213 19.01.12 15:23 Сейчас в теме
(4) Тип может быть любой(почти).
(5) Выводить нужно именно в столбцы свойства.

Всем спасибо иду разбираться с планами видов характеристик.
2. znaher 19.01.12 13:01 Сейчас в теме
Все просто получаешь остатки по элементам.... сваливаешь все во временную таблицу(ну или просто все это делаешь вложенным запросом), потом соединяешь левым соединение к твоим свойствам и получить все как тебе хочется. очень простенький запрос. или я что - то не понял...
3. Ягг 495 19.01.12 13:02 Сейчас в теме
Вобще-то по моему для таких целей рекоменжуется использовать план видов характеристик и регистр сведений.
Но если возвращаться к данном у случаею, то просто в запросе прописываем что колонка цвет берется как связанная из таблицы элемента а в условии связки добавляем "... И ТаблицаЭлемента.Элемент= ""Цвет""... ".

Правда в этом случае нужно следить что бы "элемент" ххранил имено это значение - "Цвет". Очень не удобно. Лучше все таки план видов характеристик.
5. Uncore 1273 19.01.12 15:14 Сейчас в теме
проще вывести отчет в виде:
Элемент 1 | Количество |

| Цвет | Красный |
| Форма | Куб |

и т.д.

т.е. характеристики и их значения вывести строками
7. dedkov 213 19.01.12 15:25 Сейчас в теме
Хотя по правде интерес остался можно ли так сращивать две таблицы? Пристыковывать "перпендикулярно".
8. Uncore 1273 19.01.12 15:38 Сейчас в теме
(7) uri-fl, срастить-то их можно, только запрос получится очень объемным и зависящим от набора свойств. в общем очень кривой получится :) я бы в запросе выбрал значения и их характеристики строками, а вот в отчет вывел, как вам нужно. сначала формируем список колонок (свойства), полученных в запросе. затем выводим в нужные колонки данные.
9. dedkov 213 19.01.12 16:09 Сейчас в теме
10. dedkov 213 21.01.12 13:27 Сейчас в теме
Друзья, подскажите пожалуйста, с точки зрения производительности насколько разумно использовать план видов характеристик. Если сравнить например с той же табличной частью. Вот что быстрее работает обход всех признаков, записанных в табличной части, или признаков, которые хранятся в регистре, содержащем характеристики? и по сравнению с обыкновенным реквизитом объекта? Вообще насколько быстро, удобно, и т.п. работает связка объект-план видов характеристик-регистр сведений?
11. Uncore 1273 21.01.12 13:31 Сейчас в теме
(10) uri-fl, чтение данных из регистра быстрее, чем из табличной части справочника. в добавок план видов характеристик и предназначен для хранения характеристик объектов, а регистр сведений делает связку объект-характеристика-значение.
12. dedkov 213 21.01.12 13:35 Сейчас в теме
13. Obertone 74 30.09.22 10:03 Сейчас в теме
Транспонирование строк в столбцы в запросе удобно целиком делать согласно этой статье (https://infostart.ru/1c/articles/1342853/)
таким образом (на примере дополнительных сведений):

ВЫБРАТЬ
   ДополнительныеСведения.Объект КАК Объект,
   ДополнительныеСведения.Свойство КАК Свойство,
   ДополнительныеСведения.Значение КАК Значение   
   ПОМЕСТИТЬ ДополнительныеСведения_
ИЗ
   РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
ГДЕ
   ТИПЗНАЧЕНИЯ(ДополнительныеСведения.Объект) = ТИП(...);

ВЫБРАТЬ
   ДополнительныеСведения_.Объект КАК Объект,
   
   МАКСИМУМ(
         ВЫБОР
            КОГДА ДополнительныеСведения_.Свойство.Имя = "ИмяСвойства1"
               ТОГДА ДополнительныеСведения_.Значение
            ИНАЧЕ NULL
         КОНЕЦ
      ) КАК Свойство1,

   МАКСИМУМ(
         ВЫБОР
            КОГДА ДополнительныеСведения_.Свойство.Имя = "ИмяСвойства2"
               ТОГДА ДополнительныеСведения_.Значение
            ИНАЧЕ NULL
         КОНЕЦ
      ) КАК Свойство2,

   ...      

ИЗ   ДополнительныеСведения_ КАК ДополнительныеСведения_
ГДЕ   
   ДополнительныеСведения_.Свойство В
   ( 
ВЫБРАТЬ
   ДополнительныеРеквизитыИСведения.Ссылка КАК Ссылка
ИЗ
   ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
ГДЕ
   ДополнительныеРеквизитыИСведения.Имя = "ИмяСвойства1" ИЛИ
ДополнительныеРеквизитыИСведения.Имя = "ИмяСвойства2" ИЛИ ...

   )

СГРУППИРОВАТЬ ПО
   ДополнительныеСведения_.Объект
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот