Подскажите как лучше избавиться от лидирующих нулей и префикса в строке,
привожу возможные варианты строки
1) 00000124
2) 0000012/2
3) 0000012-2
4) К0001571
5) ГК00326
6) 235/0
З.Ы не забываем - платформа 7.7
---
Естесно не работает:-) т.к. цикл бесконечный правильно так -

```1c
    Сч = 1;
    Пока Найти("123456789",Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч,1))=0 Цикл
    Сч = Сч +1;
    КонецЦикла;
    СтрокаНомера = Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч);
```

Или лучше так

```1c
    Для Сч = 1 По СтрДлина(ТаблицаДекларации.НомерСчетаФактуры) Цикл
    Если Найти("123456789",Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч,1)) <> 0 Тогда
    СтрокаНомера = Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч);
    Прервать;
    КонецЕсли;
    КонецЦикла;
```
---
З.Ы не забываем - платформа 7.7 Эххх, молодежь!

Исходя из приведенных вариантов (номер должен начинаться на 1-9):

```1c
    Пока Найти("123456789",Лев(СтрокаНомера,1)=0 Цикл
    СтрокаНомера=Сред(СтрокаНомера,2)";
    Если СтрДлина(СтрокаНомера)=0 Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
```
---
Спасибо, попробую. Мне казалось, что Найти и Сред в 7.7 не доступны.
---
Естесно не работает:-) т.к. цикл бесконечный правильно так -

```1c
    Сч = 1;
    Пока Найти("123456789",Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч,1))=0 Цикл
    Сч = Сч +1;
    КонецЦикла;
    СтрокаНомера = Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч);
```

Или лучше так

```1c
    Для Сч = 1 По СтрДлина(ТаблицаДекларации.НомерСчетаФактуры) Цикл
    Если Найти("123456789",Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч,1)) <> 0 Тогда
    СтрокаНомера = Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч);
    Прервать;
    КонецЕсли;
    КонецЦикла;
```
---
Естесно не работает:-) т.к. цикл бесконечный" А можно поинтересоваться, ТаблицаДекларации.НомерСчетаФактуры - это что? Табличная часть документа? Или таблица значений?
---
Естесно, он не бесконечный, т.к. основан на "откусывании" первого слева символа, пока им не станет "подходящий" 1-9.
а я по коду вижу, что он постоянно берет 1-й исмвол и бесконечно гоняет его в цикле
Пока Найти("123456789",Лев(СтрокаНомера,1)=0 Цикл
---
а я по коду вижу, что он постоянно берет 1-й исмвол и бесконечно гоняет его в цикле А вот этого не видите?

```1c
    СтрокаНомера=Сред(СтрокаНомера,2)";
```
---
СтрокаНомера=Сред(СтрокаНомера,2)";
Этого я вообще не понял :-) берем со второго символа всю строку?
---
реквизит - строка и работаем с ним как со строкой
---
реквизит - строка и работаем с ним как со строкой Реквизит чего?
---
Вынужден спросить :-) какое это имеет значение?, точно не помню (возможно ТЗ)т.к. базы на компе не имею и мне дали тим на 5 мин для исправления кода, задача стояла исправить номер очень быстро, чтобы не отвлекать бухгалтера, Спасибо Вам, что натолкнули на правильное направление.
---
Сooler, респект - оптимальное решение.
как раз и мне помогло ....
---
оптимальное решение. Спасибо, только автор ветки так не считает - у него, видите ли, "Естесно не работает"...

Может, потому, что код был рассчитан на обработку переменной, а не реквизита? Если бы об этом было сказано сразу, то решение выглядело бы чуть-чуть иначе:

```1c
    СтрокаНомера=СокрЛП(ТаблицаДекларации.НомерСчетаФактуры);
    Пока Найти("123456789",Лев(СтрокаНомера,1)=0 Цикл
    СтрокаНомера=Сред(СтрокаНомера,2);
    Если СтрДлина(СтрокаНомера)=0 Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
```
---
То же самое через коды символов. (На мой взгляд, чуть короче и наглядней).

```1c
    Ном = СокрЛП(Ном);
    Пока (КодСимв(Лев(Ном,1)) < 49) Или (КодСимв(Лев(Ном,1)) > 57) Цикл
    Ном = СокрЛП(Сред(Ном,2));
    КонецЦикла;
```