Имя: Пароль:
1C
1С v8
Помогите с формированием запроса!
,
0 mzelensky
 
15.12.11
11:45
Доброго времени суток!
Стоит очень своеобразная задача, решить которую пока не поворачиваются мозги. Суть:

Есть исходная таблица вида (количестов Колонок-параметров может быть максимум 7):

Кол1-Наимен     Кол2-Параметр  Кол3-Параметр   Кол4-Параметр
Номенклатура1   Ширина         Длина           Количество
Номенклатура2   Длина          Ширина          Количество
Номенклатура3   Длина          Количество
Номенклатура4   Количество     Объем

Нужно сделать группировку товара по совокупности его параметров (составу параметров) + отсортировать колонки-параметры по однотипному признаку. В итоге нужно получить

Кол1-Наимен     Кол2-Параметр  Кол3-Параметр   Кол4-Параметр
Группировка1
Номенклатура1   Ширина         Длина           Количество
Номенклатура2   Ширина         Длина           Количество
Группировка2
Номенклатура3   Длина          Количество
Группировка3
Номенклатура4   Количество     Объем

Т.е. положение параметра в пределах одной строки значения не имеет, имеет значение только состав. ВОТ КАК ЭТО СДЕЛАТЬ???
1 mzelensky
 
15.12.11
11:48
буду апать
2 aleks-id
 
15.12.11
11:50
ты принтеры поборол запросом?
3 mzelensky
 
15.12.11
11:51
(2) пока просто поставил заглушку на "исключение", чуть позже буду пробовать тот вариант .что ты мне предложил.
4 mzelensky
 
15.12.11
11:59
что-то сегодня какой-то народ активный...тема быстро сваливается вниз :(
5 Axel2009
 
15.12.11
12:01
а почему именно Ширина Длина Количество, а не Количество Ширина Длина?
6 Axel2009
 
15.12.11
12:02
в СКД вроде как можно группировать по нескольким измерениям, не пойдет?
7 mzelensky
 
15.12.11
12:03
(5) в идеале конечно должна быть сортировка "Длина Количеств Ширина" - но не в этом суть!
8 mzelensky
 
15.12.11
12:04
(6) мне это нужно не в виде отчета, а в виде выборки из запроса. Ну т.е. в итоге это конечно будет отчет, но это задание лишь одна (небольшая) его часть. И в последующем она еще будет обрабатываться.
9 Axel2009
 
15.12.11
12:08
(8) СКД умеет выкидывать в таблицы результат..
а сколько различных параметров вообще?
10 Axel2009
 
15.12.11
12:10
в общем нужно получить таблицу вида
номенклатура1 параметр1
номенклатура1 параметр2
номенклатура2 параметр1

и еще получить таблицу различных наборов параметров
группа1 параметр1
группа1 параметр2
группа2 параметр1
тогда можно будет.
11 mzelensky
 
15.12.11
12:12
(9) количество от 0 до 7
12 Axel2009
 
15.12.11
12:14
(11) про количество понял. я про общий набор. и вообще сколько параметров "объем, количество, длина" это 3 различных параметра
13 mzelensky
 
15.12.11
12:19
(12) ааа, этих сколько угодно может быть - это элементы справочника.
14 mzelensky
 
15.12.11
12:20
(10) я не пойму как эту таблицу получить:

группа1 параметр1
группа1 параметр2
группа2 параметр1
15 Axel2009
 
15.12.11
12:20
да понятно, что сколь угодно. где эти наборы прописаны? в характеристиках номенклатуры? нужна таблица что в (10) можешь получить?
16 Axel2009
 
15.12.11
12:21
(14) а как получил ту что в (0)?
17 mzelensky
 
15.12.11
12:22
(15) В единице измерения номенклатуры. От туда тянутся в Табличную часть, а уже табличную часть я обрабатываю (табличка в (0))
18 Axel2009
 
15.12.11
12:23
(17) как это выглядит? в единице измерения параметры привязаны?
19 mzelensky
 
15.12.11
12:26
(16) вот мои наброски:

Запрос2 = Новый Запрос;
       Запрос2.Текст = "ВЫБРАТЬ
       |    &Ссылка КАК Ссылка,
       |    ВТ.НомерСтроки КАК НомерСтроки,
       |    ВТ.эл1 КАК эл1,
       |    ВТ.эл2 КАК эл2,
       |    ВТ.эл3 КАК эл3,
       |    ВТ.эл4 КАК эл4,
       |    ВТ.эл5 КАК эл5,
       |    ВТ.эл6 КАК эл6,
       |    ВТ.эл7 КАК эл7,
       |    ВТ.эл1Наимен КАК эл1Наимен,
       |    ВТ.эл2Наимен КАК эл2Наимен,
       |    ВТ.эл3Наимен КАК эл3Наимен,
       |    ВТ.эл4Наимен КАК эл4Наимен,
       |    ВТ.эл5Наимен КАК эл5Наимен,
       |    ВТ.эл6Наимен КАК эл6Наимен,
       |    ВТ.эл7Наимен КАК эл7Наимен
       |ПОМЕСТИТЬ ВТ
       |ИЗ
       |    &ТЧ КАК ВТ
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    Вт.эл1Наимен КАК эл1Наимен,
       |    Вт.эл1,
       |    Вт.НомерСтроки КАК НомерСтроки
       |ИЗ
       |    ВТ КАК Вт
       |ГДЕ
       |    Вт.эл1Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка)
       |
       |ОБЪЕДИНИТЬ ВСЕ
       |
       |ВЫБРАТЬ
       |    ВТ.эл2Наимен,
       |    ВТ.эл2,
       |    ВТ.НомерСтроки
       |ИЗ
       |    ВТ КАК ВТ
       |ГДЕ
       |    ВТ.эл2Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка)
       |
       |ОБЪЕДИНИТЬ ВСЕ
       |
       |ВЫБРАТЬ
       |    ВТ.эл3Наимен,
       |    ВТ.эл3,
       |    ВТ.НомерСтроки
       |ИЗ
       |    ВТ КАК ВТ
       |ГДЕ
       |    ВТ.эл3Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка)
       |
       |ОБЪЕДИНИТЬ ВСЕ
       |
       |ВЫБРАТЬ
       |    ВТ.эл4Наимен,
       |    ВТ.эл4,
       |    ВТ.НомерСтроки
       |ИЗ
       |    ВТ КАК ВТ
       |ГДЕ
       |    ВТ.эл4Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка)
       |
       |ОБЪЕДИНИТЬ ВСЕ
       |
       |ВЫБРАТЬ
       |    ВТ.эл5Наимен,
       |    ВТ.эл5,
       |    ВТ.НомерСтроки
       |ИЗ
       |    ВТ КАК ВТ
       |ГДЕ
       |    ВТ.эл5Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка)
       |
       |ОБЪЕДИНИТЬ ВСЕ
       |
       |ВЫБРАТЬ
       |    ВТ.эл6Наимен,
       |    ВТ.эл6,
       |    ВТ.НомерСтроки
       |ИЗ
       |    ВТ КАК ВТ
       |ГДЕ
       |    ВТ.эл6Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка)
       |
       |ОБЪЕДИНИТЬ ВСЕ
       |
       |ВЫБРАТЬ
       |    ВТ.эл7Наимен,
       |    ВТ.эл7,
       |    ВТ.НомерСтроки
       |ИЗ
       |    ВТ КАК ВТ
       |ГДЕ
       |    ВТ.эл7Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка)
       |
       |УПОРЯДОЧИТЬ ПО
       |    эл1Наимен,
       |    НомерСтроки
       |ИТОГИ
       |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ эл1Наимен)
       |ПО
       |    ОБЩИЕ";
       Запрос2.УстановитьПараметр("ТЧ",    ТабличнаяТСД.Выгрузить(,"НомерСтроки, Эл1,Эл2,Эл3,Эл4,Эл5,Эл6,Эл7 , Эл1Наимен,Эл2Наимен,Эл3Наимен,Эл4Наимен,Эл5Наимен,Эл6Наимен,Эл7Наимен" )  );     //ТСД
       Запрос2.УстановитьПараметр("ссылка",    Ссылка);     //ТСД
       
       МаксКолДинамичЭл=0;
       ТЗДинамичЭл=Запрос2.Выполнить().Выгрузить();
       выборка2=Запрос2.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
       Пока выборка2.Следующий() цикл            
           МаксКолДинамичЭл=выборка2.эл1Наимен;
           Выборка3=выборка2.Выбрать();
           Пока выборка3.СледующийПоЗначениюПоля("эл1Наимен") цикл
               ШапкаТЧДинамическиеЭл.Параметры.Наименование = Выборка3.эл1Наимен;
               ТабДок.Присоединить(ШапкаТЧДинамическиеЭл);
           КонецЦикла;
       КонецЦикла;


В результате, на выходе я получаю такую таблицу (если отталкиваться от исходной в (0)):


Кол1-Наимен     Кол2-Параметр  Кол3-Параметр   Кол4-Параметр   Кол5-Параметр
Номенклатура1   Длин           Количество      Ширина          -
Номенклатура2   Длин           Количество      Ширина          -
Номенклатура3   Длина          Количество      -
Номенклатура4   -              Количество      -               Объем


Т.е. получил максимальное количество разных параметров, и далее упорядочив заполняю их.
20 mzelensky
 
15.12.11
12:28
(18) какая разница как они там привязаны. Есть единица измерения номенклатуры. у нее 7 полей - туда проставляются эти самые параметры (длина, ширина, объем...). Каждый параметр может быть указан несколько раз и в любое из 7 полей (часть полей может быть пустое), т.е. вариаций уйма! В табличную часть они переносятся точно так же, как они прописаны в единице измерения (в т.ч. тоже 7 колонок, отвечающие за эти параметры).
21 Axel2009
 
15.12.11
12:40
а если он указан 2 раза, считать как 2 параметра?
22 mzelensky
 
15.12.11
12:42
(21) это очень маловероятная ситуация. Давайте считать ,что все параметры РАЗЛИЧНЫ.
23 Ненавижу 1С
 
гуру
15.12.11
12:47
(19) задача решена?
24 mzelensky
 
15.12.11
12:49
(23) НЕТ! Это старое решение (без группировок). Задача в (0) еще в процессе. Поможешь? Ты любишь задачки с подвыпердвертом :)
25 Ненавижу 1С
 
гуру
15.12.11
12:51
группировку можно вычислить примерно так:
ВЫБОР КОГДА Вт.эл1Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ
+ВЫБОР КОГДА Вт.эл2Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка) ТОГДА 2 ИНАЧЕ 0 КОНЕЦ
+ВЫБОР КОГДА Вт.эл3Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка) ТОГДА 4 ИНАЧЕ 0 КОНЕЦ
+ВЫБОР КОГДА Вт.эл4Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка) ТОГДА 8 ИНАЧЕ 0 КОНЕЦ
...
+ВЫБОР КОГДА Вт.эл7Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиРасчетаЕдИзм.пустаяссылка) ТОГДА 64 ИНАЧЕ 0 КОНЕЦ
 КАК ГРУППИРОВКА
26 mzelensky
 
15.12.11
12:55
(25) не совсем понимаю ,что я при этом получу...сейчас попробую.
27 Ненавижу 1С
 
гуру
15.12.11
12:56
(26) получишь уникальное значение для каждого набора, по нем сделаешь итоги
28 mzelensky
 
15.12.11
13:03
(27) не прокатит!
29 mzelensky
 
15.12.11
13:05
(27) смотри. Имеем таблицу:

Кол1-Наимен     Кол2-Параметр  Кол3-Параметр   Кол4-Параметр
Номенклатура1   Ширина         Длина           Количество
Номенклатура2   Длина          Ширина          Количество
Номенклатура3   Длина          Количество
Номенклатура4   Количество     Объем

По твоему алгоритму получаем:

Группировка1
Номенклатура1   Ширина         Длина           Количество
Номенклатура2   Длина          Ширина          Количество
Группировка2
Номенклатура3   Длина          Количество
Номенклатура4   Количество     Объем

А должно быть:

Кол1-Наимен     Кол2-Параметр  Кол3-Параметр   Кол4-Параметр
Группировка1
Номенклатура1   Ширина         Длина           Количество
Номенклатура2   Ширина         Длина           Количество
Группировка2
Номенклатура3   Длина          Количество
Группировка3
Номенклатура4   Количество     Объем

Т.е. в 3 и 4 строках заполнены колонка2 и колонка3, но в сами параметры различаются!
30 Axel2009
 
15.12.11
13:07
(25) не поможет. если количество указано в 1ом поле, а у другой единицы измерения во втором, то будет разница
31 Axel2009
 
15.12.11
13:08
(29) у каждого параметра присвой по принципу из (25) и суммируй. должны взлететь группы. правда если их больше 30 штук различных, тогда циферки большие будут
32 mzelensky
 
15.12.11
13:08
(27) но идея интересная...ток нужно присваивать "веса" не Колонке (на ее заполнение), а значению в этой колонки, ну там "Длина = 1", "Ширина = 8" и т.д. .... надо попробовать
33 Ненавижу 1С
 
гуру
15.12.11
13:10
(32) вот-вот попробуй
я просто не сильно вникал, но думаю идея верная
34 Inform
 
15.12.11
13:11
1.) Помещаем нашу таблицу во временную таблицу
2.) Делаем столько объединений, сколько есть параметров, примерно как в (19), группируем
3.) Далее как написано в (25) делаем новую таблицу (выборку из объединений), в ней будут колонки Номенклатура + Поля-параметры
В каждом параметре пишем ВЫБОР КОГДА Параметр = Ширина ТОГДА 1 ИНАЧЕ 0 КОНЕЦ и т.д. Итого имеем в каждой колонке разный параметр
35 Inform
 
15.12.11
13:12
+ (34) ВЫБОР КОГДА Параметр = Ширина ТОГДА 1 ИНАЧЕ 0 КОНЕЦ
заменить на:
ВЫБОР КОГДА Параметр = Ширина ТОГДА Параметр ИНАЧЕ ПустаяСсылкаНаПараметр КОНЕЦ
36 mzelensky
 
15.12.11
13:14
(32) вопрос ток - как выделить различные элементы...я думал опираться на КОД элемента, но блин - У МЕНЯ КОД СТРОКОВЫЙ :( и суммировать не дает...
37 mzelensky
 
15.12.11
13:15
(34) "ВЫБОР КОГДА Параметр = Ширина ТОГДА 1 ИНАЧЕ 0 КОНЕЦ" - так ты заранее не знаешь сколько у тебя этих параметров и какие они!
38 mzelensky
 
15.12.11
13:17
(35) что-то похожее я могу сделать дополнительной обработкой выборки из (19)...получить выборку, обработать в цикле, а потом опять загнать в таблицу и передать в запрос - там уже сделать группировку....но блин, это жесть БУДЕТ!
39 mzelensky
 
15.12.11
13:24
КАЖЕТСЯ ПРИДУМАЛ ПРОЩЕ!!!!!!
40 mzelensky
 
15.12.11
13:30
Правда все-равно прийдется с дополнительной обработкой делать, но должно прокатить!

Для каждой строки получаем список параметров и сортируем его. Из таблицы

Кол1-Наимен     Кол2-Параметр  Кол3-Параметр   Кол4-Параметр
Номенклатура1   Ширина         Длина           Количество
Номенклатура2   Длина          Ширина          Количество
Номенклатура3   Длина          Количество
Номенклатура4   Количество     Объем

Получаем что-то вроде:

Кол1-Наимен     Кол2-Параметр  Кол3-Параметр   Кол4-Параметр
Номенклатура1   Длина          Количество      Ширина
Номенклатура2   Длина          Количество      Ширина          
Номенклатура3   Длина          Количество
Номенклатура4   Количество     Объем

Далее просто "склеиваем" имена параметров и полученную строку записываем в доп. колонку. Получаем:

Кол1-Наимен    Кол2-Параметр Кол3-Параметр Кол4-Параметр   ДопКолонка
Номенклатура1  Длина         Количество    Ширина       ДлинаКоличествоШирина
Номенклатура2  Длина         Количество    Ширина       ДлинаКоличествоШирина
Номенклатура3  Длина         Количество                 ДлинаКоличество
Номенклатура4  Количество    Объем                      КоличествоОбъем

А далее просто группируем по значению в "ДопКолонка".
41 mzelensky
 
15.12.11
13:31
теперь вопрос - как это ПО МАКСИМУМУ СДЕЛАТЬ ЗАПРОСОМ, без дополнительных обработок!
42 Inform
 
15.12.11
13:38
(37) так ты сделай чтобы у тебя всегда для 7 параметров отрабатывало, ты ведь таб. часть передаешь, пусть у тебя будут лишние колонки, или "длина", "ширина" и т.д. не предопределены?
43 mzelensky
 
15.12.11
13:48
(42) именно - ""длина", "ширина" и т.д. не предопределены". Т.е. "длина", "ширина" и т.д являются элементами справочника и таких элементов может быть неограниченное количество + их комбинации тоже могут быть самыми различными, поэтому прописывать как в (35) не вариант.
44 mzelensky
 
15.12.11
14:04
ну так что...никто не отговорит меня от этой бредовой мысли :(
45 Inform
 
15.12.11
14:13
(43) тогда выбери из своей ТЧ изначально различные элементы в отдельную таблицу, разложи их по колонкам, а дальше получившуюся таблицу соединяй полным соединением с описанным результатом и проверяй:
ВЫБОР
КОГДА Параметр = ТаблицаПараметровПоКолонкам.Параметр1
 ТОГДА Параметр
ИНАЧЕ ПустаяСсылкаНаПараметр КОНЕЦ

как таблицу разложить по колонкам, на примере справочника Номенклатура:

ВЫБРАТЬ
   Номенклатура.Ссылка,
   Номенклатура.Наименование
ПОМЕСТИТЬ ВТ_Номенклатура
ИЗ
   Справочник.Номенклатура КАК Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_Номенклатура.Ссылка,
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Номенклатура1.Ссылка) КАК ИндексЭлемента
ПОМЕСТИТЬ ВТ_НумерованнаяТаблицаЭлементов
ИЗ
   ВТ_Номенклатура КАК ВТ_Номенклатура
       ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Номенклатура КАК ВТ_Номенклатура1
       ПО ВТ_Номенклатура.Наименование > ВТ_Номенклатура1.Наименование

СГРУППИРОВАТЬ ПО
   ВТ_Номенклатура.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 0
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.Ссылка
       КОНЕЦ) КАК Параметр1,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 1
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.Ссылка
       КОНЕЦ) КАК Параметр2,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 2
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.Ссылка
       КОНЕЦ) КАК Параметр3,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 3
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.Ссылка
       КОНЕЦ) КАК Параметр4,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 4
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.Ссылка
       КОНЕЦ) КАК Параметр5,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 5
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.Ссылка
       КОНЕЦ) КАК Параметр6,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 6
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.Ссылка
       КОНЕЦ) КАК Параметр7
ИЗ
   ВТ_НумерованнаяТаблицаЭлементов КАК ВТ_НумерованнаяТаблицаЭлементов
46 mzelensky
 
15.12.11
15:38
Поздравьте меня, у меня ПОЛУЧИЛОСЬ!!!!!!! Обошелся 1 дополнительным запросом, выборкой из него и таблицей значений.
47 Axel2009
 
15.12.11
15:48
с таблицей значений любой может =)
48 mzelensky
 
15.12.11
16:14
(47) если ты мне предложишь вариант, как ЭТО можно сделать БЕЗ ТАБЛИЦЫ, то я с удовольствием им воспользуюсь!
49 mzelensky
 
15.12.11
16:16
(47) + тем более, что таблица нужна лишь  из-за того, что в запросе нельзя "склеивать" строки.
50 Ненавижу 1С
 
гуру
15.12.11
16:27
все делается пакетным запросом. Пример для трех параметров.

Исходная таблица:
Номенклатура1   Ширина         Длина           Высота
Номенклатура2   Высота         Ширина
Номенклатура3   Длина          Ширина
Номенклатура4   Длина

Шаг 1. Расставляем по фиксированным местам, результат:
Номенклатура1   Высота         Длина           Ширина
Номенклатура2   Высота         NULL            Ширина
Номенклатура3   NULL           Длина           Ширина
Номенклатура4   NULL           Длина           NULL

Шаг 2. Вычисляем "группировки", результат:
Номенклатура1   Высота         Длина           Ширина  7
Номенклатура2   Высота         NULL            Ширина  5
Номенклатура3   NULL           Длина           Ширина  6
Номенклатура4   NULL           Длина           NULL    2

Шаг 3. Сдвигаем все влево (не знаю зачем это автору, но хозяин барин), результат:
Номенклатура1   Высота         Длина           Ширина  7
Номенклатура2   Высота         Ширина          NULL    5
Номенклатура3   Длина          Ширина          NULL    6
Номенклатура4   Длина          NULL            NULL    2
51 mzelensky
 
15.12.11
17:09
(50) как ты реализовал "Шаг 2" ?
52 mzelensky
 
15.12.11
17:18
Ненавижу 1С ???
53 Axel2009
 
15.12.11
17:25
(50) пакетным запросом 100 разных параметров?? в колонки?? а если добавится хоть еще одна??
54 Inform
 
15.12.11
18:13
Попробуй (доотладишь при необходимости):

ВЫБРАТЬ
   &Ссылка КАК Ссылка,
   ВТ.НомерСтроки КАК НомерСтроки,
   ВТ.эл1 КАК эл1,
   ВТ.эл2 КАК эл2,
   ВТ.эл3 КАК эл3,
   ВТ.эл4 КАК эл4,
   ВТ.эл5 КАК эл5,
   ВТ.эл6 КАК эл6,
   ВТ.эл7 КАК эл7,
   ВТ.эл1Наимен КАК эл1Наимен,
   ВТ.эл2Наимен КАК эл2Наимен,
   ВТ.эл3Наимен КАК эл3Наимен,
   ВТ.эл4Наимен КАК эл4Наимен,
   ВТ.эл5Наимен КАК эл5Наимен,
   ВТ.эл6Наимен КАК эл6Наимен,
   ВТ.эл7Наимен КАК эл7Наимен
ПОМЕСТИТЬ ВТ_ТабЧастьДокумента
ИЗ
   &ТЧ КАК ВТ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Вт.эл1Наимен КАК эл1Наимен,
   Вт.эл1,
   Вт.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ ВТ_ТранспонированнаяТабЧасть
ИЗ
   ВТ_ТабЧастьДокумента КАК Вт
ГДЕ
   Вт.эл1Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.пустаяссылка)

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

ВЫБРАТЬ
   ВТ.эл2Наимен,
   ВТ.эл2,
   ВТ.НомерСтроки
ИЗ
   ВТ_ТабЧастьДокумента КАК ВТ
ГДЕ
   ВТ.эл2Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.пустаяссылка)

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

ВЫБРАТЬ
   ВТ.эл3Наимен,
   ВТ.эл3,
   ВТ.НомерСтроки
ИЗ
   ВТ_ТабЧастьДокумента КАК ВТ
ГДЕ
   ВТ.эл3Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.пустаяссылка)

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

ВЫБРАТЬ
   ВТ.эл4Наимен,
   ВТ.эл4,
   ВТ.НомерСтроки
ИЗ
   ВТ_ТабЧастьДокумента КАК ВТ
ГДЕ
   ВТ.эл4Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.пустаяссылка)

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

ВЫБРАТЬ
   ВТ.эл5Наимен,
   ВТ.эл5,
   ВТ.НомерСтроки
ИЗ
   ВТ_ТабЧастьДокумента КАК ВТ
ГДЕ
   ВТ.эл5Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.пустаяссылка)

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

ВЫБРАТЬ
   ВТ.эл6Наимен,
   ВТ.эл6,
   ВТ.НомерСтроки
ИЗ
   ВТ_ТабЧастьДокумента КАК ВТ
ГДЕ
   ВТ.эл6Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.пустаяссылка)

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

ВЫБРАТЬ
   ВТ.эл7Наимен,
   ВТ.эл7,
   ВТ.НомерСтроки
ИЗ
   ВТ_ТабЧастьДокумента КАК ВТ
ГДЕ
   ВТ.эл7Наимен <> ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.пустаяссылка)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_ТранспонированнаяТабЧасть.эл1,
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_ТранспонированнаяТабЧасть1.эл1) КАК ИндексЭлемента
ПОМЕСТИТЬ ВТ_НумерованнаяТаблицаЭлементов
ИЗ
   ВТ_ТранспонированнаяТабЧасть КАК ВТ_ТранспонированнаяТабЧасть
       ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТранспонированнаяТабЧасть КАК ВТ_ТранспонированнаяТабЧасть1
       ПО ВТ_ТранспонированнаяТабЧасть.эл1Наимен > ВТ_ТранспонированнаяТабЧасть1.эл1Наимен

СГРУППИРОВАТЬ ПО
   ВТ_ТранспонированнаяТабЧасть.эл1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 0
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.эл1
       КОНЕЦ) КАК Параметр1,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 1
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.эл1
       КОНЕЦ) КАК Параметр2,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 2
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.эл1
       КОНЕЦ) КАК Параметр3,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 3
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.эл1
       КОНЕЦ) КАК Параметр4,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 4
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.эл1
       КОНЕЦ) КАК Параметр5,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 5
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.эл1
       КОНЕЦ) КАК Параметр6,
   МАКСИМУМ(ВЫБОР
           КОГДА ВТ_НумерованнаяТаблицаЭлементов.ИндексЭлемента = 6
               ТОГДА ВТ_НумерованнаяТаблицаЭлементов.эл1
       КОНЕЦ) КАК Параметр7
ПОМЕСТИТЬ ВТ_ТаблицаСРазличнымиХарактеристиками
ИЗ
   ВТ_НумерованнаяТаблицаЭлементов КАК ВТ_НумерованнаяТаблицаЭлементов
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_ТабЧастьДокумента.НомерСтроки,
   ВТ_ТабЧастьДокумента.Ссылка,
   ВЫБОР
       КОГДА ВТ_ТабЧастьДокумента.эл1 = ВТ_ТаблицаСРазличнымиХарактеристиками.Параметр1
           ТОГДА ВТ_ТабЧастьДокумента.эл1
       ИНАЧЕ НЕОПРЕДЕЛЕНО
   КОНЕЦ КАК Параметр1,
   ВЫБОР
       КОГДА ВТ_ТабЧастьДокумента.эл2 = ВТ_ТаблицаСРазличнымиХарактеристиками.Параметр2
           ТОГДА ВТ_ТабЧастьДокумента.эл2
       ИНАЧЕ НЕОПРЕДЕЛЕНО
   КОНЕЦ КАК Параметр2,
   ВЫБОР
       КОГДА ВТ_ТабЧастьДокумента.эл3 = ВТ_ТаблицаСРазличнымиХарактеристиками.Параметр3
           ТОГДА ВТ_ТабЧастьДокумента.эл3
       ИНАЧЕ НЕОПРЕДЕЛЕНО
   КОНЕЦ КАК Параметр3,
   ВЫБОР
       КОГДА ВТ_ТабЧастьДокумента.эл4 = ВТ_ТаблицаСРазличнымиХарактеристиками.Параметр4
           ТОГДА ВТ_ТабЧастьДокумента.эл4
       ИНАЧЕ НЕОПРЕДЕЛЕНО
   КОНЕЦ КАК Параметр4,
   ВЫБОР
       КОГДА ВТ_ТабЧастьДокумента.эл5 = ВТ_ТаблицаСРазличнымиХарактеристиками.Параметр5
           ТОГДА ВТ_ТабЧастьДокумента.эл5
       ИНАЧЕ НЕОПРЕДЕЛЕНО
   КОНЕЦ КАК Параметр5,
   ВЫБОР
       КОГДА ВТ_ТабЧастьДокумента.эл6 = ВТ_ТаблицаСРазличнымиХарактеристиками.Параметр6
           ТОГДА ВТ_ТабЧастьДокумента.эл6
       ИНАЧЕ НЕОПРЕДЕЛЕНО
   КОНЕЦ КАК Параметр6,
   ВЫБОР
       КОГДА ВТ_ТабЧастьДокумента.эл7 = ВТ_ТаблицаСРазличнымиХарактеристиками.Параметр7
           ТОГДА ВТ_ТабЧастьДокумента.эл7
       ИНАЧЕ НЕОПРЕДЕЛЕНО
   КОНЕЦ КАК Параметр7
ИЗ
   ВТ_ТабЧастьДокумента КАК ВТ_ТабЧастьДокумента,
   ВТ_ТаблицаСРазличнымиХарактеристиками КАК ВТ_ТаблицаСРазличнымиХарактеристиками
55 mzelensky
 
16.12.11
09:21
(54) ошибка во втором пакетном запросе:

ВЫБРАТЬ
   ВТ_ТранспонированнаяТабЧасть.эл1,
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_ТранспонированнаяТабЧасть1.эл1) КАК ИндексЭлемента
ПОМЕСТИТЬ ВТ_НумерованнаяТаблицаЭлементов
ИЗ
   ВТ_ТранспонированнаяТабЧасть КАК ВТ_ТранспонированнаяТабЧасть
       ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТранспонированнаяТабЧасть КАК ВТ_ТранспонированнаяТабЧасть1
       ПО ВТ_ТранспонированнаяТабЧасть.эл1Наимен > ВТ_ТранспонированнаяТабЧасть1.эл1Наимен

СГРУППИРОВАТЬ ПО
   ВТ_ТранспонированнаяТабЧасть.эл1


ВТ_ТранспонированнаяТабЧасть.эл1 - это значение параметра (ну т.е. если "ВТ_ТранспонированнаяТабЧасть.эл1Наимен" имя параметра, например длина, то "ВТ_ТранспонированнаяТабЧасть.эл1" это значение длины, например 10 метров!).

Следовательно " КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_ТранспонированнаяТабЧасть1.эл1)" - кто сказал ,что значения должны быть различны??? В одной строке параметр1 = "длина" и равен "10", а во второй строке параметр1 = "ширина" и тоже равен "10"! В твоем случае получится, что это равнозначные элементы, а это не так! Следовательно дальнейший расчет, построенный на этих данных, так же будет не верен.