|
Порядок в динамическом списке без префиксов | ☑ | ||
---|---|---|---|---|
0
bebibo
14.03.24
✎
23:20
|
Всем здравствуйте!
Посоветуйте как сделать порядок по номеру без префиксов в форме списка документа (дин.список)? |
|||
1
bebibo
14.03.24
✎
23:21
|
При открытии выгрузить дин список в ТЗ, отсортировать как надо и подгрузить на форму? Но у меня не получается ТЗ в дин список пульнуть
|
|||
2
kubik_live
14.03.24
✎
23:38
|
Добавить колонку, а в нее из ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(...) и сортировать по ней?
|
|||
3
bebibo
14.03.24
✎
23:49
|
(2) Мне нужна сортировка по номеру, но номера в документах такие:
ДПН00-000001 ДФН00-000003 СП00-000044 СПНФ-000008 Хочу в ТЗ перебрать номера, взять справа цифры до нулей и сортировать по ним ТЗ, потом загрузить в дин список готовую ТЗ |
|||
4
b_ru
14.03.24
✎
23:53
|
ну в таком тривиальном случае как в примере, ПОДСТРОКА(Номер,7,100)
|
|||
5
kubik_live
15.03.24
✎
00:00
|
Найти() и Сред() в помощь
|
|||
6
kubik_live
15.03.24
✎
00:07
|
+(2)
"А чем .. профессор Мечников тебе не понравился?" © // Получает номер документа для вывода на печать; из номера удаляются префиксы и лидирующие нули. // Функция: // отбрасывает префикс организации, // отбрасывает префикс информационной базы (опционально), // отбрасывает пользовательские префиксы (опционально), // удаляет лидирующие нули в номере объекта. // // Параметры: // НомерОбъекта - Строка - номер или код объекта, который преобразуется для вывода на печать. // УдалитьПрефиксИнформационнойБазы - Булево - признак удаления префикса информационной базы. // УдалитьПользовательскийПрефикс - Булево - признак удаления пользовательского префикса. // // Возвращаемое значение: // Строка - номер на печать. // Функция НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт |
|||
7
bebibo
15.03.24
✎
00:17
|
Я не хочу в запросе делать, так как бывает еще такой номер (Документ наш от 23 г.).
Все такие не по формату их в самый низ. Как сделал: При открытии дин список в ТЗ - пересорт в ТЗ - далее готовую тз надо обратно в дин список. Как это сделать? Есть мысли подменить текст запроса, типа выбрать * из &МояГотоваяТЗ Но не пойму где параметр заполнить.. |
|||
8
bebibo
15.03.24
✎
00:18
|
(6) Ну так в любом случае нужно же обход делать и перезаполнять дин список же?
|
|||
9
bebibo
15.03.24
✎
00:23
|
(8) Если есть вариант проще, то я за.
ПрефиксацияОбъектовКлиентСервер.НомерНаПечать - хорошая штука. Буду использовать её. Но как Вы предлагаете обойти динамический список и перезаполнить его? |
|||
10
Garykom
15.03.24
✎
00:37
|
https://wonderland.v8.1c.ru/blog/novye-funktsii-yazyka-zaprosov-i-sistemy-komponovki-dannykh/?sphrase_id=663464
И наймите программиста, чтобы запрос дин.списка дописал Но там куча ограничений, возможно не выйдет Простейший вариант попробовать ПОДСТРОКА(Номер, СТРНАЙТИ(Номер,""-""), 100) |
|||
11
bebibo
15.03.24
✎
00:38
|
(10) Не подойдет.
Мне нужна функция "ПрефиксацияОбъектовКлиентСервер.НомерНаПечать". Она делает номер так, как мне нужно. Но как мне обойти динамический список? Тип данных Динамические списки не относятся к универсальным коллекциям значений, у динамических списков нет метода обхода строк..как быть тогда? |
|||
12
Garykom
15.03.24
✎
00:43
|
Однако работает
|
|||
13
Garykom
15.03.24
✎
00:44
|
(11) Подучить 1С.
Чтобы понимать что можно а что нельзя ибо ограничения платформы. |
|||
14
bebibo
15.03.24
✎
00:46
|
(12) не везде есть оказывается "-"
Сейчас посмотрел, есть просто: "СФ00000076" |
|||
15
Garykom
15.03.24
✎
00:50
|
(14) В этом случае согласиться на просто ПРАВ(Номер, 6)
Если разная длина по кол-ву 0 то все тяжко становится Преобразовать в запросе строку в число - ну это такое
|
|||
16
bebibo
15.03.24
✎
00:50
|
Кто нибудь подскажет как всё таки сделать из такой нумерации динамического списка:
ДПН00-000001 ДФН00-000003 ДФН00-000005 СПР00-000002 СПР00-000004 СПНФ-000006 Такую: ДПН00-000001 СПР00-000002 ДФН00-000003 СПР00-000004 ДФН00-000005 СПНФ-000006 То есть забить на префиксы |
|||
17
Garykom
15.03.24
✎
00:52
|
(16) прочитай внимательно (15)
если не устраивает то см (10) |
|||
18
bebibo
15.03.24
✎
00:57
|
(17) Неужели нельзя нормально сделать? Это же не удобно!
Чтобы найти документ ДПН00-000012, когда я нахожусь на СПР00-001002 - нужно пролистать всё до СПР00-000001, а потом еще все ДПН00, а там их тоже больше 1000.. Это удобно? Бред почему так сделали? |
|||
19
bebibo
15.03.24
✎
01:05
|
(15) Плохо, что есть номера с разным количеством нулей(
Из-за них всё сбивается( |
|||
20
bebibo
15.03.24
✎
01:06
|
(19) Или вот например(
|
|||
21
H A D G E H O G s
15.03.24
✎
02:27
|
Добавить в документ реквизит
НомерБезПрефикса, индексированный с допупорядочиванием. Заполнять его в передзаписью() Заполнить для уже существующих Вывести в список Забыть о проблеме |
|||
22
bebibo
15.03.24
✎
07:26
|
(21) спасибо, попробую сейчас
|
|||
23
Волшебник
15.03.24
✎
07:29
|
(21) Собьётся из-за разного количества нулей. Тогда лучше добавить поле "Порядок" и заполнять его номером без префикса с нормализованным количеством нулей (добавить ведущие, если надо).
|
|||
24
DimVad
15.03.24
✎
07:31
|
(23) Можно поле сделать числовым.
|
|||
25
Волшебник
15.03.24
✎
07:54
|
(24) Это как раз не рекомендую. Лучше ведущие нули, чем числовое поле.
|
|||
26
DimVad
15.03.24
✎
07:59
|
(25) А почему не рекомендуется ?
Я понимаю что строковое поле позволяет вести префиксы. Префиксы существуют как разделитель. Например между организациями. Но ему-то как раз нужно всё вместе. Вроде как число автоматически даст идеальную сортировку. Или проблема в составных индексах которые 1С создаёт для документов ? |
|||
27
Волшебник
15.03.24
✎
08:07
|
(26) Потому что нельзя вставить один элемент между другими, или у Вас порядок должен быть дробный
|
|||
28
bebibo
15.03.24
✎
09:12
|
Сделал так:
Создал реквзит документа "НовНомер". ПередЗаписью пишу так: Расш1_НовНомер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Номер,Истина,Истина); Далее в консоле смотрю, получилось, но не совсем то:
|
|||
29
bebibo
15.03.24
✎
09:13
|
(28) Я понимаю логически почему оно здесь оказалось, но как это исправить? 112 должно быть между 111 и 113, а не тут.
|
|||
30
bebibo
15.03.24
✎
09:29
|
(29) Сделал поле числовым - всё норм отрабатывает.
Остался только еще 1 нюанс - слеши. Как с ними предложите быть?
|
|||
31
Garykom
15.03.24
✎
09:34
|
(30) Логично что добавить второе поле для "слеши", например "НомерПостфикс"
И сортировать по очереди сначала первое, затем второе Но это не спортивно (21)! ЗЫ Можно и третье "НомерПрефикс" заодно, вдруг понадобится в будущем |
|||
32
H A D G E H O G s
15.03.24
✎
10:10
|
(30) отсутствия слеша принимай за ноль.
При наличии слеша вытаскивай заслушевую цифру. Ну и все это полученное добавляй к основному числу как к строке перед конвертацией в число. |
|||
33
Волшебник
15.03.24
✎
10:11
|
(30) Сделайте поле строковым и добавьте ведущие нули
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |