Имя: Пароль:
1C
 
Как заставить сортироваться типы в запросе по имени?
,
0 TormozIT
 
гуру
10.01.16
19:28
Есть 2 базы 1С с одинаковыми конфигурациями и данными. Есть запрос "ВЫБРАТЬ РАЗЛИЧНЫЕ Т.Регистратор ИЗ <Регистр> КАК Т УПОРЯДОЧИТЬ ПО Т.Регистратор". Он выдает документы в разном порядке, т.к. типы запросе сортируются по внутреннему номеру, который в разных базах независимо генерируется. Как заставить сортироваться типы в одинаковом порядке, не меняя конфигурацию БД?
1 Ник второй
 
10.01.16
19:30
Сортируй по дате
2 Ник второй
 
10.01.16
19:30
(1) + по номеру..
3 TormozIT
 
гуру
10.01.16
19:32
Обращение через точку к любым полям даст огромное количество неявных левых соединений. Этого хотелось бы избежать.
4 RomanYS
 
10.01.16
19:34
ВЫБРАТЬ
    Хозрасчетный.Регистратор,
    ТИПЗНАЧЕНИЯ(Хозрасчетный.Регистратор) КАК Поле1
ИЗ
    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный

УПОРЯДОЧИТЬ ПО
    Поле1?
5 Ник второй
 
10.01.16
19:34
(3) Так тебе сортировать или через точки не делать соединения
6 RomanYS
 
10.01.16
19:35
(3)
"УПОРЯДОЧИТЬ ПО
    Регистратор
АВТОУПОРЯДОЧИВАНИЕ"

тоже соединения создает?
7 ДенисЧ
 
10.01.16
19:35
УПОРЯДОЧИТЬ ПО ТипЗначения(Т.Регистратор) ?
8 TormozIT
 
гуру
10.01.16
19:38
Выражение ТипЗначения(Т.Регистратор) внутри платформы превращается в тот же номер типа и дает тот же порядок.
АВТОУПОРЯДОЧИВАНИЕ конечно тоже делает неявные соединения.
9 Ник второй
 
10.01.16
19:39
(8) Ну сделай ты через Объединить запросы и сортируй как нравится
10 Ник второй
 
10.01.16
19:40
(9) + Либо грузи в ТЗ и ТЗ уже сортируй по представлению
11 H A D G E H O G s
 
10.01.16
19:43
автор как будто специально не видит годных ответов.
12 RomanYS
 
10.01.16
19:44
(11) Похоже ждёт чуда)
13 TormozIT
 
гуру
10.01.16
19:44
Самый годный ответ пока мой -
ЛЕВОЕ СОЕДИНЕНИЕ с собственной таблицей типов (ТИП, ИМЯ)
14 TormozIT
 
гуру
10.01.16
19:45
(13) Но таблицу типов придется генерировать во встроенном языке. В моем случае это приемлемо.
15 RomanYS
 
10.01.16
19:46
(13) чтобы соединить по типу его придется получить, а "типЗначения" тебе не нравится.
16 TormozIT
 
гуру
10.01.16
19:47
(15) Где я писал, что его нельзя использовать? Я лишь писал что сортировка по нему дает тот же порядок.
17 RomanYS
 
10.01.16
19:55
(16) ну тогда делай (13), непонятно каких ответов ещё ты ожидаешь
18 TormozIT
 
гуру
10.01.16
20:00
(17) Спасибо. Буду делать (13)
19 TormozIT
 
гуру
11.01.16
00:16
Пришлось писать довольно много кода для универсальной процедуры для компоновки данных. Сначала выполняется генерация текста запроса создания временной таблицы с колонками Тип, ИмяТипа. Затем основная таблица соединяется с ней для каждого поля порядка, имеющего более одного ссылочного типа. В порядке перед каждым таким полем вставляется соответствующее поле ИмяТипа из соединенной таблицы.
20 RomanYS
 
11.01.16
00:32
(19) много?
Шаблон =
"ВЫБРАТЬ
|    ТИП(Документ.Документ1) КАК Тип,
|    ""Документ1"" КАК Имя
|ПОМЕСТИТЬ ВТ
|ИЗ
|    Документ.Документ1 КАК Документ1";
ТекстЗапроса = "";
Для каждого МД Из Метаданные.Документы Цикл
    ТекстЗапроса = ТекстЗапроса + СтрЗаменить(Шаблон, "Документ1", МД.Имя);
    Шаблон = "Объединить ВСЕ "+СтрЗаменить(Шаблон, "ПОМЕСТИТЬ ВТ", "");
КонецЦикла;
21 RomanYS
 
11.01.16
00:33
*(20) строку
    Шаблон = "Объединить ВСЕ "+СтрЗаменить(Шаблон, "ПОМЕСТИТЬ ВТ", "");
надо выполнять только один раз), но кода не станет сильно больше
22 TormozIT
 
гуру
11.01.16
01:45
(20) Спасибо. А остальную реализацию алгоритма сделаешь?