Имя: Пароль:
1C
1С v8
Помощь с запросом
0 gr0ck
 
06.10.11
21:11
Помогите с запросом, плиз:)
Есть запрос, который нам возвращает такую таблицу
Период, Измерение1, Измерение2, Измерение3, + ресурсы
Например
23.09 Объект1, Устройство1, Тип1
23.09 Объект1, Устройство1, Тип2
23.09 Объект1, Устройство1, Тип3

24.09 Объект1, Устройство2, Тип1
24.09 Объект1, Устройство2, Тип2

24.09. Объект2, Устройство2, Тип1
24.09 Объект2, Устройство2, Тип2
24.09 Объект2, Устройство2, Тип3

И нужно еще одно поле добавить, которое автоматически будет рассчитываться
Период, Измерение1, Измерение2, Измерение3, + ресурсы, НОМЕР
23.09 Объект1, Устройство1, Тип1    ,1
23.09 Объект1, Устройство1, Тип2    ,1
23.09 Объект1, Устройство1, Тип3    ,1

24.09 Объект1, Устройство2, Тип1    ,2
24.09 Объект1, Устройство2, Тип2    ,2

24.09. Объект2, Устройство2, Тип1,   3
24.09 Объект2, Устройство2, Тип2,    3
24.09 Объект2, Устройство2, Тип3,    3

Чет под вечер туго соображаю...
1 Wingless
 
06.10.11
21:22
Для СКД - вывести номер по порядку в иерархии, группировка - объект+устройство.
В запросе - курить Книга знаний: v8: Нумерация строк в запросе
2 azernot
 
06.10.11
23:04
Уж не знаю, почему приспичило получить нумерацию именнно в запросе (при достаточном количество объектов/устройств гораздо оптимальнее пронумеровать позже уже результат), но вот пример запроса как это можно реализовать (Регистр продаж - просто как источник данных, на его месте может быть что угодно):

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

СГРУППИРОВАТЬ ПО
   Продажи.Период,
   Продажи.Склад,
   Продажи.Контрагент,
   Продажи.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
   ТаблицаДетальныхЗаписей.Объект,
   ТаблицаДетальныхЗаписей.Устройство КАК Устройство
ПОМЕСТИТЬ УстройстваОбъекты
ИЗ
   ТаблицаДетальныхЗаписей КАК ТаблицаДетальныхЗаписей
;

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

СГРУППИРОВАТЬ ПО
   УстройстваОбъекты.Объект,
   УстройстваОбъекты.Устройство
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТаблицаДетальныхЗаписей.Период,
   ТаблицаДетальныхЗаписей.Объект КАК Объект,
   ТаблицаДетальныхЗаписей.Устройство КАК Устройство,
   ТаблицаДетальныхЗаписей.Тип КАК Тип,
   ТаблицаДетальныхЗаписей.Количество,
   НумерацияОбъектов.НомерСвязки КАК НомерСвязки
ИЗ
   ТаблицаДетальныхЗаписей КАК ТаблицаДетальныхЗаписей
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ НумерацияОбъектов КАК НумерацияОбъектов
       ПО ТаблицаДетальныхЗаписей.Объект = НумерацияОбъектов.Объект
           И ТаблицаДетальныхЗаписей.Устройство = НумерацияОбъектов.Устройство

УПОРЯДОЧИТЬ ПО
   НомерСвязки,
   Объект,
   Устройство
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.