Имя: Пароль:
1C
1С v8
Помогите с запросом, не могу получить ссылку на максимальное значение
0 Александр Игоревич
 
13.08.14
11:57
Есть талица
Номенклатура|Дата|Работа

Есть Справочник ГФ_ГруппыАвтотранспортаМатериалы
и в табличной части его есть таблица
Номенклатура|Вместимость

я хочу получить итоговую таблицу
Номенклатура|Дата|Работа|Вместимость(максимальная)|СсылнаНаСпрГФ_ГруппыАвтотранспортаМатериалы

для этого я строю запрос, как указал выше, но лучшее что я получаю это

Номенклатура|Дата|Работа|Вместимость(максимальная)

Если в запрос добавлю поле ссылка на спр. то я получу несколько значенией

Номенклатура|Дата|Работа|Вместимость(не максимальное)|СсылнаНаСпрГФ_ГруппыАвтотранспортаМатериалы
Номенклатура|Дата|Работа|Вместимость(максимальная)|СсылнаНаСпрГФ_ГруппыАвтотранспортаМатериалы

Вот мой запрос:
[CODE]
ВЫБРАТЬ      
МатериалыВрем.ДатаНач,      
МатериалыВрем.Работа,      
МатериалыВрем.Количество,      
МатериалыВрем.Номенклатура КАК Номенклатура,      
МАКСИМУМ(ГФ_ГруппыАвтотранспортаМатериалы.Вместимость) КАК Вместимость,      


ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГФ_ГруппыАвтотранспорта.Материалы КАК ГФ_ГруппыАвтотранспортаМатериалы            
ПО (ГФ_ГруппыАвтотранспортаМатериалы.Номенклатура = МатериалыВрем.Номенклатура)


СГРУППИРОВАТЬ ПО      
МатериалыВрем.ДатаНач,      
МатериалыВрем.Работа,      
МатериалыВрем.Количество,      
МатериалыВрем.Номенклатура

УПОРЯДОЧИТЬ ПО      Номенклатура

[/CODE]
1 Chum
 
13.08.14
12:07
с учетом моих слабых познаний порекомендую позапрос к таблице вместимостей, которую сортируть по убываю и вытаскивать из нее Top 1.
2 Ymryn
 
13.08.14
12:12
(0) как кривой вариант могу предложить следующее

(Выбрать
    ТаблицаВместимости.Номенклатура,
    ТаблицаВместимости.Вместимость,
    ТаблицаВместимости.Ссылка как СпрГФ
Поместить ТаблицаДляОбработки
ИЗ
...    
Внутреннее СОЕДИНЕНИЕ Справочник.ГФ_ГруппыАвтотранспорта.Материалы КАК ТаблицаВместимости            
ПО (ТаблицаВместимости.Номенклатура = МатериалыВрем.Номенклатура)
;
////////////////////////////////////////////////////
Выбрать
    ТаблицаМаксимума.Номенклатура,
    ТаблицаМаксимума.Вместимость,
    Максимум(ТаблицаДляОбработки.СпрГФ) как СпрГФ
Поместить СпрГФПоНоменклатуре
Из
  (Выбрать
    ТаблицаДляОбработки.Номенклатура,
    Максимум(ТаблицаДляОбработки.Вместимость) как Вместимость
  ИЗ
    ТаблицаДляОбработки как ТаблицаДляОбработки
  Сгруппировать ПО
    ТаблицаДляОбработки.Номенклатура) как ТаблицаМаксимума
  ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаДляОбработки как ТаблицаДляОбработки
  ПО ТаблицаМаксимума.Номенклатура = ТаблицаДляОбработки.Номенклатура
     И ТаблицаМаксимума.Вместимость = ТаблицаДляОбработки.Вместимость
Сгруппировать ПО
   ТаблицаМаксимума.Номенклатура,
   ТаблицаМаксимума.Вместимость
;
////////////////////////////////////////////////////////////

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

Возможно есть более красивое решение, но я не смог его придумать.
3 Ненавижу 1С
 
гуру
13.08.14
12:14
я бы рекомендовал перепроектировать структуру таблиц
4 User_Agronom
 
13.08.14
12:17
Я вчера подобное делал.
Выборка из регистра сведений

Всё просто: во временной таблице сформируй максимальную вместимость. И соединением её к основной.
5 Александр Игоревич
 
13.08.14
12:34
(4) Спасибо, так и сделаю, но как вы думаете это наиболее быстрое решение?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший