Имя: Пароль:
1C
 
Количество символов в строке
0 first_may
 
22.01.10
13:51
Добрый день!

Подскажите пожалуйста, можно ли запросом в консоли получить количество символов в строке?
1 EasyRider
 
22.01.10
13:53
СтрДлина("мояСтрока")
2 first_may
 
22.01.10
13:56
По-моему в запросе нет такой функции. Мне надо выполнить что вроде этого:

ВЫБРАТЬ
   СтрДлина(Тест.Комментарий)
ИЗ
   Документ.Тест КАК Тест

что бы потом я мог узнать максимальную длинну поля Комментарий.
3 FIXXXL
 
22.01.10
13:56
(1) в запросе?
4 first_may
 
22.01.10
13:57
хотелось бы :)
5 Живой Ископаемый
 
22.01.10
14:02
Максимум для строковых полей не работает? (в самом деле не знаю)
6 EasyRider
 
22.01.10
14:02
(3)В запросе?В запросе никак.
7 73
 
22.01.10
14:05
(5) Максимум работает, только это не решит (0).
8 first_may
 
22.01.10
14:05
Максимум для строковых полей не работает - я знаю, поэтому и хотелось бы получить сначало количество...

В запросе никак - только перебором записей?
9 Живой Ископаемый
 
22.01.10
14:12
2(7) а сортировка по убаванию в подзапросе и потом взятие из него 1-й записи?
10 Живой Ископаемый
 
22.01.10
14:13
Это правда тоже перебор, но только одной записи.. хе-хе.. :)
11 Ненавижу 1С
 
гуру
22.01.10
14:13
(9) максимальный это не самый длинный
12 also
 
22.01.10
14:13
(9) как отсортируется "ааббвв" и "яяэээээээээ" ?
13 Kom-off
 
22.01.10
14:14
Если не нужна точная максимальная длина строки комментария, а приблизительная, то можно сгородить огород из ВЫБОР КОГДА.. и ПОДСТРОКА(). Разбить все пространство длин комментария на строки и выстроить конструкцию типа ВЫБОР КОГДА ПОДСТРОКА("1234", 1, 3) > "1234" ТОГДА 3 ИНАЧЕ 0 КОНЕЦ и таким образом получить примерную максимальную длину комментария.
14 also
 
22.01.10
14:14
+(12) блин наоборот пример хотле привести :)
15 also
 
22.01.10
14:14
в общем (11) прав
16 first_may
 
22.01.10
14:22
получается что надо писать обработку по перебору записей...
17 also
 
22.01.10
14:25
(16) а записей несколько миллионов?
18 first_may
 
22.01.10
14:28
нет
19 МихаилМ
 
22.01.10
14:28
можно.
заполните таблицу ранжирования
и объдиняете с ней
соответственно индексом ранга будет интервал началького и конечного значения
а рангом - длина.
Как извесно, эффективного индекса субд для интервана нет. Но возможно для даного случая интервал можно заменить более удачным индексом ранга.








соответственно начало ранга
20 also
 
22.01.10
14:30
(18) ну и не парься...
......
МаксимальныйКоммент = 0;
Пока Выборка.Следующий() Цикл
  Если СтрДлина(Выборка.Комментарий) > МаксимальныйКоммент Тогда
     МаксимальныйКоммент = СтрДлина(Выборка.Комментарий);
21 73
 
22.01.10
14:51
(18) Не знаю, может это быстрее, чем полный перебор....

   ДлинаРеквизита = 100;
   Запрос = Новый Запрос("
   |Выбрать Первые 1 Ссылка Из Документ.ВозвратнаяНакладная
   |Где Примечание Подобно &Шаблон
   |");
   
   Шаблон = "[^ ]";
   Для й = 1 По ДлинаРеквизита-1 Цикл
       
       Шаблон = "_" + Шаблон;
   КонецЦикла;
   
   й = ДлинаРеквизита;
   Пока й > 0 Цикл
       Запрос.УстановитьПараметр("Шаблон", Шаблон);
       Результат = Запрос.Выполнить();
       Если не Результат.Пустой() Тогда
           Прервать;
       КонецЕсли;
       й = й - 1;
       Шаблон = Прав(Шаблон, й);

   КонецЦикла;
   
   Сообщить("Макс Примечание = " + й);
22 73
 
22.01.10
14:53
(21)+
чуть не так... Вот так вроде надо:
       Шаблон = Прав(Шаблон, й+4);
23 73
 
22.01.10
14:57
(22)+ Неее... й+3
24 first_may
 
22.01.10
15:07
спасибо всем :)