Как убрать нули в коде номенклатуры

1. _Enot_ 10 11.04.19 09:46 Сейчас в теме
Как убрать нули в коде номенклатуре после запроса? Чтобы был формат 128 просто
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dhurricane 11.04.19 09:49 Сейчас в теме
(1) Если речь идет об обработке результата запроса во встроенном языке, то может воспользоваться типовой функцией:
КодНоменклатуры = СтроковыеФункцииКлиентСервер.УдалитьПовторяющиесяСимволы(Выборка.КодНоменклатуры, "0");
+
4. _Enot_ 10 11.04.19 09:54 Сейчас в теме
(2)
КодНоменклатуры = СтроковыеФункцииКлиентСервер.УдалитьПовторяющиесяСимволы(Выборка.КодНоменклатуры, "0");

Да нужно в выборки его обрезать а потом в ТЗ выгрузить
+
5. dhurricane 11.04.19 09:54 Сейчас в теме
(4) А, так значит обрезать нужно в самом запросе?
+
9. _Enot_ 10 11.04.19 10:01 Сейчас в теме
(5)Получаеться да нужно в самом запросе их убрать
+
6. Octopus 337 11.04.19 09:56 Сейчас в теме
(2) Ага, и словите сюрприз для кодов вида "000200"
+
7. dhurricane 11.04.19 09:57 Сейчас в теме
(6) И какой же сюрприз?
+
12. Kovekh 11.04.19 10:04 Сейчас в теме
(7)
Так Вы уберёте повторяющиеся нули и у вас будет код 2, а не 200
+
14. dhurricane 11.04.19 10:12 Сейчас в теме
(12) Нет. Эта функция удаляет лишь с одной стороны символы. У нее третий параметр - указание, с какой стороны удалять - слева или справа. По умолчанию слева.
+
15. Kovekh 11.04.19 10:14 Сейчас в теме
(14)
Таки третий параметр в Вашем примере не указан)) Потому в такой формулировке он удалит всё, не?
+
16. dhurricane 11.04.19 10:16 Сейчас в теме
(15) Нет. По умолчанию он равен "Слева".
+
17. dhurricane 11.04.19 10:19 Сейчас в теме
(15) (6) Зачем гадать?:)
БСП 3.0.1.349
// Удаляет крайние повторяющиеся символы слева или справа в строке.
//
// Параметры:
//  Значение        - Строка - исходная строка, из которой необходимо удалить крайние повторяющиеся символы;
//  УдаляемыйСимвол - Строка - искомый символ для удаления;
//  Режим           - Строка - "Слева" или "Справа" - режим удаления символов в исходной строке.
//
// Возвращаемое значение:
//  Строка - обрезанная строка.
//
Функция УдалитьПовторяющиесяСимволы(Знач Значение, Знач УдаляемыйСимвол, Знач Режим = "Слева") Экспорт
	
	Если ВРег(Режим) = "СЛЕВА" Тогда
		Пока Лев(Значение, 1) = УдаляемыйСимвол Цикл
			Значение = Сред(Значение, 2);
		КонецЦикла;
	ИначеЕсли ВРег(Режим) = "СПРАВА" Тогда
		Пока Прав(Значение, 1) = УдаляемыйСимвол Цикл
			Значение = Лев(Значение, СтрДлина(Значение) - 1);
		КонецЦикла;
	КонецЕсли;
	
	Возврат Значение;
	
КонецФункции
Показать
bashirov.rs; ben19791010; Octopus; +3
21. Octopus 337 11.04.19 11:04 Сейчас в теме
(17) Ух ты как. А по названию функции и не скажешь, что удаляет именно так. Я предположил, что просто все повторы сокращает до одного символа. Остается только убрать префикс, но в случае топикпастера его, судя по всему, нет
+
3. platonov.e 158 11.04.19 09:51 Сейчас в теме
https://infostart.ru/public/532581/

PS в комментариях там куда лучше примеры
SedovSU@mail.ru; +1
8. _Enot_ 10 11.04.19 10:01 Сейчас в теме
(3)К примеру что можно прописать в выборке Цикле, чтобы их убрать
+
13. SedovSU@mail.ru 297 11.04.19 10:09 Сейчас в теме
(8) если какая то типовая конфигурация то в ней есть процедура

Пока ВыборкаРезультат.Следующий() Цикл
Номер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаРезультата.СсылкаНаДокумент.Номер);
Конеццикла


На ее основе можно и для справочника что то сделать
+
18. _Enot_ 10 11.04.19 10:22 Сейчас в теме
(13)
СсылкаНаДокумент.
Мне номенклатура именно нужно
+
19. _Enot_ 10 11.04.19 10:24 Сейчас в теме
(18)А подождите она убирает, но после выгрузки запроса в ТЗ все равно прежний код
+
22. oleg-x 26 11.04.19 11:06 Сейчас в теме
(19) Если обходите выборку а потом выгружаете, то это не имеет смысла, ибо в самой выборке ничего не меняется.
Сначала выгружаете в ТЗ, а уже потом обходите эту ТЗ в цикле и меняете номера.
+
25. _Enot_ 10 11.04.19 12:39 Сейчас в теме
(22)А как к примеру добваить префикс и нуля? К примеру 00-00000123 ? Сейчас просто код 123
+
23. SedovSU@mail.ru 297 11.04.19 11:22 Сейчас в теме
(18) вы можете указать Номенклатура.Код
+
20. _Enot_ 10 11.04.19 10:25 Сейчас в теме
(13)Или это нужно наоборот как то делать?
+
10. SedovSU@mail.ru 297 11.04.19 10:02 Сейчас в теме
в типовых конфигурациях есть процедуры которые выводят номер на печать, в них отсекается и префикс и нули. вот ее нужно использовать, но в запрос вы это не вставите. У вас для случаев например, 0000123 вы сможете как то убрать а вот для случая 0000200 - реально получите что то не понятно, а если номер 00100200 то как тогда
+
11. palsergeich 11.04.19 10:02 Сейчас в теме
Рекомендую посмотреть подсистему Управление префиксацией, там была такая функция.
И в запросе не получится по человечески этого сделать.
+
26. oleg-x 26 11.04.19 12:45 Сейчас в теме
Только проверять на длину кода, что бы разное количество нулей подставлять.
Если СтрДлина(Код) = 1 Тогда
Префикс = "00-0000000";
ИначеЕсли СтрДлина(Код) = 2 Тогда
Префикс = "00-000000";
ИначеЕсли СтрДлина(Код) = 3 Тогда
Префикс = "00-00000";
КонецЕсли;
Код = Префикс + Код;
+
27. makfromkz 35 12.04.19 18:37 Сейчас в теме
(26)Можно покороче написать:
Префикс = "00-0000000";
Код = Лев(Префикс,10 - СтрДлина(Код))+Код;
oleg-x; +1
Внимание! Тема сдана в архив

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