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

Использование полей из не связанных наборов данных не допустимо

Автор МолчановАнтон, 10 июн 2016, 11:33

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

МолчановАнтон

Добрый день!
Пытаюсь сформировать отчет на основе документа уатЗаявкиНаРемонт
Через конструктор запросов добавляю нужные мне поля

ВЫБРАТЬ
   уатЗаявкаНаРемонт.ВидОборудования КАК НаименованиеОборудования,
   уатЗаявкаНаРемонт.Наработка КАК НаработкаДоТО,
   уатЗаявкаНаРемонт.Одометр КАК НаработкаПриПостановкеНаРемонт,
   уатЗаявкаНаРемонт.ТС.Модель.Наименование КАК МодельТС,
   уатЗаявкаНаРемонт.ВидОбслуживания.Наименование КАК ВидРемонта,
   уатЗаявкаНаРемонт.ДатаНачала КАК ДатаНачалаРемонта,
   уатЗаявкаНаРемонт.ДатаОкончания КАК ДатаОкончанияРемонта,
   уатЗаявкаНаРемонт.Работы.(
      СУММА(Количество)
   ) КАК ВремяВРемонте,
   уатЗаявкаНаРемонт.Материалы.(
      СУММА(Количество)
   ),
   уатЗаявкаНаРемонт.Трудозатраты.(
      СУММА(Человекочасы)
   )
ИЗ
   Документ.уатЗаявкаНаРемонт КАК уатЗаявкаНаРемонт

При формировании отчета выскакивает ошибка: Использование полей из не связанных наборов данных не допустимо
Подскажите пожалуйста что я делаю не так?

mixqn

Цитата: МолчановАнтон от 10 июн 2016, 11:33уатЗаявкаНаРемонт.Работы.(
      СУММА(Количество)
   ) КАК ВремяВРемонте,
никогда не использовал подобные конструкции, поэтому предположу, что дело может быть в этом. попробуйте написано нормальное левое соединение и нормальные группировки без вложенных конструкций

МолчановАнтон

У меня одна таблица, как можно сделать левое соединение?
Цитата: mixqn от 10 июн 2016, 11:40
Цитата: МолчановАнтон от 10 июн 2016, 11:33уатЗаявкаНаРемонт.Работы.(
      СУММА(Количество)
   ) КАК ВремяВРемонте,
никогда не использовал подобные конструкции, поэтому предположу, что дело может быть в этом. попробуйте написано нормальное левое соединение и нормальные группировки без вложенных конструкций

mixqn

:D
ну как это одна?
у вас их на секундочку 4!!!
1. Документ.уатЗаявкаНаРемонт
2. Документ.уатЗаявкаНаРемонт.Работы
3. Документ.уатЗаявкаНаРемонт.Материалы
4. Документ.уатЗаявкаНаРемонт.Трудозатраты
Добавлено: 10 июн 2016, 11:54


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

МолчановАнтон

Получилось!
Подробно и грамотно всё объяснили по шагам, спасибо!
Выводит в таком виде в каком нужно, только суммирует неправильно
РемонтРаботы.Количество = 31,200 (вместо 7,800)
РемонтМатериалы.Количество = 112,000 (вместо 7)
РемонтТрудозатраты.Человекочасы = 64,000 (вместо 4)

Цитата: mixqn от 10 июн 2016, 11:54
:D
ну как это одна?
у вас их на секундочку 4!!!
1. Документ.уатЗаявкаНаРемонт
2. Документ.уатЗаявкаНаРемонт.Работы
3. Документ.уатЗаявкаНаРемонт.Материалы
4. Документ.уатЗаявкаНаРемонт.Трудозатраты
Добавлено: 10 июн 2016, 11:54


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

Kironten

Некорректные соединения
Наплодилось полей.
В первом случае кратность 4 во втором и третьем 16000.
Показывайте как соединили

МолчановАнтон

Связал так:





Цитата: Kironten от 10 июн 2016, 13:45
Некорректные соединения
Наплодилось полей.
В первом случае кратность 4 во втором и третьем 16000.
Показывайте как соединили
Добавлено: 14 июн 2016, 07:16


Не понимаю как правильно сгрупировать данные, у меня получается что данные дублируются в каждой строке - не понимаю как этого избежать? Подскажите пожалуйста


mixqn

Смотрите, при таком написании запроса работать будет следующим образом:
1. берется одна строка из основной таблицы Документ.уатЗаявкаНаРемонт
2. к ней слева добавляются все строки - Документ.уатЗаявкаНаРемонт.Работы. допустим, там таковых 3. получаем уже 3 строки
3. к результату шага 2 слева добавляются все строки из таблицы Документ.уатЗаявкаНаРемонт.Материалы. допустим, там их еще 2. на этом шаге общее количество строк 6.
4. к результату шага 3 слева присоединяются все строки таблицы Документ.уатЗаявкаНаРемонт.Трудозатраты. допустим, их там еще 3. на выходе имеем 18 строк.

отсюда и ваши проблемы.

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

Теги:

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

Рейтинг@Mail.ru

Поиск