Имя: Пароль:
1C
1С v8
Поиск в строке
0 KENT2007
 
27.07.12
08:53
как в запросе найти не печатаемый символ и отсечь все после него
1 Wobland
 
27.07.12
08:54
что есть "не печатаемый символ"? на зачем всё это надо в запросе?
2 KENT2007
 
27.07.12
08:57
ошибся, не числовой
3 KENT2007
 
27.07.12
08:57
есть номер 10-11 нужно выбрать 10
4 Wobland
 
27.07.12
08:59
(2) давай на второй вопрос теперь отвечай
5 aleks-id
 
27.07.12
09:03
ПОДСТРОКА(Номер, 1, 2)
6 МихаилМ
 
27.07.12
09:03
(0)
"отсечь" - заполнить пробелами или сдвинуть ?
7 KENT2007
 
27.07.12
09:06
сдвинуть,нужно для сортировки по номеру договра
8 KENT2007
 
27.07.12
09:07
их два символа - и ,
9 Wobland
 
27.07.12
09:08
длина "номера" постоянна?
10 KENT2007
 
27.07.12
09:08
нет, есть 9-10 и 489-490 или 493,495
11 Галахад
 
гуру
27.07.12
09:09
Чо та не понял. Если просто отсортировать по номеру результат будет не такой же?
12 Wobland
 
27.07.12
09:11
(11) 10-11 и 10-2
13 KENT2007
 
27.07.12
09:11
тогда сортирует 1,10,11,101 дополнил 0 лидирущий тоже номера где есть "-" в конец кидает
14 ДенисЧ
 
27.07.12
09:12
перебери циклом все символы и найди первый неподходящий... До него и режь...
15 KENT2007
 
27.07.12
09:12
ВЫБРАТЬ
   ДоговорыКонтрагентов.Родитель.Наименование КАК Родитель,
   ХозрасчетныйОстаткиИОбороты.Субконто1,
   ХозрасчетныйОстаткиИОбороты.Субконто2,
   ДоговорыКонтрагентов.Номер КАК Номер,
   ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
   СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК СуммаОборотКт,
   ВЫБОР
       КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(1)))
           ТОГДА ПОДСТРОКА("000000000000000", 1, 8) + ДоговорыКонтрагентов.Номер
       КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(2)))
           ТОГДА ПОДСТРОКА("000000000000000", 1, 7) + ДоговорыКонтрагентов.Номер
       КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(3)))
           ТОГДА ПОДСТРОКА("000000000000000", 1, 6) + ДоговорыКонтрагентов.Номер
       КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(4)))
           ТОГДА ПОДСТРОКА("000000000000000", 1, 5) + ДоговорыКонтрагентов.Номер
       КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(5)))
           ТОГДА ПОДСТРОКА("000000000000000", 1, 4) + ДоговорыКонтрагентов.Номер
       КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(6)))
           ТОГДА ПОДСТРОКА("000000000000000", 1, 3) + ДоговорыКонтрагентов.Номер
       КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(7)))
           ТОГДА ПОДСТРОКА("000000000000000", 1, 2) + ДоговорыКонтрагентов.Номер
       КОГДА ДоговорыКонтрагентов.Номер = (ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(8)))
           ТОГДА ПОДСТРОКА("000000000000000", 1, 1) + ДоговорыКонтрагентов.Номер
   КОНЕЦ КАК Поле2
ИЗ
   Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Начало, &Конец, , , Счет В ИЕРАРХИИ (&Счет62), , ) КАК ХозрасчетныйОстаткиИОбороты
       ПО (ХозрасчетныйОстаткиИОбороты.Субконто2 = ДоговорыКонтрагентов.Ссылка)
ГДЕ
   ХозрасчетныйОстаткиИОбороты.СуммаОборотДт > &СуммаОборотДт

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОстаткиИОбороты.СуммаОборотДт,
   ДоговорыКонтрагентов.Родитель,
   ДоговорыКонтрагентов.Номер,
   ХозрасчетныйОстаткиИОбороты.Субконто1,
   ДоговорыКонтрагентов.Родитель.Наименование,
   ХозрасчетныйОстаткиИОбороты.Субконто2

УПОРЯДОЧИТЬ ПО
   Родитель,
   Номер
16 KENT2007
 
27.07.12
09:12
(14) вопрос в том как в запросе перебрать
17 Галахад
 
гуру
27.07.12
09:12
(12) Ну и? А будет 10 и 10 после отсечения.
18 KENT2007
 
27.07.12
09:14
(12) одинаковых нет они как бы по порядку идут 1,2,3,4-5,6,7,8-9...
19 KENT2007
 
27.07.12
09:15
сейчас вот так:

1-2
10
101
102
103
104
105-106
107
108
109-110
11
111
112-113
114
115
116
117
118-119
12
120
121
122
123
20 Галахад
 
гуру
27.07.12
09:17
Это ж строки. Сортировать будет так:
1,10,101,11
21 Галахад
 
гуру
27.07.12
09:18
Ага, так оно и есть.
22 KENT2007
 
27.07.12
09:18
ну и как сделать число из "112-113" = "112"
23 KENT2007
 
27.07.12
09:21
есть решение?
24 KENT2007
 
27.07.12
09:32
все всё поняли и тишина?
25 KENT2007
 
27.07.12
09:35
все на Титьнице
26 МихаилМ
 
27.07.12
09:39
(22)
так Вам нужна строка или число
27 KENT2007
 
27.07.12
09:39
число
28 KENT2007
 
27.07.12
09:40
главное чтоб сортировалось по нормальному
29 Vakhrin
 
27.07.12
09:41
в запросе не вижу способа это сделать...
только через доработку конфиги... добавить реквизит числовой в договор (ну или через РС, с подпиской, чтобы не ломать типовые объекты)
и при записи писать туда уже обработанный номер как число
в запросе его и использовать
30 Reset
 
27.07.12
09:44
Зачем новую тему было создавать?
v8: сотриторвка строки как числа
31 KENT2007
 
27.07.12
09:45
так решения никакого нет
32 KENT2007
 
27.07.12
09:56
может в скд можно прикрутить колонку и по ней сортировать
33 Галахад
 
гуру
27.07.12
10:05
Решения запросом - не знаю.
Почему нельзя кодом обработать - не понятно.
34 KENT2007
 
27.07.12
10:06
пусть будет кодом как это в скд сделать подскажи
35 Галахад
 
гуру
27.07.12
10:09
(34) Уточни вопрос. Тебе код написать или как его вызывать?
36 МихаилМ
 
27.07.12
10:10
запросов конечно неправильно
- типичное заблуждение онинесника путать получение данных с представлением

но если очень хочется
то

ВЫБРАТЬ
"112-113" КАК Номер
ПОМЕСТИТЬ Номера
Объединить
ВЫБРАТЬ "114"

;

////////////////////////////////////////////////////////////////////////////////
// вычисляем номер первого встретившего символа "-". считаем, что длина поля 7 символов
ВЫБРАТЬ Номера.Номер,
ВЫБОР
Когда ПОДСТРОКА(Номера.Номер,1,1) = "-"
Тогда 1
Иначе 7
Конец Позиция1,

ВЫБОР
Когда ПОДСТРОКА(Номера.Номер,4,1) = "-"
Тогда 4
Иначе 0
Конец Позиция4
ПОМЕСТИТЬ Позиции
ИЗ Номера
;
// вычисляем номер первого встретившего символа "-". считаем, что длина поля 7 символов

ВЫБРАТЬ Позиции.Номер,Позиция1,Позиция4,
ВЫБОР
Когда Позиция1 > 0 тогда Позиция1
Когда Позиция4 > 0 тогда Позиция4
Иначе 7
Конец Позиция
Поместить НайДенныеПозиции
ИЗ Позиции
;
ВЫБРАТЬ Номер,Позиция,ПОДСТРОКА(Номер,1,Позиция-1)
ИЗ
НайДенныеПозиции
37 KENT2007
 
27.07.12
10:10
1 и 2 ) ну хотяб 2ое
38 Галахад
 
гуру
27.07.12
10:14
(37) Например: http://1cskd.ru/tag/funkciya/
39 KENT2007
 
27.07.12
10:21
(36) это сильно, но что то не хочет работать
40 KENT2007
 
27.07.12
10:23
(38) позновательно
41 МихаилМ
 
27.07.12
10:27
(39)

ВЫБРАТЬ
"112-113" КАК Номер
ПОМЕСТИТЬ Номера
Объединить
ВЫБРАТЬ "114"

;

////////////////////////////////////////////////////////////////////////////////

// вычисляем номер первого встретившего символа "-". считаем, что длина поля 7 символов

ВЫБРАТЬ Номера.Номер,
ВЫБОР
Когда ПОДСТРОКА(Номера.Номер,1,1) = "-"
Тогда 1
Иначе 0
Конец Позиция1,

ВЫБОР
Когда ПОДСТРОКА(Номера.Номер,4,1) = "-"
Тогда 4
Иначе 0
Конец Позиция4
ПОМЕСТИТЬ Позиции
ИЗ Номера
;
// вычисляем номер первого встретившего символа "-". считаем, что длина поля 7 символов


ВЫБРАТЬ Позиции.Номер,Позиция1,Позиция4,
ВЫБОР
Когда Позиция1 > 0 тогда Позиция1
Когда Позиция4 > 0 тогда Позиция4
Иначе 7
Конец Позиция
Поместить НайДенныеПозиции
ИЗ Позиции
;
ВЫБРАТЬ Номер,Позиция,ПОДСТРОКА(Номер,1,Позиция-1)
ИЗ
НайДенныеПозиции
42 KENT2007
 
27.07.12
11:09
пишет таблица не найдена
43 МихаилМ
 
27.07.12
11:33
(42)
проверил из (41)
все работает.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.