Убираем лидирующие нули Бух7.7

1. Doreng 28 03.08.18 15:13 Сейчас в теме
Подскажите как лучше избавиться от лидирующих нулей и префикса в строке,
привожу возможные варианты строки
1) 00000124
2) 0000012/2
3) 0000012-2
4) К0001571
5) ГК00326
6) 235/0
З.Ы не забываем - платформа 7.7
Найденные решения
4. Doreng 28 03.08.18 16:32 Сейчас в теме
(2) Естесно не работает:-) т.к. цикл бесконечный правильно так -
Сч = 1;
Пока Найти("123456789",Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч,1))=0 Цикл
Сч = Сч +1;
КонецЦикла;
СтрокаНомера = Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч);

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

Исходя из приведенных вариантов (номер должен начинаться на 1-9):
Пока Найти("123456789",Лев(СтрокаНомера,1)=0 Цикл
   СтрокаНомера=Сред(СтрокаНомера,2)";
   Если СтрДлина(СтрокаНомера)=0 Тогда
      Прервать;
   КонецЕсли;
КонецЦикла;
3. Doreng 28 03.08.18 15:55 Сейчас в теме
(2)Спасибо, попробую. Мне казалось, что Найти и Сред в 7.7 не доступны.
4. Doreng 28 03.08.18 16:32 Сейчас в теме
(2) Естесно не работает:-) т.к. цикл бесконечный правильно так -
Сч = 1;
Пока Найти("123456789",Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч,1))=0 Цикл
Сч = Сч +1;
КонецЦикла;
СтрокаНомера = Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч);

Или лучше так
Для Сч = 1 По СтрДлина(ТаблицаДекларации.НомерСчетаФактуры) Цикл
Если Найти("123456789",Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч,1)) <> 0 Тогда 
СтрокаНомера = Сред(ТаблицаДекларации.НомерСчетаФактуры,Сч);
Прервать;
КонецЕсли;
КонецЦикла;
5. Cooler 22 03.08.18 17:04 Сейчас в теме
(4)
Естесно не работает:-) т.к. цикл бесконечный
" А можно поинтересоваться, ТаблицаДекларации.НомерСчетаФактуры - это что? Табличная часть документа? Или таблица значений?
6. Doreng 28 03.08.18 17:10 Сейчас в теме
(5)
Естесно, он не бесконечный, т.к. основан на "откусывании" первого слева символа, пока им не станет "подходящий" 1-9.

а я по коду вижу, что он постоянно берет 1-й исмвол и бесконечно гоняет его в цикле
Пока Найти("123456789",Лев(СтрокаНомера,1)=0 Цикл
9. Cooler 22 03.08.18 17:13 Сейчас в теме
(6)
а я по коду вижу, что он постоянно берет 1-й исмвол и бесконечно гоняет его в цикле
А вот этого не видите?
СтрокаНомера=Сред(СтрокаНомера,2)";
11. Doreng 28 03.08.18 17:17 Сейчас в теме
(9)
СтрокаНомера=Сред(СтрокаНомера,2)";

Этого я вообще не понял :-) берем со второго символа всю строку?
7. Doreng 28 03.08.18 17:11 Сейчас в теме
(5)реквизит - строка и работаем с ним как со строкой
8. Cooler 22 03.08.18 17:12 Сейчас в теме
(7)
реквизит - строка и работаем с ним как со строкой
Реквизит чего?
10. Doreng 28 03.08.18 17:15 Сейчас в теме
(8)Вынужден спросить :-) какое это имеет значение?, точно не помню (возможно ТЗ)т.к. базы на компе не имею и мне дали тим на 5 мин для исправления кода, задача стояла исправить номер очень быстро, чтобы не отвлекать бухгалтера, Спасибо Вам, что натолкнули на правильное направление.
12. Bumerang17 04.08.18 16:42 Сейчас в теме
(2)
Сooler, респект - оптимальное решение.
как раз и мне помогло ....
13. Cooler 22 04.08.18 18:28 Сейчас в теме
(12)
оптимальное решение.
Спасибо, только автор ветки так не считает - у него, видите ли, "Естесно не работает"...

Может, потому, что код был рассчитан на обработку переменной, а не реквизита? Если бы об этом было сказано сразу, то решение выглядело бы чуть-чуть иначе:
СтрокаНомера=СокрЛП(ТаблицаДекларации.НомерСчетаФактуры);
Пока Найти("123456789",Лев(СтрокаНомера,1)=0 Цикл
   СтрокаНомера=Сред(СтрокаНомера,2);
   Если СтрДлина(СтрокаНомера)=0 Тогда
      Прервать;
   КонецЕсли;
КонецЦикла;
14. Vlan 36 06.08.18 08:11 Сейчас в теме
То же самое через коды символов. (На мой взгляд, чуть короче и наглядней).
	Ном = СокрЛП(Ном);
	Пока (КодСимв(Лев(Ном,1)) < 49) Или (КодСимв(Лев(Ном,1)) > 57) Цикл
		Ном = СокрЛП(Сред(Ном,2));
	КонецЦикла;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот