Имя: Пароль:
1C
1С v8
Автоупорядочивание в запросе.
0 john_ddd
 
30.01.15
12:53
Как можно сформировать этот запрос без АВТОУПОРЯДОЧИВАНИЕ, чтобы результат получился как с АВТОУПОРЯДОЧИВАНИЕм?
ВЫБРАТЬ
    ПодразделенияОрганизаций.Ссылка КАК Ссылка,
    ПодразделенияОрганизаций.Владелец КАК Владелец
ИЗ
    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций

УПОРЯДОЧИТЬ ПО
    Владелец,
    Ссылка ИЕРАРХИЯ
АВТОУПОРЯДОЧИВАНИЕ
1 Cube
 
30.01.15
12:54
(0) А что, религия запрещает?
2 Cube
 
30.01.15
12:55
А вообще, чтобы сортировалось так, как хочешь ты - сортируй по полям примитивных типов (строка, дата, булево), а не по ссылкам. И наступит у тебя счастье.
3 john_ddd
 
30.01.15
12:56
(1)нужно для скд (там нет в запросе автоупорядочивание), но скд не выводит на форму. Там потом циклами разбирается результат и выводиться в макет
4 Cube
 
30.01.15
12:57
(3) Сортировку делай в СКД и не надо лохматить бабушку.
5 john_ddd
 
30.01.15
12:58
(2) а как с простым типом данных сделать так?
Ссылка ИЕРАРХИЯ
6 Cube
 
30.01.15
13:00
(5) Никак. Поэтому читай (4).
7 john_ddd
 
30.01.15
13:01
(4) не получается.
ДеревоДанных =  Новый ДеревоЗначений;
ПроцессорВывода.УстановитьОбъект(ДеревоДанных);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

дерево потом циклами разбирается и в макет выводится.
8 Cube
 
30.01.15
13:03
(7) Если ты всё равно выводишь в макет, зачем это делаешь вручную?
9 john_ddd
 
30.01.15
13:08
(8)это типовая форма упп Т-3.
УнифицированнаяФормаТ3
мне ее надо доработать.
10 john_ddd
 
30.01.15
13:10
(0)получается никак нельзя?
11 Cube
 
30.01.15
13:21
(10) Погодь, я на память не помню. То есть, ты утверждаешь, что если выводить результат СКД в дерево, то сортировка, заданная в СКД не применяется?
12 john_ddd
 
30.01.15
13:31
(11)да
13 Cube
 
30.01.15
13:34
(12) Не верю... (с)
14 john_ddd
 
30.01.15
14:46
(13)протестируй сам, если не лень...
(0)по теме...походу нельзя?
15 Cube
 
02.02.15
07:40
(14) "протестируй сам, если не лень... "

Ну протестил - сортировка, указанная в СКД применяется и при выводе в табличный документ и при выводе в коллекцию значений.
Скрин: http://storage1.static.itmages.ru/i/15/0202/h_1422851893_3866868_f4187feb7d.png

Код:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    ДокументРезультат.Очистить();
    Макет = ПолучитьМакет("Макет");
    ОбластьЗаголовок    = Макет.ПолучитьОбласть("Заголовок");
    ОбластьСтрока        = Макет.ПолучитьОбласть("Строка");
    
    МояТЗ = Новый ТаблицаЗначений;
    МояТЗ.Колонки.Добавить("Поле1", Новый ОписаниеТипов("Строка"));
    Для Сч = 1 По 15 Цикл
        МояТЗ.Добавить().Поле1 = "Строка " + Сч;
    КонецЦикла;
    
    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("МояТЗ", МояТЗ);
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    ОбластьЗаголовок.Параметры.Текст = "В табличный документ";
    ДокументРезультат.Вывести(ОбластьЗаголовок);
    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    ОбластьЗаголовок.Параметры.Текст = "В коллекцию значений";
    ДокументРезультат.Вывести(ОбластьЗаголовок);
    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    
    ДеревоЗначений = Новый ДеревоЗначений;
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(ДеревоЗначений);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    Для Каждого СтрокаДерева Из ДеревоЗначений.Строки Цикл
        ОбластьСтрока.Параметры.Текст = СтрокаДерева.Поле1;
        ДокументРезультат.Вывести(ОбластьСтрока);
    КонецЦикла;
    
КонецПроцедуры //ПриКомпоновкеРезультата()
16 john_ddd
 
02.02.15
11:37
(15)
нужна не просто сортировка, а иерархия
http://itmages.ru/image/view/2244590/c328ddc8
17 Cube
 
02.02.15
11:41
(16) Читай (1).
Я уже доказал, что настройки СКД учитываются при построении коллекции значений. И иерархия будет такой же, как в табличном документе.
За тебя отчет написать?
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.