Версия для печати темы (https://pro1c.org.ua/index.php?s=ba5159ab75e6a67751689e75ef340831&showtopic=54244)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Не коректре виведення інформацї в команді

Автор: l2d808 21.09.19, 15:15

Доброго часу, шановне товариство.
Користуюст 1с8,3 конфа самописна

Є такий код:

кодНовий=0;
    Пока Выборка.Следующий() Цикл
        кодНовий=кодНовий+1;
        сообщить(Прав((сокрЛП("0000"+кодНовий)),4)+" - "+стрЗаменить(кодНовий," ","")+"   кількість-"+стрДлина(Прав((сокрЛП("0000"+кодНовий)),4)));
    КонецЦикла;


В результаті дії цього коду отримую:
0001 - 1 кількість-4
0002 - 2 кількість-4
0003 - 3 кількість-4
0004 - 4 кількість-4
***
0997 - 997 кількість-4
0998 - 998 кількість-4
0999 - 999 кількість-4
 000 - 1 000 кількість-4
 001 - 1 001 кількість-4
***
 521 - 1 521 кількість-4
522 - 1 522 кількість-4
 523 - 1 523 кількість-4
 524 - 1 524 кількість-4
 525 - 1 525 кількість-4
 
Запитання: чому при значенні кодНовий>999 значення виразу Прав((сокрЛП("0000"+кодНовий)),4) перетворюється на 3 символи, хоче знячення виразу стрДлина(Прав((сокрЛП("0000"+кодНовий)),4))=4

Поясніть в чому тут помилка. Зачасно дякую за Ваші відповіді.


 ! 

https://pro1c.org.ua/index.php?act=announce&id=2: 5
 

Автор: awp 21.09.19, 17:57

l2d808 @ Сегодня, 16:15 * ,

Формат(кодНовий,"ЧГ=")

Автор: Prospero 21.09.19, 20:46

l2d808 @ Сегодня, 16:15 * ,

Роздільник розрядів числа - це не зовсім пробіл - це нерозривний пробіл з кодом 160, якщо хочете його прибирати через стрЗаменить - використовуйте другим параметром або Символ(160) або Символы.НПП, або ж застосовуйте попереднє форматування числа за допомогою приклада від AWP

Автор: awp 21.09.19, 21:23

нашел функцию у себя :

функция прКод(Код)
    Возврат СтрЗаменить(СтрЗаменить(Код," ",""),Символы.НПП,"");
КонецФункции


Формат, вроде не сработает.

Автор: Prospero 22.09.19, 14:21

Цитата(awp @ 21.09.19, 22:23) *
Формат, вроде не сработает.

Да должен вроде...
Сообщить(Прав((сокрЛП("0000"+Формат(кодНовий,"ЧГ=0"))),4)+" - "+кодНовий+"   кількість-"+стрДлина(Прав((сокрЛП("0000"+кодНовий)),4)));

0998 - 998   кількість-4
0999 - 999   кількість-4
1000 - 1 000   кількість-4
1001 - 1 001   кількість-4

Не знаю, так ТС-у нужно или нет

Автор: Petre 23.09.19, 9:16

QUOTE (l2d808 @ 21.09.19, 15:15) *
Поясніть в чому тут помилка.

Типове перетворення значення типу Число у тип Рядок відбувається із локалізованим форматуванням (у прикладі - із додаванням пробілу як роздільника розрядів).

Автор: l2d808 23.09.19, 9:49

Товариство, дякую за допомогу.
Вийшов з ситуації таким чином.

кон=Формат(нач,"ЧГ=100");

Автор: Макс1С 23.09.19, 13:50

l2d808 @ Сегодня, 10:49 * ,

Лучше напишите

кон=Формат(нач,"ЧГ=0");


вряд-ли будет число больше 100 разрядов, но таким образом вы просто выключите разбиение числа на группы

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua