|
|
КА 2 - Не работает упорядочивание по номеру договора
Unbandigen, Климов Сергей, Мультук, Гипервизор, АгентБезопаснойНацио, evgen48, maxar, d4rkmesa, bolder, paramedic, shuhard, Homer, boev82, Калиостро, Krendel, 1cVandal, vbus
| ☑ |
|
0
Unbandigen
05.02.26
✎
15:27
|
Запрос:
ВЫБРАТЬ
ДоговорыКонтрагентов.Номер КАК Номер,
ДоговорыКонтрагентов.Контрагент КАК Контрагент
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
ДоговорыКонтрагентов.Контрагент = &Контрагент
УПОРЯДОЧИТЬ ПО
ДоговорыКонтрагентов.Номер ВОЗР
Выдает:
Номер Контрагент
11 База "Электротовары"
5 База "Электротовары"
9 База "Электротовары"
Почему не работает упорядочивание? Я потестил, 10 тоже считает меньше 5 и т.д. Если вместо 11 указать 8, то норм все упорядочит.
|
|
|
1
Unbandigen
05.02.26
✎
15:26
|
Пробовал также зайти через "строки", то же самое.
ВЫБРАТЬ
"йоу" + ДоговорыКонтрагентов.Номер + "!!!" КАК Номер,
ДоговорыКонтрагентов.Контрагент КАК Контрагент
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
ДоговорыКонтрагентов.Контрагент = &Контрагент
УПОРЯДОЧИТЬ ПО
"йоу" + ДоговорыКонтрагентов.Номер + "!!!" ВОЗР
Номер Контрагент
йоу11!!! База "Электротовары"
йоу5!!! База "Электротовары"
йоу9!!! База "Электротовары"
|
|
|
2
Мультук
гуру
05.02.26
✎
15:32
|
(0)
ВЫБРАТЬ
ДоговорыКонтрагентов.Номер КАК Номер,
ТипЗначения(ДоговорыКонтрагентов.Номер) КАК НомерТип,
ДоговорыКонтрагентов.Контрагент КАК Контрагент
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
ДоговорыКонтрагентов.Контрагент = &Контрагент
УПОРЯДОЧИТЬ ПО
ДоговорыКонтрагентов.Номер ВОЗР
Если в НомерТип написано "строка", то
google:
Как работает сортировка строк
|
|
|
3
shuhard
05.02.26
✎
15:32
|
(0) 0 пробовал слева присобачить ?
|
|
|
4
Unbandigen
05.02.26
✎
15:37
|
(2) Да, это строки. Бывают коды в буквами. Какие пути решения?
(3) Нет. Но, я думаю, это будет временным решением, ведь я решу проблему для десятков, а потом пойдут сотни и т.д.
|
|
|
5
shuhard
05.02.26
✎
15:39
|
(4) строки должны иметь равную длину
в них не должно быть не бланкированных нулей
|
|
|
6
Unbandigen
05.02.26
✎
15:41
|
(5) понятно.
Но люди так не работают. Они ведут произвольно нумерацию договоров: 2, 12, ГБ1, 4.
И хотят, чтобы на выход в отчете упорядочивалось как: 2, 4, 12, ГБ1.
|
|
|
7
Гипервизор
05.02.26
✎
16:06
|
(6) Странные люди просят странного.
Это требует странных решений:
// Исходные данные
ВЫБРАТЬ "2" КАК НомерДоговора ПОМЕСТИТЬ ВТ_Договоры ОБЪЕДИНИТЬ
ВЫБРАТЬ "12" ОБЪЕДИНИТЬ
ВЫБРАТЬ "ГБ1" ОБЪЕДИНИТЬ
ВЫБРАТЬ "4";
// Табличку предварительно собираем в коде и передаем в запрос
ВЫБРАТЬ 1 КАК ДлинаСтроки, "0000" КАК Префикс ПОМЕСТИТЬ ВТ_Префиксы ОБЪЕДИНИТЬ
ВЫБРАТЬ 2, "000" ОБЪЕДИНИТЬ
ВЫБРАТЬ 3, "00" ОБЪЕДИНИТЬ
ВЫБРАТЬ 4, "0" ОБЪЕДИНИТЬ
ВЫБРАТЬ 5, "";
ВЫБРАТЬ
ВТ_Договоры.НомерДоговора,
ВТ_Префиксы.Префикс + ВТ_Договоры.НомерДоговора КАК ПолеДляСортировки
ИЗ
ВТ_Договоры КАК ВТ_Договоры
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Префиксы КАК ВТ_Префиксы
ПО (ДЛИНАСТРОКИ(ВТ_Договоры.НомерДоговора) = ВТ_Префиксы.ДлинаСтроки)
УПОРЯДОЧИТЬ ПО
ПолеДляСортировки
|
|
|
8
АгентБезопасной Нацио
05.02.26
✎
16:14
|
ВЫБРАТЬ
ВТ.Поле1 КАК ПолеПредставление,
ВЫРАЗИТЬ(ПРАВ(" " + ВТ.Поле1, 5) КАК СТРОКА(5)) КАК ПолеДляСортировки
ПОМЕСТИТЬ ВТ_1
ИЗ
ВТ КАК ВТ
;
ВЫБРАТЬ
ВТ_1.ПолеПредставление КАК ПолеПредставление,
ВТ_1.ПолеДляСортировки КАК ПолеДляСортировки
ИЗ
ВТ_1 КАК ВТ_1
УПОРЯДОЧИТЬ ПО
ВТ_1.ПолеДляСортировки
|
|
|
9
d4rkmesa
05.02.26
✎
16:23
|
(0) Добавьте в сам справочник договоров реквизит для сортировки. Можно сделать и в запросе, но будет громоздко, т.к. длина реквизита Номер равно 128. В СКД и предобработке несколько проще можно сделать.
|
|
|
10
Гипервизор
05.02.26
✎
16:26
|
(8) 👍
|
|
|
11
Unbandigen
05.02.26
✎
16:37
|
(8) потрясающе. Спасибо!
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший