Есть запрос типа
|ВЫБРАТЬ
| МаркировкаТовара.Комплектность
|ИЗ
| Справочник.МаркировкаТовара КАК МаркировкаТовара
Нужно получить на выходе отсортированую таблицу по количеству символов, т.е. первыми д.б. те, у которых кол-во символов наибольшее...
Туплю, помогите, плз ...
(1) Попробуй в запросе сделать отдельное вычисляемое поле, где рассчитывается длина строки сортируемого поля. И уже потом во вкладке порядок сортировать по этому полю. Либо в увеличение, либо в уменьшение, в зависимости от надобности.
"ВЫБРАТЬ
| МаркировкаТовара.Комплектность КАК Комплектность,
| ДЛИНАСТРОКИ(МаркировкаТовара.Комплектность.Наименование) КАК СтрокаНаименования
|ИЗ
| Справочник.МаркировкаТовара КАК МаркировкаТовара
|УПОРЯДОЧИТЬ ПО
| СтрокаНаименования.ВОЗР ";
Как-то так.. Яб сделал, либо вообще можно сделать вот так, чтоб лишних данных не было если они не нужны.
СтрокаНаименования= "ДЛИНАСТРОКИ(МаркировкаТовара.Комплектность.Наименование) КАК СтрокаНаименования";
УпорядочитьПо = "СтрокаНаименования.ВОЗР";
"ВЫБРАТЬ
| МаркировкаТовара.Комплектность КАК Комплектность,
| "+СтрокаНаименования+"
|ИЗ
| Справочник.МаркировкаТовара КАК МаркировкаТовара
|УПОРЯДОЧИТЬ ПО
| "+СтрокаНаименования.ВОЗР+" ";
ВЫБРАТЬ
ВЫБОР
КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(Справочник1.Наименование КАК СТРОКА(6)), 6, 1) <> " "
ТОГДА 6
КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(Справочник1.Наименование КАК СТРОКА(5)), 5, 1) <> " "
ТОГДА 5
КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(Справочник1.Наименование КАК СТРОКА(4)), 4, 1) <> " "
ТОГДА 4
КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(Справочник1.Наименование КАК СТРОКА(3)), 3, 1) <> " "
ТОГДА 3
ИНАЧЕ 0
КОНЕЦ КАК ДлинаНаименования,
Справочник1.Наименование,
Справочник1.Код
ИЗ
Справочник.Справочник1 КАК Справочник1
УПОРЯДОЧИТЬ ПО
ДлинаНаименования УБЫВ
5.
Збянтэжаны Саўка
24411.06.10 18:52 Сейчас в теме
(4) хм, это правильно конечно, но что делать ежели реквизит - строка неограниченной длины?..
Казалось бы ну такая популярная функция ДлинаСтроки() и почему 1С-ники не включили ее в язык запросов?
а что в приложенном файле кроме описанного здесь кода? а то лень качать
(5) Для строки неограниченной длины есть такой вариант запроса:
Выбор
Когда ВЫРАЗИТЬ(Наименование КАК СТРОКА(0)) = Наименование Тогда
0 Иначе Выбор
Когда ВЫРАЗИТЬ(Наименование КАК СТРОКА(1)) = Наименование Тогда
1 Иначе Выбор
Когда ВЫРАЗИТЬ(Наименование КАК СТРОКА(2)) = Наименование Тогда
2 Иначе Выбор
Когда ВЫРАЗИТЬ(Наименование КАК СТРОКА(3)) = Наименование Тогда
3 Иначе
Конец
Конец
Конец
Конец КАК ДлинаНаименования
(13) Для 2010 года алгоритм тоже не очень. Если строка 150, то сколько писанины будет?
Обычный порождающий запрос числовой последовательности от 1 до размерности наименования. Наименование это ограниченная длина.
Результат запроса соединяем с наименованиями и разбиваем на отдельные символы. Исключаем те строки где результат получился пустой символ.
Сворачиваем и считаем количество строк. Далее сортируем по количеству. Усё.