Имя: Пароль:
1C
1C 7.7
v7: Как упорядочить по двум реквизитам
0 Ночной Эльф
 
06.08.12
09:15
Доброго времени суток. Имеется запрос

ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |Обрабатывать НеПомеченныеНаУдаление;
   |НомерДок = Документ.ЗаданиеНаИзготовление.НомерДок;
   |Ширина = Документ.ЗаданиеНаИзготовление.Ширина;
   |Длина = Документ.ЗаданиеНаИзготовление.Длина;
   |Контрагент = Документ.ЗаданиеНаИзготовление.Контрагент;
   |ФактДатаВыполнения = Документ.ЗаданиеНаИзготовление.ФактДатаВыполнения;
   |ДатаВыполнения = Документ.ЗаданиеНаИзготовление.ДатаВыполнения;
   |Номенклатура = Документ.ЗаданиеНаИзготовление.Номенклатура;
   |ВидТипаПечати = Документ.ЗаданиеНаИзготовление.ВидТипаПечати;
   |ФактДатаРаботы = Документ.ЗаданиеНаИзготовление.ФактДатаРаботы;
   |ВремяВыполнения = Документ.ЗаданиеНаИзготовление.ВремяВыполнения;
   |Количество = Документ.ЗаданиеНаИзготовление.Количество;
   |Разрешение180 = Документ.ЗаданиеНаИзготовление.Разрешение180;
   |Разрешение360 = Документ.ЗаданиеНаИзготовление.Разрешение360;
   |Менеджер = Документ.ЗаданиеНаИзготовление.Автор;
   |ВидОперации = Документ.ЗаданиеНаИзготовление.ВидОперации;
   |ЗаданиеНаИзготовление = Документ.ЗаданиеНаИзготовление.ТекущийДокумент;
   |ДатаДок = Документ.ЗаданиеНаИзготовление.ДатаДок;
   |Группировка ЗаданиеНаИзготовление упорядочить по ЗаданиеНаИзготовление.ДатаВыполнения;
   |Группировка СтрокаДокумента упорядочить по СтрокаДокумента.ВидТипаПечати;
   |Условие(ВидОперации = Перечисление.ВидыОперацийЗаданиеНаИзготовление.ЗаданиеНаИзготовление);
   |"//}}ЗАПРОС
   ;

Выдает ошибку на

|Группировка СтрокаДокумента упорядочить по СтрокаДокумента.ВидТипаПечати;

Как упорядочить в данном случае по реквизиту ВидТипаПечати табличной части документа ЗаданиеНаИзготовление?

Пробовал и так

|Группировка ЗаданиеНаИзготовление упорядочить по ЗаданиеНаИзготовление.ДатаВыполнения, ВидТипаПечати;

Тоже выдает ошибку.

Как это сделать?
Всем заранее спасибо
1 Ночной Эльф
 
06.08.12
09:18
Причем сортировка  ЗаданиеНаИзготовление.ДатаВыполнения должна также остаться и должна быть главной
2 Ночной Эльф
 
06.08.12
09:27
добавил строку

|Группировка ВидТипаПечати упорядочить по ЗаданиеНаИзготовление.ВидТипаПечати;

Все равно ошибку выдает как упорядочить по этому реквизиту не пойму
3 Ночной Эльф
 
06.08.12
09:36
ПОднял
4 Ёпрст
 
06.08.12
09:38
(0) наслаждайся
    ................

   |НомерСтроки= Документ.ЗаданиеНаИзготовление.НомерСтроки;
   |Функция ФункцияДляСортировки = Сумма(ВидТипаПечати);
   |Группировка ЗаданиеНаИзготовление упорядочить по ЗаданиеНаИзготовление.ДатаВыполнения;
   |Группировка НомерСтроки упорядочить по ФункцияДляСортировки;
   |"//}}ЗАПРОС
5 Ночной Эльф
 
06.08.12
09:42
все равно вот такую ошибку выдает

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Документ.ЗаданиеНаИзготовление.Форма.Модуль(2784)}: Группировка ВидТипаПечати упорядочить по  <<?>> ЗаданиеНаИзготовление.ВидТипаПечати;
Запрос[22] : Ожидается конкретизация переменной 'ВидТипаПечати'
6 Ночной Эльф
 
