Преобразовать строки с данными типа: 00ББ-001204 в ББ-1204 , либо 0000-001204 в 1204?
может кто что посоветует.
---
Массив = СтрРазделить(ВхСтрока,"-", Ложь);
Далее ужа анализировать данные в массиве. Для "чисел" можно в попытке переводить в число и обратно в строку через Формат.
Для строк перебирать посимвольно, пока не закончатся символы "0".
Потом собрать в одну строку.
---
В итоге получилось вот такая картина честно говоря не знаю красиво ли но все отрабатывает

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПриходДокументов.ТТН КАК ТТН
    |ИЗ
    | Документ.ПриходДокументов КАК ПриходДокументов";

    РезультатЗапроса = Запрос.Выполнить();
    Накладные = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТТН");

    Для каждого стр Из Накладные Цикл

    МассивСтроки = СтрРазделить(стр,"-", Ложь);
    НаклБезНулей = Новый Массив();
    Для каждого сим из МассивСтроки Цикл
    Попытка
    НомерБезНулей = СтрЗаменить(СокрЛ(СтрЗаменить(сим, "0", " "))," ","0");
    НаклБезНулей.Добавить(НомерБезНулей);
    Исключение
    Сообщить(НомерБезНулей+"Чет какая то хрень с номером");
    КонецПопытки;
    КонецЦикла;
    СтрокаИзМассива = СтрСоединить(НаклБезНулей, "-");
    Сообщить(Стр + " было, а теперь стало" +СтрокаИзМассива);
    КонецЦикла;
```

00ББ-005938 было, а теперь стало ББ-5938
00ББ-010938 было, а теперь стало ББ-10938.
---
Массив = СтрРазделить(ВхСтрока,"-", Ложь);
Далее ужа анализировать данные в массиве. Для "чисел" можно в попытке переводить в число и обратно в строку через Формат.
Для строк перебирать посимвольно, пока не закончатся символы "0".
Потом собрать в одну строку.
---
Потом собрать в одну строку вот с этим не подскажите ?
---
В итоге получилось вот такая картина честно говоря не знаю красиво ли но все отрабатывает

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПриходДокументов.ТТН КАК ТТН
    |ИЗ
    | Документ.ПриходДокументов КАК ПриходДокументов";

    РезультатЗапроса = Запрос.Выполнить();
    Накладные = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТТН");

    Для каждого стр Из Накладные Цикл

    МассивСтроки = СтрРазделить(стр,"-", Ложь);
    НаклБезНулей = Новый Массив();
    Для каждого сим из МассивСтроки Цикл
    Попытка
    НомерБезНулей = СтрЗаменить(СокрЛ(СтрЗаменить(сим, "0", " "))," ","0");
    НаклБезНулей.Добавить(НомерБезНулей);
    Исключение
    Сообщить(НомерБезНулей+"Чет какая то хрень с номером");
    КонецПопытки;
    КонецЦикла;
    СтрокаИзМассива = СтрСоединить(НаклБезНулей, "-");
    Сообщить(Стр + " было, а теперь стало" +СтрокаИзМассива);
    КонецЦикла;
```

00ББ-005938 было, а теперь стало ББ-5938
00ББ-010938 было, а теперь стало ББ-10938.
---
нормально, только Попытка тут лишняя. Исключений быть не может.
---
нормально, только Попытка тут лишняя. Исключений быть не может. Убрал. спасибо
---
НомерБезНулей = СтрЗаменить(НомерСНулями, "0", " ");
---
НомерБезНулей = СтрЗаменить(НомерСНулями, "0", " "); Семён Семёныч... Этот код заменит все нули, поэтому получится " ББ-12 4" или " - 12 4".

Не думаю, что такой результат устроит автора.
---
как то так
НовНомер = СтрЗаменить(Лев(ВхСтрока,4),"0","")+"-"+Число(Прав(ВхСтрока,6));
---
Если верно понимаю, идет речь о преобразовании номера документа для печати

Для современных конфигураций под управляемые формы работающих на БСП (УТ 11, БП 3, УНФ и т.д. ), это делается так:

НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(НомерДокумента, Истина, Истина);

Для конфигураций (УТ 10.3, БП 2.0) на обычных формах, эта процедура имеет следующий вид:

Номер = ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект);
---
НомерБезНулей = СтрЗаменить(НомерСНулями, "00", " ");
будет ББ-1204
---
будет ББ-1204 Браво! Долго придумывали? А из номера "00ББ-001300" что получится?

М-да, все чаще убеждаюсь, что среди 1Сников остается все меньше программистов - без "готовой функции" (см.6) шагу ступить не могут.

Направление для программиста указано в (1) - разложить строку на подстроки и их обрабатывать по отдельности.

А уж если нет способности написать цикл для посимвольного перебора, то вот способ избавиться от лидирующих нулей в одну строчку:

```1c
    НомерБезНулей = СтрЗаменить(СокрЛ(СтрЗаменить(ПодстрокаСНулями, "0", " "))," ","0");
```

Способ корявенький, но зато рабочий. Если только в ПодстрокаСНулями нет пробелов!

P.S. На всякий случай уточняю - применять этот код надо для каждого элемента массива (см.1), а не для номера целиком.
---
```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПриходДокументов.ТТН КАК ТТН
    |ИЗ
    | Документ.ПриходДокументов КАК ПриходДокументов";

    РезультатЗапроса = Запрос.Выполнить();
    Накладные = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТТН");

    Для каждого стр Из Накладные Цикл
    МассивСтроки = СтрРазделить(стр,"-", Ложь); // Тут делим строку на 2 части, до и после "-"
    Для каждого сим из МассивСтроки Цикл // Убираем 00 тут с каждой части
    НомерБезНулей = СтрЗаменить(СокрЛ(СтрЗаменить(сим, "0", " "))," ","0");
    Сообщить(НомерБезНулей);
    КонецЦикла;

    КонецЦикла;
```

 в таком виде отрабатывает код.
дальше получается результатом "НомерБезНулей" который в первом круге убирает с 00ББ оставляя ББ, во втором круге с 001204 оставляя 1204, Соединить через дефис и все?
---
Преобразовать строки с данными типа: 00ББ-001204 в ББ-1204 , либо 0000-001204 в 1204?
задача то стояла четко - избавиться от 00 в строке -- какой вопрос такой ответ

если для нумерации документов способ с разложением на массив тоже не ахти завтра бизнес захочет убрать дефис и метод становится не рабочим.

из строки номера отрезаем часть строки которую не трогаем
ПраваяЧастьНомера = Прав(номерСтрока, 4)
номерСтрокаБезПравойЧасти = лев(номерСтрока, стрдлина(номерСтрока)-5)

и уже в этой строке стрзаменить(номерСтрокаБезПравойЧасти, "00","")
к получившейся строке добавляем ПраваяЧастьНомера
примерно так
если же просто все нули убрать то стрзаменить(номерСтрока, "0","")