|
Своя нумерация | ☑ | ||
---|---|---|---|---|
0
Буковка
26.06.24
✎
13:36
|
Добрый день!
Подскажите, пожалуйста, максимально изящное и поддерживаемое в дальнейшем решение. Нужно реализовать свою нумерацию в справочнике: постоянная часть+переменная. Переменная сначала обходит значения от 001 до 999. Далее добавляется в первом разряде буква латинского алфавита: от А01 до Z99. Далее латинская буква во втором разряде от АА1 до ZZ9. Буду благодарна за любые идеи. |
|||
1
Aleksey
26.06.24
✎
13:35
|
где и как будете хранить последний номер? или каждый раз запросом из БД по всем документам искать?
|
|||
2
Волшебник
26.06.24
✎
13:37
|
Просто увеличьте длину номера до 10 символов и нумеруйте десятичными цифрами. Если нельзя увеличить, то добавьте новое поле.
А этот дурдом с латинскими буквами оставьте. Не ваше это |
|||
3
Aleksey
26.06.24
✎
13:37
|
и нумерация максимально странная
Логично что после 009 должен быть 00А, а у вас почему то 010 |
|||
4
Aleksey
26.06.24
✎
13:39
|
(2) Ну почему можно просто для печати конвертировать номер 1000 в АА1
Или как в типовой фактуре добавиьт реквизит номер для печати который получается преобразованием десятичного номера в 36ричного |
|||
5
maxab72
26.06.24
✎
13:47
|
Можно проще. Сделать функцию перевода 10-ричного числа в 36-ричное (10 цифр _ 25 латинских букв). Но номера будут 001, 002,.. 009, 00A, 00B,.. 00Z, 010 и тд.
|
|||
6
Мультук
гуру
26.06.24
✎
13:52
|
(0)
26*26*10 = 6760 потом что ? Волшебник в (2) всё сказал. P.S. Чисто гипотетически === Вариант 1 === 1) Оставить типовую автонумерацию кода из "Префикс" + обычное число от 000 до 999 2) Добавить реквизит "ПредставлениеКода" 3) Написать функцию которая будет делать из нормального числа ваши А01 и т.п 4) Заполнять "ПредставлениеКода" в "ПриУстановкеНовогоКода ???" Всем вместо код всем показывать "ПредставлениеКода" Минусы: не хочу перечислять, добрые люди за меня напишут. === Вариант 2 === Нумерацию 000 до 999 хранить в константе "МояНумерация".... Дальше "по тексту" P.P.S. Если решите двигаться по одному из вариантов или придумаете "что-то" своё, то поделитесь кодом на мисте. Пусть лучше здесь вас обольют {хм}, чем потом вам будет стыдно/хреново/жопа-жопная на продакшене. |
|||
7
Буковка
26.06.24
✎
13:58
|
(1) в константе, при записи планирую ставить блокировки, чтобы не получилось задвоения
|
|||
8
Буковка
26.06.24
✎
13:58
|
(2) увеличить нельзя, так поставили задачу
|
|||
9
Буковка
26.06.24
✎
13:59
|
(3) можно и так, не принципиально. Хотят, чтобы после 999 добавились латинские буквы
|
|||
10
vde69
26.06.24
✎
14:05
|
(8) (7) оба поста бред
если долбанутую задачу поставили долбоящеры то нужно или отказатся от нее или предложить долбоящерам нормальное решение |
|||
11
vde69
26.06.24
✎
14:03
|
(9) говоришь просто - платформа такое не поддерживате и все...
ну и заодно реши вопрос какой номер будет у документа введенного задним числом |
|||
12
vde69
26.06.24
✎
14:04
|
Допустима нумерация в таком порядке?
009 134 A99 F01 A23 234 555 |
|||
13
Буковка
26.06.24
✎
14:08
|
(12) допустима
|
|||
14
Timon1405
26.06.24
✎
14:36
|
учитывая (3) примерно так, как предлагают в (5)
Число = 1295; База = 36; Результат = ""; Пока Число <> 0 Цикл Поз =Число % База; Результат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Поз + 1, 1) + Результат; Число = Цел(Число / База); КонецЦикла; Результат = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(Результат ,3,"0"); //0ZZ |
|||
15
Буковка
26.06.24
✎
14:40
|
(14) спасибо большое
|
|||
16
Aleksey
26.06.24
✎
15:09
|
(11) У него справочник, типа уникального номера карточки
|
|||
17
Волшебник
26.06.24
✎
18:47
|
(8) Я же сказал, тогда новое поле
|
|||
18
Волшебник
26.06.24
✎
18:49
|
(14) Я бы добавил ещё буквы нижнего регистра, тогда ёмкость поля возрастает ещё на несколько порядков.
|
|||
19
Волшебник
26.06.24
✎
18:50
|
Кстати, есть ещё GUID (внутренний уникальный идентификатор). Вероятно, он тоже годится.
|
|||
20
Aleksey
26.06.24
✎
19:02
|
(18) ну может он это использует для печати штрихкода code 39. А там только цифры и большие буквы
|
|||
21
Волшебник
26.06.24
✎
19:05
|
(20) ну ок
p.s. "она" |
|||
22
crasler
26.06.24
✎
19:08
|
(0) Это получается надо просто хранить счетчик и переводить в 37 ричную систему счисления
|
|||
23
vde69
26.06.24
✎
19:11
|
НовыйКод = Base64(СтарыйКод)
|
|||
24
Злопчинский
26.06.24
✎
19:31
|
ну, чисто поизвращаться:
сделать служебный "невидимый" документ. настроить на него нумератор из трех символов. при необходимости получить новый номер - создать новый документ, записать в попытке. если ОК - взять номер записанного документа. если исключение вывалилось - перейти на очередной префикс как символ(кодсимволатекущегопрефикса+1), занулить цифровую часть, сформировать новый номер, записать в попытке. Если снова исклбючение - все, жпс, пространство номеров закончилось. |
|||
25
Волшебник
26.06.24
✎
19:31
|
(24) Месье знает толк в извращениях!
|
|||
26
Волшебник
26.06.24
✎
19:33
|
Повторюсь:
Со слова "фикция" начинаются все беды и баги. Программы должны быть честными, как молитвы.
Заполнить реквизиты документа, которых нет в объекте#14 |
|||
27
vde69
26.06.24
✎
19:37
|
Можно использовать механизм префиксов
Сделать регистр с измерениями 1. год (дата) 2. ЗаполненыйПрефикс (строка) Получаем "префикс" из списка который отсутствует в регистре дальше - штатно |
|||
28
Злопчинский
26.06.24
✎
19:46
|
(25) Опыт! ;-)
делал у себя аналогично попроще... просто параллельная нумерация, не совпадающая с основной по скорости нумерации. |
|||
29
Буковка
26.06.24
✎
20:26
|
(24) интересное решение
|
|||
30
Волшебник
26.06.24
✎
20:29
|
(29) Я слежу за Вами лично, "секрет тени". Ваши лайки и дизлайки записываются. Потом сверим часы и картины мира.
|
|||
31
Буковка
26.06.24
✎
20:29
|
В итоге:
Решила не трогать стандартную нумерацию. Завела отдельный реквизит. Взяла функцию из (14). В качестве итератора взяла стандартный реквизит код. Поменяла представление в модуле менеджера на свой реквизит. Завтра жду обратную связь - устроит ли такой вариант. Всем спасибо за помощь |
|||
32
Волшебник
26.06.24
✎
20:30
|
(31) Решила она... Кто за тебя решает?
|
|||
33
Буковка
26.06.24
✎
20:34
|
(32) принимать решения и выбирать тот или иной вариант выполнения задачи не является чертой программиста?
Вы беспричинно ко мне строги |
|||
34
Волшебник
26.06.24
✎
20:36
|
(33) Ну может быть... Допустим Вы программист типа меня или даже лучше.
Что ещё можете сказать умного? |
|||
35
Буковка
26.06.24
✎
20:38
|
(34) ничего не скажу, народная мудрость советует не спорить)
|
|||
36
Волшебник
26.06.24
✎
21:52
|
(35) Хорошо сказано.
|
|||
37
breezee
27.06.24
✎
06:06
|
Как вы будете поддерживать нумерацию до окончания транзакции в разных сеансах?
Ни как. Используйте префикс в номерах, это все что дает 1с |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |