Имя: Пароль:
1C
 
Убрать нули
Ø (PR 25.12.2024 09:08)
0 igablack
 
25.12.24
08:18
Всем привет. Понимаю, что таких тем было уже много, но все же:

У меня выходит номер документа например 0000000550, могу ли я при выводе убрать нули слева?

Типа
ДокНомер = СтрЗаменить(СокрЛ(СтрЗаменить(ДокНомер, "0", " "))," ","0");
СтрокаТаблицы.Параметры.ДокНомер = ДокНомер;
1 Kongo2019
 
25.12.24
08:24
(0)СтрЗаменить заменит все нули в строке, а не только лидирующие.

Номер = "00000000170"
Пока Лев(Номер,1)="0" Цикл
 Номер = Прав(Номер,СтрДлина(Номер)-1);
КонецЦикла;

Возврат Номер;
2 maxab72
 
25.12.24
08:21
преобразуйте в число а потом обратно в строку.
или обход символов и проверка на первый не ноль.
3 Ненавижу 1С
 
гуру
25.12.24
08:22
Если там только цифры, то можно:
XMLСтрока(Число(ДокНомер))
4 Irbis
 
25.12.24
08:25
Но вообще странно, сначала героически заводить лидирующие нули со всем сопутствующим им геморроем, а потом при выводе на печать их резать. Точно, 1Сники перестают быть ленивыми, лень перетекает в тупость.
5 igablack
 
25.12.24
08:27
(1) А если таких номеров много? Чтобы к переменной обратиться и он убрал все нули слева?
6 RAJAH
 
25.12.24
08:27
ПрефиксацияОбъектовКлиентСервер.УдалитьЛидирующиеНулиИзНомераОбъекта
7 Ненавижу 1С
 
гуру
25.12.24
08:27
(4) это генерация номера самой платформой
8 igablack
 
25.12.24
08:27
(2) Можете пример привести?
9 Irbis
 
25.12.24
08:30
(7) А резать тогда зачем?
10 Ненавижу 1С
 
гуру
25.12.24
08:32
(9) в различные внешние данные нужен номер без лидирующих нулей - например печатный формы и XML-файлы ЭДО
11 igablack
 
25.12.24
08:35
Я честно не скажу для чего было заводить такие числа для малого предприятия, я не учувствовал в разработке, сказали обрезать, вот и ищу варианты...
12 Irbis
 
25.12.24
08:36
(10) Номер с нулями и номер без нулей это формально разные документы, ищи потом кто и где накосячил. Если уж есть такие потребности, нужно сразу номер под требования формировать.
13 igablack
 
25.12.24
08:37
Я полностью с Вами согласен....но все же....
14 Ненавижу 1С
 
гуру
25.12.24
08:37
(12) номер однозначно восстанавливается
15 Гена
 
гуру
25.12.24
08:37
(0) Поясните: Вы хотите реальные номера доков обезнолить или только для печати?
16 Ненавижу 1С
 
гуру
25.12.24
08:38
(13) что все же? см (3)
17 igablack
 
25.12.24
08:39
(15) Только для печати, чтобы в печатной форме они фигурировали без первых нулей
18 Мультук
 
гуру
25.12.24
08:40
(17)

В (6) дали нормальный "типовой" ответ.
Что ещё нужно то ?
19 igablack
 
25.12.24
08:43
Он разве не удалит полностью из документа?
20 Irbis
 
25.12.24
08:44
(14) Неа. Обрезанный номер из сабжа "550" можно восстановить с разным количеством нулей, ибо остаётся только надеяться, что соблюдался исходный формат. и не было в истории "урезанных" номеров. При обрезании информация теряется безвозвратно.
21 Kongo2019
 
25.12.24
08:45
(6) А вдруг у него нет БСП?
22 igablack
 
25.12.24
08:47
вооот, поэтому я ищу возможность просто вывести на печать без нулей слева, ну или 5 символов справа
23 Гена
 
гуру
25.12.24
08:48
(17) Функция НомерНаПечать
24 igablack
 
25.12.24
08:48
(21) есть
25 igablack
 
25.12.24
08:49
Обязательно создавать функцию? неужели нельзя в одну строку или через выразить в запросе?
26 Ненавижу 1С
 
гуру
25.12.24
08:50
(20) восстановится до допустимой длины номера документа
27 Ненавижу 1С
 
гуру
25.12.24
08:51
(25) увы запросы в 1С довольно слабы
28 Гена
 
гуру
25.12.24
08:51
(25) Она давно есть:
https://its.1c.ru/db/bsp3110doc/content/1798/hdoc

Неужели же Вы думали, что 1С не учла давным-давно пожелания пользователей?
29 igablack
 
25.12.24
08:52
(28) у меня к сожалению нет доступа....
30 pasha_d
 
25.12.24
08:52
Пока Лев(Номер, 1)="0" Цикл
  Номер = Сред(Номер, 2);
КонецЦикла;
    
Возврат Номер;
31 igablack
 
25.12.24
08:53
(27) как же мне нравится Ваш ник
32 Kongo2019
 
25.12.24
08:55
(24) Ну тогда вообще не проблема - ПрефиксацияОбъектовКлиентСервер.УдалитьЛидирующиеНулиИзНомераОбъекта

Пример использования:

НомерОбъекта = "0ФНК-000365"; // строка

УдалитьЛидирующиеНулиИзНомераОбъекта(НомерОбъекта) // "0ФНК-365"
33 Гена
 
гуру
25.12.24
08:54
(29) НомерНаПечать
Получает номер документа для вывода на печать; из номера удаляются префиксы и лидирующие нули.
Функция:
отбрасывает префикс организации,
отбрасывает префикс информационной базы (опционально),
отбрасывает пользовательские префиксы (опционально),
удаляет лидирующие нули в номере объекта.
Синтаксис

Функция НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт
Параметры

    НомерОбъекта - Строка - номер или код объекта, который преобразуется для вывода на печать.
    УдалитьПрефиксИнформационнойБазы - Булево - признак удаления префикса информационной базы.
    УдалитьПользовательскийПрефикс - Булево - признак удаления пользовательского префикса.
Возвращаемое значение

     Строка - номер на печать.
Пример вызова

Результат = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(НомерОбъекта, УдалитьПрефиксИнформационнойБазы, УдалитьПользовательскийПрефикс)
Доступность

Сервер, Тонкий клиент, Толстый клиент, Внешнее соединение
34 Мультук
 
гуру
25.12.24
08:55
(32)


Он боится совать в неизвестные функции свои номера документов.
Вдруг функция откусит чуток лишнего.
Что потом делать ? На мисту идти ?
35 igablack
 
25.12.24
08:56
(32) это ведь всю функцию нужно копировать в код, а неужели в одну строку нельзя сделать : СтрокаТаблицы.Параметры.Номер = ...... ?
36 Гена
 
гуру
25.12.24
08:56
(32) префикс в бумажном документе ну уж стопудово не нужен
37 igablack
 
25.12.24
08:57
(34) верно)
38 Kongo2019
 
25.12.24
08:57
(34) Ты сделал мой день. Давно я так не смеялся.
39 Kongo2019
 
25.12.24
08:58
(35) СтрокаТаблицы.Параметры.Номер = ПрефиксацияОбъектовКлиентСервер.УдалитьЛидирующиеНулиИзНомераОбъекта(НомерОбъекта)

Вот тебе одна строка.
40 Ненавижу 1С
 
гуру
25.12.24
08:59
(35) это какой-то новый способ переиспользования функций
41 maxab72
 
25.12.24
09:02
(8) 1 и 3 посты. там добрые люди привели примеры кода.
42 PR
 
25.12.24
09:07
(41) И в (1) и в (3) хуйня на постном масле
После (6) нечего обсуждать в ветке
После (35) появилось четкое желание выдать ТС пиздюлей