06.08.12
09:42
незнаю имеет значение нет но реквизит ВидТипаПечати это ссылка на справочник
7 Ёпрст
 
06.08.12
09:51
(5) олё.. ты (4) сделал ?
8 Ночной Эльф
 
06.08.12
09:54
да сделал выдавала ошибку которую я написал после того как сделал вот такую строку

|Функция ФункцияДляСортировки = Сумма(ВидТипаПечати.Наименование);

ошибку перестало выдавать но не сортерует
9 Скользящий
 
06.08.12
09:54
Если с запросом траблы, обычно проще выгрузить результаты запроса в ТЗ и там отсортировать по вкусу. )
10 Ёпрст
 
06.08.12
09:55
(8) Хватит заниматься отсебятиной.
Скопируй (4) и не ипи мозги - там всё работает.
11 Ночной Эльф
 
06.08.12
09:55
(9) тут очень важный критерий время выполнения поэтому только запрос
12 Ночной Эльф
 
06.08.12
09:56
(10) вот смотри как выглядит окончательный запрос

ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |Обрабатывать НеПомеченныеНаУдаление;
   |НомерДок = Документ.ЗаданиеНаИзготовление.НомерДок;
   |Ширина = Документ.ЗаданиеНаИзготовление.Ширина;
   |Длина = Документ.ЗаданиеНаИзготовление.Длина;
   |Контрагент = Документ.ЗаданиеНаИзготовление.Контрагент;
   |ФактДатаВыполнения = Документ.ЗаданиеНаИзготовление.ФактДатаВыполнения;
   |ДатаВыполнения = Документ.ЗаданиеНаИзготовление.ДатаВыполнения;
   //|ПлановоеВремяВыполнения = Документ.ЗаданиеНаИзготовление.ПлановоеВремяВыполнения;
   |Номенклатура = Документ.ЗаданиеНаИзготовление.Номенклатура;
   |ВидТипаПечати = Документ.ЗаданиеНаИзготовление.ВидТипаПечати;
   |ФактДатаРаботы = Документ.ЗаданиеНаИзготовление.ФактДатаРаботы;
   |ВремяВыполнения = Документ.ЗаданиеНаИзготовление.ВремяВыполнения;
   |Количество = Документ.ЗаданиеНаИзготовление.Количество;
   |Разрешение180 = Документ.ЗаданиеНаИзготовление.Разрешение180;
   |Разрешение360 = Документ.ЗаданиеНаИзготовление.Разрешение360;
   |Менеджер = Документ.ЗаданиеНаИзготовление.Автор;
   |ВидОперации = Документ.ЗаданиеНаИзготовление.ВидОперации;
   |ЗаданиеНаИзготовление = Документ.ЗаданиеНаИзготовление.ТекущийДокумент;
   |ДатаДок = Документ.ЗаданиеНаИзготовление.ДатаДок;
   |НомерСтроки= Документ.ЗаданиеНаИзготовление.НомерСтроки;
   |Функция ФункцияДляСортировки = Сумма(ВидТипаПечати.Наименование);
   |Группировка ЗаданиеНаИзготовление упорядочить по ЗаданиеНаИзготовление.ДатаВыполнения;
   |Группировка НомерСтроки упорядочить по ФункцияДляСортировки;
   |Условие(ВидОперации = Перечисление.ВидыОперацийЗаданиеНаИзготовление.ЗаданиеНаИзготовление);
   |"//}}ЗАПРОС
   ;
13 Ёпрст
 
06.08.12
09:57
(12) биомать а ?
Подарить клавиши копи-пасте ?

//  |Функция ФункцияДляСортировки = Сумма(ВидТипаПечати.Наименование);  
|Функция ФункцияДляСортировки = Сумма(ВидТипаПечати);
14 Светлый Гений
 
06.08.12
09:59
(11) Если время выполнения очень важно, то лучше использовать прямые запросы.
15 Ночной Эльф
 
06.08.12
10:00
(13) хорошо поставил я строку

|Функция ФункцияДляСортировки = Сумма(ВидТипаПечати);

но все равно тот же результат нет сортировки, я просто не пойму причем тут Сумма(
16 Ёпрст
 
06.08.12
10:01
(15) врешь ведь.
17 Ёпрст
 
06.08.12
10:01
показывай, как результат смотришь и где ты видишь, что не упорядочивает
18 Ночной Эльф
 
06.08.12
10:05
вот как

СегодняшняяДата = ТекущаяДата();
   ВыбНачПериода = СегодняшняяДата - 14;
   //Сообщить(ВыбНачПериода);
   ВыбКонПериода = СегодняшняяДата + 14;
   //Сообщить(ВыбКонПериода);
   Запрос = СоздатьОбъект("Запрос");
   
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |Обрабатывать НеПомеченныеНаУдаление;
   |НомерДок = Документ.ЗаданиеНаИзготовление.НомерДок;
   |Ширина = Документ.ЗаданиеНаИзготовление.Ширина;
   |Длина = Документ.ЗаданиеНаИзготовление.Длина;
   |Контрагент = Документ.ЗаданиеНаИзготовление.Контрагент;
   |ФактДатаВыполнения = Документ.ЗаданиеНаИзготовление.ФактДатаВыполнения;
   |ДатаВыполнения = Документ.ЗаданиеНаИзготовление.ДатаВыполнения;
   //|ПлановоеВремяВыполнения = Документ.ЗаданиеНаИзготовление.ПлановоеВремяВыполнения;
   |Номенклатура = Документ.ЗаданиеНаИзготовление.Номенклатура;
   |ВидТипаПечати = Документ.ЗаданиеНаИзготовление.ВидТипаПечати;
   |ФактДатаРаботы = Документ.ЗаданиеНаИзготовление.ФактДатаРаботы;
   |ВремяВыполнения = Документ.ЗаданиеНаИзготовление.ВремяВыполнения;
   |Количество = Документ.ЗаданиеНаИзготовление.Количество;
   |Разрешение180 = Документ.ЗаданиеНаИзготовление.Разрешение180;
   |Разрешение360 = Документ.ЗаданиеНаИзготовление.Разрешение360;
   |Менеджер = Документ.ЗаданиеНаИзготовление.Автор;
   |ВидОперации = Документ.ЗаданиеНаИзготовление.ВидОперации;
   |ЗаданиеНаИзготовление = Документ.ЗаданиеНаИзготовление.ТекущийДокумент;
   |ДатаДок = Документ.ЗаданиеНаИзготовление.ДатаДок;
   |НомерСтроки= Документ.ЗаданиеНаИзготовление.НомерСтроки;
   |Функция ФункцияДляСортировки = Сумма(ВидТипаПечати);
   |Группировка ЗаданиеНаИзготовление упорядочить по ЗаданиеНаИзготовление.ДатаВыполнения;
   |Группировка НомерСтроки упорядочить по ФункцияДляСортировки;
   //|Группировка СтрокаДокумента;
   //|Условие(ПустоеЗначение(ФактДатаРаботы) = 1);
   |Условие(ВидОперации = Перечисление.ВидыОперацийЗаданиеНаИзготовление.ЗаданиеНаИзготовление);
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;
   
   
   
   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("ГрафикПечати");

   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   
   Пока Запрос.Группировка(1) = 1 Цикл
       Пока Запрос.Группировка(2) = 1 Цикл
           Таб.ВывестиСекцию("тест");        
       КонецЦикла;
   КонецЦикла;


где секция "тест"

Запрос.Номенклатура        Запрос.ЗаданиеНаИзготовление            Запрос.ДатаВыполнения    Запрос.НомерСтроки        Запрос.ВидТипаПечати

Так вот по этому Запрос.ДатаВыполнения он отсортирован, а Запрос.ВидТипаПечати выводит также как и в документе в том же порядоке, а по идее с новой датой должены идти одни и те же значения, но они разбросаны как я уже и  говорил в точности как и вдокументе
19 Ночной Эльф
 
06.08.12
10:07
Может для ссылки на справочник как то по другому сортировка осуществляется
20 Ёпрст
 
06.08.12
10:15
(19) тебе же все строки нужны ?
Придется тогда свою внешнюю функцию писать, которая хеш строки сделает для правилтьной сортировки
21 Ёпрст
 
06.08.12
10:15
для перечислений, код и в (4) годится, для справочников не смотрел еще
22 Ночной Эльф
 
06.08.12
10:22
Сейчас попробую за место справочник поставить перечесление посмотрим что получится, а то с перечеслением и лучше будет