Замена нулей в артикуле на буквы

1. alexie.j 13.03.18 18:31 Сейчас в теме
Здравствуйте!
Подскажите пожалуйста как быть в такой ситуации: нужно у всех артикулов номенклатуры, для выгрузки в эксель, заменить лидирующие нули на буквы алфавита.
Пример: 00-00015 станет ABC15.

сейчас делаю вот таким образом:
Буквы = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		Результат = "";
		Для Сч=1 по СтрДлина(Артикул) Цикл
			Если СтрНайти(Буквы, Врег(Сред(Артикул,Сч,1))) = 0 Тогда
				Результат = Результат + Сред(Артикул,Сч,1);
			КонецЕсли;
		КонецЦикла;
+
По теме из базы знаний
Найденные решения
13. YannikAlx 43 14.03.18 09:26 Сейчас в теме
Если внимательно читать задание , то префикс перед дефисом не должен быть заменен....
В артикуле могут быть кроме цифр и буквы , поэтому преобразование в число выдаст ошибку

Вот рабочий код

Буквы = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// Отсекаем Префикс	
	Результат=Прав(Артикул,СтрДлина(Артикул)-СтрНайти(Артикул,"-"));
	
//Осекаем лидирующие нули		
	НулиВАртикуле = "";
	НомерАртикула=Результат;
	Пока Лев(НомерАртикула,1)="0"  Цикл 
		НулиВАртикуле=НулиВАртикуле+"0";
		НомерАртикула=Прав(НомерАртикула,СтрДлина(НомерАртикула)-1);
	КонецЦикла;
	Результат = Лев(Буквы, СтрДлина(НулиВАртикуле)) + НомерАртикула;
Показать
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. Cooler 22 13.03.18 23:43 Сейчас в теме
Генитальная ветка! Такое ощущение, что ни автор, ни советчики не понимают, что делает предложенный ими говнокод.

1. Образец из (1) удалит все буквы из строки, останутся все цифры и знаки - этого хочет автор? Непохоже.
2. Поправка из (2) кроме букв, удалит еще и все цифры, кроме нулей, т.е. и от "00-00015", и от "00-00105" останется "00-000". Ура?
3. Код из (4) преобразует "00-00015" в "ABCDEF15", а "00-00105" в "ABCDE1F5" - может быть, это устроит автора? Не знаю.

В-общем, опять получилась иллюстрация на тему: "Почему 1Сников не считают настоящими программистами?"

Ответ - вот он, как на ладони: если в 1С нет готовой функции для чего-то, то 1Сник превращается в неразумное существо, наугад пробующее все, что взбредет в голову.
ipoloskov; +1
12. akim2040 41 14.03.18 05:53 Сейчас в теме
(10) по факту вашего ответа тоже можно сделать много умозаключений, или вообще не сделать, т.к. видна одна критика.
Я не говорю что она не обоснованная. Но и просто полить все говнокоды и не предоставить своего верного решения мало чем отличается от предложенных решений. Ведь Вы тоже не родились с жёлтой книжкой в руках. Я учусь и на форумах ищу примеры решений проблем пользователей, но видимо Вам "сверху" трудно наклониться и подсказать как правильно сделать.
alexie.j; AnnieCoder; +2
2. Adilgeriy 25 13.03.18 18:35 Сейчас в теме
и в чем вопрос? и мне кажется в Буквы = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"
+
3. alexie.j 13.03.18 18:38 Сейчас в теме
(2)Сейчас результат у меня остаётся 00-00015..Мне кажется что что-то не учла.
Цифры точно стоит использовать?
+
4. AnnieCoder 13.03.18 18:40 Сейчас в теме
Действительно, определить переменную Буквы, как подсказали в (2), ну и как-то так
//на коленке
ТекущаяПозицияБуквы = 1;
Для Сч=1 по СтрДлина(Артикул) Цикл
            Если СтрНайти(Буквы, Врег(Сред(Артикул,Сч,1))) = 0 Тогда
                Результат = Результат + Сред(Буквы,ТекущаяПозицияБуквы ,1);
                ТекущаяПозицияБуквы = ТекущаяПозицияБуквы + 1;
            Иначе
                Результат = Результат + Сред(Артикул,Сч,1);
            КонецЕсли;
        КонецЦикла;
Показать
alexie.j; +1
7. alexie.j 13.03.18 18:59 Сейчас в теме
(4) спасибо. Я сейчас попробую этот способ
+
5. Pixar0000 13.03.18 18:41 Сейчас в теме
а не проще или добавлять впереди букву или при экспорте в эксель прописывать что ячейка текстовая, а не число?
Fox-trot; +1
6. alexie.j 13.03.18 18:59 Сейчас в теме
(5) Да, ячейка текстовая
+
9. Fox-trot 158 13.03.18 22:21 Сейчас в теме
(5) проще не ячейку, а всю колонку целиком
+
8. FesenkoA 57 13.03.18 19:11 Сейчас в теме
1) получить НомерНаПечать (есть в БСП)
2) от длинны артикула (от 6 например) отнять длинну строки номераНаПечать = длинаБкув
3) Артикул = Лев("абсцеф",длинаБкув)+""+НомерНаПечать
alexie.j; +1
11. uk09 14.03.18 04:57 Сейчас в теме
Alexie Mitina, добрый день!

Если дефис в разделителе засчитывается при формировании буквенной части:

Буквы = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
НомерАртикула = Формат(Число(СтрЗаменить(Артикул,"-","")),"ЧГ=0");
Результат = Лев(Буквы, СтрДлина(Артикул) - СтрДлина(НомерАртикула)) + НомерАртикула;
alexie.j; +1
13. YannikAlx 43 14.03.18 09:26 Сейчас в теме
Если внимательно читать задание , то префикс перед дефисом не должен быть заменен....
В артикуле могут быть кроме цифр и буквы , поэтому преобразование в число выдаст ошибку

Вот рабочий код

Буквы = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// Отсекаем Префикс	
	Результат=Прав(Артикул,СтрДлина(Артикул)-СтрНайти(Артикул,"-"));
	
//Осекаем лидирующие нули		
	НулиВАртикуле = "";
	НомерАртикула=Результат;
	Пока Лев(НомерАртикула,1)="0"  Цикл 
		НулиВАртикуле=НулиВАртикуле+"0";
		НомерАртикула=Прав(НомерАртикула,СтрДлина(НомерАртикула)-1);
	КонецЦикла;
	Результат = Лев(Буквы, СтрДлина(НулиВАртикуле)) + НомерАртикула;
Показать
+
15. alexie.j 14.03.18 11:38 Сейчас в теме
(13) Спасибо большое!
+
14. Octopus 337 14.03.18 09:30 Сейчас в теме
Я бы все же поработал с выгрузкой в Excel. Поменять в одном месте обработку выгрузки быстрее и имхо правильнее. В данном случае алгоритмы должны подстраиваться под данные, а не наоборот.
+
Внимание! Тема сдана в архив

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