helpf.pro
Регистрация

v7: Упорядочить в запросе

mik_mihka
27.11.2014 12:31Прочитано: 5475

Здравствуйте,написал запрос, установил группировки и упорядочил по дате документа, но в таблицу выводятся значения - сначала одного вида документа, потом другого. Как мне вывести в таблицу строки из запроса в порядке даты документа разных видов ?

Код 1C v 7.x
 Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = 
"//{{ЗАПРОС(вып)
|Период с НачДата по КонДата;


|ПоступлениеКонтрагент = Документ.ПоступлениеТМЦРозница.Контрагент;
|НоменклатураПоступление = Документ.ПоступлениеТМЦРозница.Номенклатура;
|ПоступлениеКодВида=Документ.ПоступлениеТМЦРозница.Номенклатура.КодПродукции.Код;
|ПоступлениеОбъем = Документ.ПоступлениеТМЦРозница.Номенклатура.Объем;
|КоличествоПоступление = Документ.ПоступлениеТМЦРозница.Количество; 
|ДатаДокВходящийПоступление = Документ.ПоступлениеТМЦРозница.ДатаДокВходящий;
|НомерДокВходящийПоступление = Документ.ПоступлениеТМЦРозница.НомерДокВходящий;




|ПродажаДатаДок = Документ.ОтчетККМ.ДатаДок;
|ПродажаНоменклатура = Документ.ОтчетККМ.Номенклатура;
|ПродажаКоличество = Документ.ОтчетККМ.Количество;
|Функция КоличествоПоступлениеСумма = Сумма(КоличествоПоступление);
|Функция ПродажаКоличествоСумма = Сумма(ПродажаКоличество);
|Группировка НоменклатураПоступление;
|Группировка ПродажаНоменклатура;

|Условие(Фирма = Фирма);
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
27.11.2014 17:18Ответ № 1

Группировку по Дате документа и упорядочивание по дате

mik_mihka
28.11.2014 07:21Ответ № 2

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

Mokey
28.11.2014 09:31Ответ № 3

Ну так вы и группируете сначала по одному виду, а потом по второму. Всё правильно отрабатывает.

mik_mihka
28.11.2014 12:44Ответ № 4
Код 1C v 7.x
 Получилось выбрать все виды документов в нужном порядке, но как теперь получить значения табличной части каждой строки?	Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса ="  
|Период с НачДата по КонДата;
    |Документы = Документ.ПоступлениеТМЦРозница.ТекущийДокумент, Документ.ОтчетККМ.ТекущийДокумент, Документ.ПеремещениеТМЦ.ТекущийДокумент, Документ.СписаниеТМЦ.ТекущийДокумент;
    |Группировка Документы;"
    ;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;


  Пока Запрос.Группировка(1)=1 Цикл  
        Если Запрос.Документы.Вид() = "ОтчетККМ" Тогда 
НомерСтроки = 0;
Запрос.Документы.ВыбратьСтроки();
Пока Запрос.Документы.ПолучитьСтроку() = 1 Цикл 
а=1; 
НомерСтроки=НомерСтроки+1;
КонецЦикла;
                Сообщить("1  "+НомерСтроки+"  "+Запрос.Документы);
 
    ИначеЕсли Запрос.Документы.Вид() = "ПоступлениеТМЦРозница"  Тогда
     Сообщить("2 "+Запрос.Документы); 
 
 ИначеЕсли Запрос.Документы.Вид() = "ПеремещениеТМЦ" Тогда
     Сообщить("3 "+Запрос.Документы); 
 
 ИначеЕсли Запрос.Документы.Вид() = "СписаниеТМЦ" Тогда
  Сообщить ("4 "+Запрос.Документы);
 
  Иначе   

   
        КонецЕсли;
      КонецЦикла;

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

Mokey
01.12.2014 10:03Ответ № 5

Давно на 7 не работал, но можно сделать так:

  Пока Запрос.Группировка(1)=1 ЦиклЕсли Запрос.Документы.Вид() = "ОтчетККМ" Тогда НомерСтроки = 0; ТекДок = Запрос.Документы.ВыбратьСтроки(); Пока ТекДок.ПолучитьСтроку() = 1 Цикл а=1; НомерСтроки=НомерСтроки+1; КонецЦикла; Сообщить("1  "+НомерСтроки+"  "+Запрос.Документы); ....[/pre]
Mokey
01.12.2014 10:08Ответ № 6

блин... вообще непонятно, как будет выглядеть сообщение, надеюсь, разберётесь. Переменной ТекДок присваиваете значение группировки. Написал непрвильно, так должно быть (когда редактировать можно будет?????):

Код 1C v 7.x
 
ТекДок = Запрос.ЗначениеГруппировки(1);
ТекДок.ВыбратьСтроки();
Пока ТекДок.ПолучитьСтроку() Цикл
и т.д.....
Mokey
01.12.2014 10:10Ответ № 7
Код 1C v 7.x
 Пока ТекДок.ПолучитьСтроку()=1 Цикл 
mik_mihka
01.12.2014 14:54Ответ № 8

Спасибо, получилось выбрать данные перебирая цикл в цикле

Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.