Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 08:59

Помогите пожалуйста с запросом?

Автор decdmb, 21 мар 2011, 08:22

0 Пользователей и 1 гость просматривают эту тему.

decdmb

Имеется следующая ТабЧасть:

Ссылка     |    НаименовПараметра    |    ЗначениеПараметра
-------------------------------------------------------------------------
ГАЙКА1     |      Наименование          |        Гайка1
ГАЙКА1     |      Стандарт                  |        ГОСТ1
ГАЙКА1     |      Стадия                     |        Разработка
ГАЙКА1     |      Состояние                |        В разработке
ГАЙКА2     |      Наименование          |        Гайка2
ГАЙКА2     |      Стандарт                  |        ГОСТ2
ГАЙКА2     |      Стадия                     |        Разработка
ГАЙКА2     |      Состояние                |        В разработке

Подскажите как выбрать из данной таблицы определенные параметры,
чтобы получить следующую таблицу:

Ссылка     |    Наименование    |         Стадия          |        Стандарт
--------------------------------------------------------------------------------
ГАЙКА1     |     Гайка1              |         Разработка    |     ГОСТ1     
ГАЙКА2     |     Гайка2              |         Разработка    |     ГОСТ2


Количество параметров выбирается пользователем.
Заранее благодарен!

Klyacksa

Берем нашу таблицу 4 раза - в каждой ставим условие на соответствующее НаименованиеПараметра и соединяем их по полю Ссылка.

Что-то типа:
Запрос.Текст="
ВЫБРАТЬ
      Таблица1.ЗначениеПараметра КАК Наименование,
      Таблица2.ЗначениеПараметра КАК Стандарт,
      Таблица3.ЗначениеПараметра КАК Стадия,
      Таблица4.ЗначениеПараметра КАК Состояние
ИЗ
    ИЗ
Справочник.Таблица1 КАК таблица1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Таблица КАК Таблица2
ПО Таблица1.Ссылка = Таблица2.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Таблица КАК Таблица3
ПО Таблица1.Ссылка = Таблица3.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Таблица КАК Таблица4
ПО Таблица1.Ссылка = Таблица4.Ссылка
ГДЕ
Таблица1.НаименованиеПараметра = ""Наименование""
И Таблица2.НаименованиеПараметра = ""Стандарт""
И Таблица3.НаименованиеПараметра = ""Стадия""
И Таблица4.НаименованиеПараметра = ""Состояние""";
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

decdmb

Берем нашу таблицу 4 раза - в каждой ставим условие на соответствующее НаименованиеПараметра и соединяем их по полю Ссылка.
Задача немного сложнее потому, что количество и наименование параметров, которые надо выбрать, становиться известно только при выборе пользователем.
Я пока вижу только один выход  - генерировать текст запроса в зависимости от выбора пользователя, но кажется что это дело не благодарное....

Klyacksa

Ну почему же))) Можно и динамически собирать текст запроса, такое тоже иногда бывает.
А вообще, вопрос - зачем именно а таком формате? Как потом будет обрабатываться эта таблица?

Можно сделать проще - сгруппировать записи по полю "Ссылка", тогда получится вывод формата:

Ссылка           |    НаименовПараметра    |    ЗначениеПараметра
-------------------------------------------------------------------------
ГАЙКА1     
     ГАЙКА1     |      Наименование          |        Гайка1
     ГАЙКА1     |      Стандарт                  |        ГОСТ1
     ГАЙКА1     |      Стадия                     |        Разработка
     ГАЙКА1     |      Состояние                |        В разработке
ГАЙКА2     
     ГАЙКА2     |      Наименование          |        Гайка2
     ГАЙКА2     |      Стандарт                  |        ГОСТ2
     ГАЙКА2     |      Стадия                     |        Разработка
     ГАЙКА2     |      Состояние                |        В разработке

Выбираем тогда по группировкам данные, и обрабатываем:

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


И не надо запрос динамически собирать :)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

decdmb

Цитата: Klyacksa от 21 мар 2011, 10:09
А вообще, вопрос - зачем именно а таком формате? Как потом будет обрабатываться эта таблица?
Из данных, полученных в данном виде:
Ссылка     |    Наименование    |         Стадия          |        Стандарт
--------------------------------------------------------------------------------
ГАЙКА1     |     Гайка1              |         Разработка    |     ГОСТ1     
ГАЙКА2     |     Гайка2              |         Разработка    |     ГОСТ2

Необходимо отобрать изделия с одинаковыми параметрами ( параметры - которые выбрал пользователь).

Цитата: Klyacksa от 21 мар 2011, 10:09
Выбираем тогда по группировкам данные, и обрабатываем
Выглядит и правда просто, спасибо большое за помощь!!!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск