|
СКД Сортировка по строке как по числу | ☑ | ||
---|---|---|---|---|
0
Teresa
01.08.14
✎
09:58
|
Конфигурация БП 2.0.60.4
Отчет на СКД, есть поле в запросе Код подразделения (из справочника Подразделения) с типом Строка. Скажите, пожалуйста, какие есть варианты организовать сортировку по этой колонке как по числу (чтоб 1,2,3, а не 1,100,101...)? Создавать в общем модуле экспортную функцию умею, но не хочу менять конфигурацию. ПолучитьНомерНаПечать не подойдет (это же не документ). Какие варианты еще есть? С виду элементарная задача. Спасибо. |
|||
1
DrZombi
гуру
01.08.14
✎
10:00
|
(0) Преобразуй строку в число и сортируй по доп. полю :)
|
|||
2
1Сергей
01.08.14
✎
10:00
|
в запросе невозможно преобразование строки в число и наоборот
|
|||
3
DrZombi
гуру
01.08.14
✎
10:01
|
(0) А вообще-то у 1С Код тип Строка всегда с нулями впереди не просто так заводится ;)
... как ведете учет, такую сортировку и получаете ... ) |
|||
4
DrZombi
гуру
01.08.14
✎
10:01
|
(2) Зачем в запросе?
|
|||
5
DrZombi
гуру
01.08.14
✎
10:01
|
+(4) У него же СКД, вот пускай и сортирует после :)
|
|||
6
Teresa
01.08.14
✎
10:02
|
(3) в типовой конфе БП Код подразделения строка, конфигурацию ради такого меня я точно не буду.
|
|||
7
1Сергей
01.08.14
✎
10:02
|
(4) (5) верно
|
|||
8
Teresa
01.08.14
✎
10:02
|
(5) внешние функции можно использовать в СКД но только если они описаны в общих модулях
|
|||
9
1Сергей
01.08.14
✎
10:02
|
(6) а сколько там подразделений?
|
|||
10
DrZombi
гуру
01.08.14
✎
10:03
|
(8) И в чем проблема?
|
|||
11
Teresa
01.08.14
✎
10:03
|
(7) как предложите сортировать "после" без использования внешних функций? Собственно об этом и сабж.
|
|||
12
DrZombi
гуру
01.08.14
✎
10:03
|
+(8) Создай свой модуль, он будет там жить Пожизненно, при очередном обновлении не затрется :)
|
|||
13
1Сергей
01.08.14
✎
10:03
|
(10) конфу он менять не хочет
|
|||
14
Teresa
01.08.14
✎
10:04
|
(10) см. (0) я не хочу менять конфигурацию ради такой ерунды как сортировка в отчете.
|
|||
15
1Сергей
01.08.14
✎
10:05
|
(11) я бы нумерацию правильную сделал и не парился
|
|||
16
DmitriyDI
01.08.14
✎
10:05
|
(0) а сделать вычисляемое поля с твоей строкой и поставить ей тип число и по этому полю отсортировать ?
|
|||
17
Teresa
01.08.14
✎
10:05
|
(15) в смысле - правильную нумерацию?
|
|||
18
1Сергей
01.08.14
✎
10:06
|
(17)
00001 00002 ... 00365 |
|||
19
1Сергей
01.08.14
✎
10:07
|
или пробелы вместо лидирующих нулей
|
|||
20
Teresa
01.08.14
✎
10:11
|
(19) я хотела бы, не меняя ничего в данных, применить сортировку, как по числу.
|
|||
21
Teresa
01.08.14
✎
10:11
|
(16) не работает такой способ
|
|||
22
YFedor
01.08.14
✎
10:12
|
(20) Никак, смирись с этим
|
|||
23
1Сергей
01.08.14
✎
10:13
|
(21) не преобразует или не сортирует?
ЗЫ ненавижу скд |
|||
24
Teresa
01.08.14
✎
10:15
|
(23) не сортирует
|
|||
25
Teresa
01.08.14
✎
10:16
|
(22) не хочу смиряться) ну вдруг как-то можно.
|
|||
26
Teresa
01.08.14
✎
10:19
|
(18) что касается этого варианта - допустим у меня появятся новые подразделения, это мне заново весь справочник перенумеровывать тогда придется. Мне бы этого не хотелось делать, да и пользователям это будет неудобно.
|
|||
27
Teresa
01.08.14
✎
10:22
|
В общем, ясно, СКД подложила свинью в очередной раз. Спасибо всем. Придется объяснять заказчику, что невозможно это сделать в СКД.
|
|||
28
ДенисЧ
01.08.14
✎
10:23
|
(27) Придётся !врать! заказчику. Так будет правильней
|
|||
29
Teresa
01.08.14
✎
10:24
|
(28) Есть конечно один вариант для извращенцев. Выгрузить результат запроса в ТЗ, Добавить колонку с типом число, заполнить, загрузить обратно как внешний источник данных в СКД. Но это по-моему чересчур.
|
|||
30
KAO111
01.08.14
✎
10:26
|
Можно сделать вычисляемое поле и по нему сортировать
Подстрока("0000000000",1,10-ДлинаСтроки(Код))+Код |
|||
31
DmitriyDI
01.08.14
✎
10:30
|
(24) странно
|
|||
32
Teresa
01.08.14
✎
10:37
|
(30) Так ведь если код Строка, и длина кода будет одинаковой "1 ", "100 ", добавление лидирующих нулей делу не поможет.
|
|||
33
Teresa
01.08.14
✎
10:38
|
(31) Вы сами пробовали то, что предлагаете? работает?
|
|||
34
KuAl
01.08.14
✎
10:40
|
(29)
вполне себе вариант, обойдешься без изменения конфы. Правда придется все поля описывать. На самом деле норм - и времени много не займет сделать, хоть и некрасиво и не оптимально. |
|||
35
Teresa
01.08.14
✎
10:42
|
(34) ну да, вот именно что и смущает - не очень изящно. Но другого варианта не придумала пока.
|
|||
36
Gucci76
01.08.14
✎
10:45
|
Можно извратиться и в СКД попробовать привести к числу
Если найду выложу код "извращения" )))) |
|||
37
Teresa
01.08.14
✎
10:46
|
(36) было бы интересно взглянуть) Большое спасибо)
|
|||
38
Gucci76
01.08.14
✎
10:47
|
Делал где-то для автонумерации с постфиксом кадровых документов. Вот бы вспомнить теперь.
Но тут ведь переделка СКД - это приемлемые изменения конфигурации? |
|||
39
Teresa
01.08.14
✎
10:51
|
(38) Конечно, СКД можно ломать с любой степенью извращенности)
|
|||
40
1Сергей
01.08.14
✎
11:00
|
преобразование числа к строке и обратно:
Только до 999. надо больше - допишешь |
|||
41
Simod
01.08.14
✎
11:01
|
||||
42
1Сергей
01.08.14
✎
11:02
|
(40) + блин, четверку пропустил
|
|||
43
DmitriyDI
01.08.14
✎
11:02
|
(33)
(35) да в СКД не работает, но вот в запросе как можно сделать (проверил, работает) ВЫБРАТЬ ВложенныйЗапрос.Ссылка, ВложенныйЗапрос.Код ПОМЕСТИТЬ Дано ИЗ (ВЫБРАТЬ Оборудование.Ссылка КАК Ссылка, Оборудование.Код КАК Код ИЗ Справочник.Оборудование КАК Оборудование) КАК ВложенныйЗапрос ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 0 КАК С, 1 КАК П ПОМЕСТИТЬ Р16 ОБЪЕДИНИТЬ ВЫБРАТЬ 1, 10 ОБЪЕДИНИТЬ ВЫБРАТЬ 2, 100 ОБЪЕДИНИТЬ ВЫБРАТЬ 3, 1000 ОБЪЕДИНИТЬ ВЫБРАТЬ 4, 10000 ОБЪЕДИНИТЬ ВЫБРАТЬ 5, 100000 ОБЪЕДИНИТЬ ВЫБРАТЬ 6, 1000000 ОБЪЕДИНИТЬ ВЫБРАТЬ 7, 10000000 ОБЪЕДИНИТЬ ВЫБРАТЬ 8, 100000000 ОБЪЕДИНИТЬ ВЫБРАТЬ 9, 1000000000 ОБЪЕДИНИТЬ ВЫБРАТЬ 10, 10000000000 ОБЪЕДИНИТЬ ВЫБРАТЬ 11, 100000000000 ОБЪЕДИНИТЬ ВЫБРАТЬ 12, 1000000000000 ОБЪЕДИНИТЬ ВЫБРАТЬ 13, 10000000000000 ОБЪЕДИНИТЬ ВЫБРАТЬ 14, 100000000000000 ОБЪЕДИНИТЬ ВЫБРАТЬ 15, 1000000000000000 ОБЪЕДИНИТЬ ВЫБРАТЬ 16, 10000000000000000 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СУММА(А.П * Б.С) / МИНИМУМ(А.П) КАК Ответ, Дано.Ссылка ИЗ Дано КАК Дано, Р16 КАК А, Р16 КАК Б ГДЕ Б.С < 10 И ПОДСТРОКА(Дано.Код, 17 - А.С, 1) = ПОДСТРОКА("0123456789", Б.С + 1, 1) СГРУППИРОВАТЬ ПО Дано.Код, Дано.Ссылка УПОРЯДОЧИТЬ ПО Ответ |
|||
44
Teresa
01.08.14
✎
11:09
|
(43) ого) спасибо, посмотрю)
|
|||
45
echo77
01.08.14
✎
11:18
|
Это же СКД!
Здесь все просто: 1. Создаем вычисляемое поле КодПодразделенияЧисло, для него выражение: "Вычислить(Подразделение.Код)" 2. Сортируем по этому полю 3. ... 4. ... 5. PROFIT! |
|||
46
Gucci76
01.08.14
✎
11:23
|
Я смоторю уже накидали перевод строки в число.
А у меня еще базе не загрузилась, где предположительно это я делал )))) |
|||
47
DmitriyDI
01.08.14
✎
11:25
|
(45) реально работает)
|
|||
48
echo77
01.08.14
✎
11:27
|
+(45)
Вот результат: http://s017.radikal.ru/i438/1408/8d/2775fdeafc90.png Вот настройка вычисляемого поля: http://s018.radikal.ru/i518/1408/ad/d140d390b467.png Надеюсь настроить СКД, чтобы была сортировка по этому полю сможете? |
|||
49
echo77
01.08.14
✎
11:28
|
... надо будет этот вопрос включить в свою статью по полезными примерам СКД :-/
|
|||
50
Teresa
01.08.14
✎
11:55
|
(45) Работает, спасибо) Правда, не совсем понятно, как работает функция Вычислить() Надо будет почитать)
Спасибо всем! Миста - это чудовищная сила) |
|||
51
echo77
01.08.14
✎
12:08
|
(50) Функция Вычислить() работает так же как во встроенном языке 1С :-)
|
|||
52
echo77
01.08.14
✎
12:54
|
Добавил. http://infostart.ru/public/267055/
Последний пример |
|||
53
Teresa
01.08.14
✎
13:00
|
(52) утащила в копилку)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |