СКД Сортировка по строке как по числу #716045


#0 by Teresa
Конфигурация БП 2.0.60.4 Отчет на СКД, есть поле в запросе Код подразделения (из справочника Подразделения) с типом Строка. Скажите, пожалуйста, какие есть варианты организовать сортировку по этой колонке как по числу (чтоб 1,2,3, а не 1,100,101...)? Создавать в общем модуле экспортную функцию умею, но не хочу менять конфигурацию. ПолучитьНомерНаПечать не подойдет (это же не документ). Какие варианты еще есть? С виду элементарная задача. Спасибо.
#1 by DrZombi
Преобразуй строку в число и сортируй по доп. полю :)
#2 by 1Сергей
в запросе невозможно преобразование строки в число и наоборот
#3 by DrZombi
А вообще-то  у 1С Код тип Строка всегда с нулями впереди не просто так заводится ;) ... как ведете учет, такую сортировку и получаете ... )
#4 by DrZombi
Зачем в запросе?
#5 by DrZombi
+ У него же СКД, вот пускай и сортирует после :)
#6 by Teresa
в типовой конфе БП Код подразделения строка, конфигурацию ради такого меня я точно не буду.
#7 by 1Сергей
верно
#8 by Teresa
внешние функции можно использовать в СКД но только если они описаны в общих модулях
#9 by 1Сергей
а сколько там подразделений?
#10 by DrZombi
И в чем проблема?
#11 by Teresa
как предложите сортировать "после" без использования внешних функций? Собственно об этом и сабж.
#12 by DrZombi
+ Создай свой модуль, он будет там жить Пожизненно, при очередном обновлении не затрется :)
#13 by 1Сергей
конфу он менять не хочет
#14 by Teresa
см. я не хочу менять конфигурацию ради такой ерунды как сортировка в отчете.
#15 by 1Сергей
я бы нумерацию правильную сделал и не парился
#16 by DmitriyDI
а сделать вычисляемое поля с твоей строкой и поставить ей тип число и по этому полю отсортировать ?
#17 by Teresa
в смысле - правильную нумерацию?
#18 by 1Сергей
00001 00002 ... 00365
#19 by 1Сергей
или пробелы вместо лидирующих нулей
#20 by Teresa
я хотела бы, не меняя ничего в данных, применить сортировку, как по числу.
#21 by Teresa
не работает такой способ
#22 by YFedor
Никак, смирись с этим
#23 by 1Сергей
не преобразует или не сортирует? ЗЫ ненавижу скд
#24 by Teresa
не сортирует
#25 by Teresa
не хочу смиряться) ну вдруг как-то можно.
#26 by Teresa
что касается этого варианта - допустим у меня появятся новые подразделения, это мне заново весь справочник перенумеровывать тогда придется. Мне бы этого не хотелось делать, да и пользователям это будет неудобно.
#27 by Teresa
В общем, ясно, СКД подложила свинью в очередной раз. Спасибо всем. Придется объяснять заказчику, что невозможно это сделать в СКД.
#28 by ДенисЧ
Придётся !врать! заказчику. Так будет правильней
#29 by Teresa
Есть конечно один вариант для извращенцев. Выгрузить результат запроса в ТЗ, Добавить колонку с типом число, заполнить, загрузить обратно как внешний источник данных в СКД. Но это по-моему чересчур.
#30 by KAO111
Можно сделать вычисляемое поле и по нему сортировать Подстрока("0000000000",1,10-ДлинаСтроки(Код))+Код
#31 by DmitriyDI
странно
#32 by Teresa
Так ведь если код Строка, и длина кода будет одинаковой "1     ", "100   ", добавление лидирующих нулей делу не поможет.
#33 by Teresa
Вы сами пробовали то, что предлагаете? работает?
#34 by KuAl
вполне себе вариант, обойдешься без изменения конфы. Правда придется все поля описывать. На самом деле норм - и времени много не займет сделать, хоть и некрасиво и не оптимально.
#35 by Teresa
ну да, вот именно что и смущает - не очень изящно. Но другого варианта не придумала пока.
#36 by Gucci76
Можно извратиться и в СКД попробовать привести к числу Если найду выложу код "извращения" ))))
#37 by Teresa
было бы интересно взглянуть) Большое спасибо)
#38 by Gucci76
Делал где-то для автонумерации с постфиксом кадровых документов. Вот бы вспомнить теперь. Но тут ведь переделка СКД - это приемлемые изменения конфигурации?
#39 by Teresa
Конечно, СКД можно ломать с любой степенью извращенности)
#40 by 1Сергей
преобразование числа к строке и обратно: Только до 999. надо больше - допишешь
#42 by 1Сергей
+ блин, четверку пропустил
#43 by DmitriyDI
да в СКД не работает, но вот в запросе как можно сделать (проверил, работает) ВЫБРАТЬ     ВложенныйЗапрос.Ссылка,     ВложенныйЗапрос.Код ВЫБРАТЬ     1,     10 ОБЪЕДИНИТЬ ВЫБРАТЬ     2,     100 ОБЪЕДИНИТЬ ВЫБРАТЬ     3,     1000 ОБЪЕДИНИТЬ ВЫБРАТЬ     4,     10000 ОБЪЕДИНИТЬ ВЫБРАТЬ     5,     100000 ОБЪЕДИНИТЬ ВЫБРАТЬ     6,     1000000 ОБЪЕДИНИТЬ ВЫБРАТЬ     7,     10000000 ОБЪЕДИНИТЬ ВЫБРАТЬ     8,     100000000 ОБЪЕДИНИТЬ ВЫБРАТЬ     9,     1000000000 ОБЪЕДИНИТЬ ВЫБРАТЬ     10, ОБЪЕДИНИТЬ ВЫБРАТЬ     11, ОБЪЕДИНИТЬ ВЫБРАТЬ     12, ОБЪЕДИНИТЬ ВЫБРАТЬ     13, ОБЪЕДИНИТЬ ВЫБРАТЬ     14, ОБЪЕДИНИТЬ ВЫБРАТЬ     15, ОБЪЕДИНИТЬ ВЫБРАТЬ     16,
#44 by Teresa
ого) спасибо, посмотрю)
#45 by echo77
Это же СКД! Здесь все просто: 1. Создаем вычисляемое поле КодПодразделенияЧисло, для него выражение: "Вычислить(Подразделение.Код)" 2. Сортируем по этому полю 3. ... 4. ... 5. PROFIT!
#46 by Gucci76
Я смоторю уже накидали перевод строки в число. А у меня еще базе не загрузилась, где предположительно это я делал ))))
#47 by DmitriyDI
реально работает)
#48 by echo77
+ Вот результат: Вот настройка вычисляемого поля: Надеюсь настроить СКД, чтобы была сортировка по этому полю сможете?
#49 by echo77
... надо будет этот вопрос включить в свою статью по полезными примерам СКД :-/
#50 by Teresa
Работает, спасибо) Правда, не совсем понятно, как работает функция Вычислить Надо будет почитать) Спасибо всем! Миста - это чудовищная сила)
#51 by echo77
Функция Вычислить работает так же как во встроенном языке 1С :-)
#52 by echo77
Добавил. Последний пример
#53 by Teresa
утащила в копилку)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям