Здравствуйте!
Подскажите пожалуйста как быть в такой ситуации: нужно у всех артикулов номенклатуры, для выгрузки в эксель, заменить лидирующие нули на буквы алфавита.
Пример: 00-00015 станет ABC15.
сейчас делаю вот таким образом:
Подскажите пожалуйста как быть в такой ситуации: нужно у всех артикулов номенклатуры, для выгрузки в эксель, заменить лидирующие нули на буквы алфавита.
Пример: 00-00015 станет ABC15.
сейчас делаю вот таким образом:
Буквы = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Результат = "";
Для Сч=1 по СтрДлина(Артикул) Цикл
Если СтрНайти(Буквы, Врег(Сред(Артикул,Сч,1))) = 0 Тогда
Результат = Результат + Сред(Артикул,Сч,1);
КонецЕсли;
КонецЦикла;
По теме из базы знаний
Найденные решения
Если внимательно читать задание , то префикс перед дефисом не должен быть заменен....
В артикуле могут быть кроме цифр и буквы , поэтому преобразование в число выдаст ошибку
Вот рабочий код
В артикуле могут быть кроме цифр и буквы , поэтому преобразование в число выдаст ошибку
Вот рабочий код
Буквы = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// Отсекаем Префикс
Результат=Прав(Артикул,СтрДлина(Артикул)-СтрНайти(Артикул,"-"));
//Осекаем лидирующие нули
НулиВАртикуле = "";
НомерАртикула=Результат;
Пока Лев(НомерАртикула,1)="0" Цикл
НулиВАртикуле=НулиВАртикуле+"0";
НомерАртикула=Прав(НомерАртикула,СтрДлина(НомерАртикула)-1);
КонецЦикла;
Результат = Лев(Буквы, СтрДлина(НулиВАртикуле)) + НомерАртикула;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Генитальная ветка! Такое ощущение, что ни автор, ни советчики не понимают, что делает предложенный ими говнокод.
1. Образец из (1) удалит все буквы из строки, останутся все цифры и знаки - этого хочет автор? Непохоже.
2. Поправка из (2) кроме букв, удалит еще и все цифры, кроме нулей, т.е. и от "00-00015", и от "00-00105" останется "00-000". Ура?
3. Код из (4) преобразует "00-00015" в "ABCDEF15", а "00-00105" в "ABCDE1F5" - может быть, это устроит автора? Не знаю.
В-общем, опять получилась иллюстрация на тему: "Почему 1Сников не считают настоящими программистами?"
Ответ - вот он, как на ладони: если в 1С нет готовой функции для чего-то, то 1Сник превращается в неразумное существо, наугад пробующее все, что взбредет в голову.
1. Образец из (1) удалит все буквы из строки, останутся все цифры и знаки - этого хочет автор? Непохоже.
2. Поправка из (2) кроме букв, удалит еще и все цифры, кроме нулей, т.е. и от "00-00015", и от "00-00105" останется "00-000". Ура?
3. Код из (4) преобразует "00-00015" в "ABCDEF15", а "00-00105" в "ABCDE1F5" - может быть, это устроит автора? Не знаю.
В-общем, опять получилась иллюстрация на тему: "Почему 1Сников не считают настоящими программистами?"
Ответ - вот он, как на ладони: если в 1С нет готовой функции для чего-то, то 1Сник превращается в неразумное существо, наугад пробующее все, что взбредет в голову.
(10) по факту вашего ответа тоже можно сделать много умозаключений, или вообще не сделать, т.к. видна одна критика.
Я не говорю что она не обоснованная. Но и просто полить всеговнокоды и не предоставить своего верного решения мало чем отличается от предложенных решений. Ведь Вы тоже не родились с жёлтой книжкой в руках. Я учусь и на форумах ищу примеры решений проблем пользователей, но видимо Вам "сверху" трудно наклониться и подсказать как правильно сделать.
Я не говорю что она не обоснованная. Но и просто полить все
Действительно, определить переменную Буквы, как подсказали в (2), ну и как-то так
//на коленке
ТекущаяПозицияБуквы = 1;
Для Сч=1 по СтрДлина(Артикул) Цикл
Если СтрНайти(Буквы, Врег(Сред(Артикул,Сч,1))) = 0 Тогда
Результат = Результат + Сред(Буквы,ТекущаяПозицияБуквы ,1);
ТекущаяПозицияБуквы = ТекущаяПозицияБуквы + 1;
Иначе
Результат = Результат + Сред(Артикул,Сч,1);
КонецЕсли;
КонецЦикла;
Показать
Alexie Mitina, добрый день!
Если дефис в разделителе засчитывается при формировании буквенной части:
Буквы = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
НомерАртикула = Формат(Число(СтрЗаменить(Артикул,"-","")),"ЧГ=0");
Результат = Лев(Буквы, СтрДлина(Артикул) - СтрДлина(НомерАртикула)) + НомерАртикула;
Если дефис в разделителе засчитывается при формировании буквенной части:
Буквы = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
НомерАртикула = Формат(Число(СтрЗаменить(Артикул,"-","")),"ЧГ=0");
Результат = Лев(Буквы, СтрДлина(Артикул) - СтрДлина(НомерАртикула)) + НомерАртикула;
Если внимательно читать задание , то префикс перед дефисом не должен быть заменен....
В артикуле могут быть кроме цифр и буквы , поэтому преобразование в число выдаст ошибку
Вот рабочий код
В артикуле могут быть кроме цифр и буквы , поэтому преобразование в число выдаст ошибку
Вот рабочий код
Буквы = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// Отсекаем Префикс
Результат=Прав(Артикул,СтрДлина(Артикул)-СтрНайти(Артикул,"-"));
//Осекаем лидирующие нули
НулиВАртикуле = "";
НомерАртикула=Результат;
Пока Лев(НомерАртикула,1)="0" Цикл
НулиВАртикуле=НулиВАртикуле+"0";
НомерАртикула=Прав(НомерАртикула,СтрДлина(НомерАртикула)-1);
КонецЦикла;
Результат = Лев(Буквы, СтрДлина(НулиВАртикуле)) + НомерАртикула;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот