|
Как правильно увеличить строковый номер?! | ☑ | ||
---|---|---|---|---|
0
mzelensky
30.01.12
✎
12:29
|
Привет!Допустим имеется номер документа (не важно для чего он), напрмиер:
1) "КР-010101П" или 2) "КР-0101091" или 3) "100978ВС" ... При этом длина номера не ограничена и может варьироваться. Синтаксис тоже совершенно различен (буквы и цифры). Нужно новому документу присвоить следующий номер (т.е. получить последний, увеличить на единицу и присвоить). Как это сделать??? |
|||
1
mzelensky
30.01.12
✎
12:30
|
(0) определить последний не проблема - можно просто запросом выбрать "Максимум" по этому реквизиту. Вопрос как увеличить?
|
|||
2
Господин ПЖ
30.01.12
✎
12:30
|
за номера 1 и 3 придется бить чем-то тяжелым...
ЗЫ такие номера типовые тоже не переваривают... |
|||
3
Rie
30.01.12
✎
12:31
|
(0) Особенно варианты 1 и 3 нравится. Это кто ж такой изврат придумал?
|
|||
4
mzelensky
30.01.12
✎
12:31
|
(2) это не "Номер документа" это свой реквизит. Просто строковый реквизит документа.
|
|||
5
acsent
30.01.12
✎
12:32
|
в докуметообороте есть составные номера
|
|||
6
арах
30.01.12
✎
12:32
|
отсеиваешь буквы , переводишь в число и делаешь +1 :)
|
|||
7
mzelensky
30.01.12
✎
12:32
|
(2) (3) не важно кто придумал и зачем - это просто примеры и я точно знаю ,что такие будут встречаться. Вопрос - как решить задачу?!
|
|||
8
арах
30.01.12
✎
12:33
|
кстати так в типовых и сделано
|
|||
9
mzelensky
30.01.12
✎
12:34
|
(6) а как ты будешь отсеивать буквы в таком:
"Кр-09890\ВС75653\56733" - ??? |
|||
10
mzelensky
30.01.12
✎
12:34
|
(5) можешь подсказать как там сделано??? у меня нет возможности туда заглянуть.
|
|||
11
арах
30.01.12
✎
12:35
|
ищешь набор 1234567890 и все
|
|||
12
арах
30.01.12
✎
12:35
|
короче надо в типовой глянуть я смутно помню
|
|||
13
Alex S D
30.01.12
✎
12:37
|
(9) и что там сложного? я делал как-то, определял числовые символы справа, эту часть увеличивал
|
|||
14
арах
30.01.12
✎
12:38
|
вот пример из типовой
Функция УдалитьПользовательскиеПрефиксыИзНомераОбъекта(Знач НомерОбъекта) Экспорт СтрокаЦифровыхСимволов = "0123456789"; Если НомерСодержитПятизначныйПрефикс(НомерОбъекта) Тогда Префикс = Лев(НомерОбъекта, 5); НомерПолный = Сред(НомерОбъекта, 6); Иначе Префикс = Лев(НомерОбъекта, 3); НомерПолный = Сред(НомерОбъекта, 4); КонецЕсли; Номер = ""; Для Индекс = 1 По СтрДлина(НомерПолный) Цикл Символ = Сред(НомерПолный, Индекс, 1); Если Найти(СтрокаЦифровыхСимволов, Символ) > 0 Тогда Номер = Номер + Символ; КонецЕсли; КонецЦикла; Возврат Префикс + Номер; КонецФункции |
|||
15
mzelensky
30.01.12
✎
12:39
|
(13) С вариантом №3 в (0) как справится твой алгоритм?!
|
|||
16
Ненавижу 1С
гуру
30.01.12
✎
12:39
|
какой следующей номер после "АА99999ЖЖ"?
|
|||
17
Alex S D
30.01.12
✎
12:41
|
(13) выцепляешь "100978", увеличиваешь, потом прибавляешь "ВС"
|
|||
18
Alex S D
30.01.12
✎
12:42
|
(16)АА1000000ЖЖ
|
|||
19
Господин ПЖ
30.01.12
✎
12:42
|
(14) осталось подумать чего будет в номерах 1 и 3
|
|||
20
mzelensky
30.01.12
✎
12:43
|
(16) в том и косяк, что Я этого не знаю...варианта 2
1) АА99999ЖЖ1 2) АА100000ЖЖ |
|||
21
Господин ПЖ
30.01.12
✎
12:43
|
(18) а вот хрен...
|
|||
22
acsent
30.01.12
✎
12:44
|
(10) номер состоит из частей. части задаются вручную. например
префикс + счетчик + суффикс |
|||
23
арах
30.01.12
✎
12:44
|
этож кто так извращался с нумерацией?? повесь того за яйца:)
|
|||
24
mzelensky
30.01.12
✎
12:45
|
(18) ты одним "0" ошибся, кажется
|
|||
25
Alex S D
30.01.12
✎
12:45
|
(24) неважно)
|
|||
26
mzelensky
30.01.12
✎
12:46
|
(23) я не говорю. что постоянно будет такая "Ж**А", но хочется сделать механизм ,который будет работать при любых вариантах.
|
|||
27
арах
30.01.12
✎
12:48
|
ну если 2 номер типа АА99999ЖЖ1 ищи крайние левы цыфиры и к ним плюсуй)
|
|||
28
арах
30.01.12
✎
12:48
|
сори *правые
|
|||
29
mzelensky
30.01.12
✎
12:49
|
(22) по этой схеме траблы будут вот с этим:
"Кр-09890\ВС75653\" |
|||
30
арах
30.01.12
✎
12:51
|
а какие траблы то??
Кр-09890\ВС75653\ из этого выцепляешь правый набор цыфер 75653 и +1 :) все просто |
|||
31
acsent
30.01.12
✎
12:51
|
(29) в чем траблы то? счетчик то где в номере?
|
|||
32
Alex S D
30.01.12
✎
12:51
|
траблы видимо как раз в определении счетчиков
|
|||
33
mzelensky
30.01.12
✎
12:52
|
Наверное все-таки проще брать крайние правые цифры и их обрабатывать, а если их нет, то создавать!
|
|||
34
acsent
30.01.12
✎
12:53
|
(32) так это нужно у людей спрашивать, кто такие номера дает.
или ты хочешь зателепатировать? зряяяя |
|||
35
mzelensky
30.01.12
✎
12:54
|
(30) по идее в этом случае должно быть: "Кр-09890\ВС75653\1"
|
|||
36
арах
30.01.12
✎
12:54
|
как хочешь пример с поиском цифер в строке я тебе привел а там как хошь:)
|
|||
37
Alex S D
30.01.12
✎
12:54
|
(34) это не я телепат, а (33)
|
|||
38
mzelensky
30.01.12
✎
12:55
|
(36) принцип выбора номера мне и так был ясен. Честно говоря я думал ,может в 1С есть уже какая-то встроенная функция (написанная) для этого дела.
|
|||
39
mzelensky
30.01.12
✎
12:56
|
Всем спасибо, тем закрыта - пошел работать! :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |