Имя: Пароль:
1C
1С v8
Формирование кода.
0 wade25
 
28.10.11
16:12
Добрый день =)

Есть число произвольной длинны. От 1 до 8. Каким методом можно его преобразовать так, чтобы если число меньше 8, то слева подставлялся 0 за каждый недостающий разряд?
1 Wingless
 
28.10.11
16:13
Формат()
2 IronDemon
 
28.10.11
16:13
О, пятничная ветка :)
3 izekia
 
28.10.11
16:14
классная тема
4 wade25
 
28.10.11
16:14
+ (0) Имеется ввиду конечно количество цифр в числе =)
5 IronDemon
 
28.10.11
16:15
(1) Слишком просто
6 izekia
 
28.10.11
16:16
Формат(х, "ЧЦ=8; ЧВН=; ЧГ=0")
7 Mort
 
28.10.11
16:16
Обломаю пятничную ветку.

S = Формат(Х, "ЧЦ=8; ЧВН=; ЧГ=");
8 izekia
 
28.10.11
16:17
(5) о боже, я все испортил
9 izekia
 
28.10.11
16:17
(7) урааа
10 wade25
 
28.10.11
16:21
"слева подставлялся"...
Т.е. допустим 123 число, то на выходе нужно "00000123".
11 Живой Ископаемый
 
28.10.11
16:22
1Cникам не нужно постить посты с ответами.. 1Сникам нужно рисовать картинки...
12 Megas
 
28.10.11
16:23
ММм давай так:

КоличествоНулей = 0;

Если  Окр(НужноеЧисло/10000000,0) <> НужноеЧисло/10000000 тогда
  КоличествоНулей = КоличествоНулей+1;

  Если  Окр(НужноеЧисло/1000000,0) <> НужноеЧисло/1000000 тогда
  КоличествоНулей = КоличествоНулей+1;

  Если  Окр(НужноеЧисло/100000,0) <> НужноеЧисло/100000 тогда
  КоличествоНулей = КоличествоНулей+1;

  Если  Окр(НужноеЧисло/10000,0) <> НужноеЧисло/10000 тогда
  КоличествоНулей = КоличествоНулей+1;

  Если  Окр(НужноеЧисло/1000,0) <> НужноеЧисло/1000 тогда
  КоличествоНулей = КоличествоНулей+1;

  Если  Окр(НужноеЧисло/100,0) <> НужноеЧисло/100 тогда
  КоличествоНулей = КоличествоНулей+1;

  Если  Окр(НужноеЧисло/10,0) <> НужноеЧисло/10 тогда
  КоличествоНулей = КоличествоНулей+1;

КонецЕсли ;
КонецЕсли ;
КонецЕсли ;
КонецЕсли ;
КонецЕсли ;
КонецЕсли ;
КонецЕсли ;

ЧислоПрописью = НужноеЧисло;
Пока КоличествоНулей >0 цикл
ЧислоПрописью = "0"+ЧислоПрописью;
КоличествоНулей =КоличествоНулей -1;
КонецЦикла

Вот!
Не благодари =)
13 izekia
 
28.10.11
16:23
(10) омг, автор ты еще тут, а не кодишь?
14 wade25
 
28.10.11
16:26
Мегас спс)
(13) Чего придрался то? =)
15 Mort
 
28.10.11
16:26
(11) Лучше видеоролики с комментариями.
16 Megas
 
28.10.11
16:27
(14) Не советую так делать это шутка !!!
17 izekia
 
28.10.11
16:28
(12) накуй, рекурсия рулит
Функция ОтформатироватьЧисло(число, количествоЗнаков)
   Если СтрДлина(число) < знаков Тогда
       Возврат "0" + ОтформатироватьЧисло(число, количествоЗнаков);
   КонецЕсли;
   Возврат Строка(число);
КонецФункции
18 izekia
 
28.10.11
16:28
(14) ответы в (6) и (7)
19 izekia
 
28.10.11
16:29
(14) но круче конечно как в (17)
20 Megas
 
28.10.11
16:31
Вот смотри по правильному

СтрокасНулями = Формат(ЧислоБезНулей,"ЧЦ=8; ЧВН=; ЧГ=")
21 Reset
 
28.10.11
16:31
(17) СтрДлина(1234567)<8   = косяк
22 Reset
 
28.10.11
16:32
(17) Кроме того, если условие выполнится, получится бесконечный вызов

Не рулит твоя рекурсия
23 Megas
 
28.10.11
16:32
(19) Мне больше нравится как в (12) =) а то в (17) заумно! Г0внокод должен быть тупым как валенок!
24 izekia
 
28.10.11
16:33
(22) да кули, торопился, -1 забыл подписать
25 izekia
 
28.10.11
16:34
исправленная версия(17):
Функция ОтформатироватьЧисло(число, количествоЗнаков)
   Если СтрДлина(число) < знаков Тогда
       Возврат "0" + ОтформатироватьЧисло(число, количествоЗнаков-1);
   КонецЕсли;
   Возврат Строка(число);
КонецФункции
26 Mort
 
28.10.11
16:34
Лев(Pow(10, ЧислоЗнаков) + ТвоёЧисло, ЧислоЗнаков)
27 Читатель
 
28.10.11
16:35
прав("00000000"+стрзаменить(перемЧисл,"",символы.нпп),8)
28 izekia
 
28.10.11
16:35
(21) кстати, да ... шикарно
стрДлина(1234567) = 9
29 izekia
 
28.10.11
16:36
+(28) что это пля за новости такие ... 1С еще скобочки считает?
30 izekia
 
28.10.11
16:37
ну до трех цифр будет работать и ок, а дальше незапланированная фича)
31 wade25
 
28.10.11
16:37
(25) Классно!
32 Живой Ископаемый
 
28.10.11
16:37
2(29) нет, неразрывные пробелы
33 Mort
 
28.10.11
16:37
Вернее

Лев(СтрЗаменить(Pow(10, ЧислоЗнаков) + ТвоёЧисло, " ", ""), ЧислоЗнаков)

//СтрЗаменить чтобы кошерный "Формат" не использовать.
34 izekia
 
28.10.11
16:39
исправленная версия (25):
Функция ОтформатироватьЧисло(числоСтрокойИТолькоСтрокойНоЕслиТриЦифрыТоМожноИЧислом, количествоЗнаков)
   Если СтрДлина(число) < знаков Тогда
       Возврат "0" + ОтформатироватьЧисло(число, количествоЗнаков-1);
   КонецЕсли;
   Возврат Строка(число);
КонецФункции
35 Reset
 
28.10.11
16:39
(33)

Выполнить(СтрЗаменить(
"Лев(СтрЗаменить(Pow(10, ЧислоЗнаков) + ТвоёЧисло, " ", ""), ЧислоЗнаков)"," ",Символы.НПП
))
36 izekia
 
28.10.11
16:39
(32) вот ведь
37 Reset
 
28.10.11
16:40
вычислить то есть.
38 Mort
 
28.10.11
16:45
Да, конечно.
39 izekia
 
28.10.11
16:48
Функция ОтформатироватьЧисло(числоНеСтрока, знаков)
   множитель = 1;
   Для инд = 1 По СтрДлина(знаков - Строка(числоНеСтрока)) Цикл
       множитель = множитель * 10;
   КонецЦикла;
   результат = Строка(числоНеСтрока * множитель);
   Для инд = 1 По СтрДлина(Строка(числоНеСтрока)) Цикл
       результат = Сред(результат, 2) + Лев(результат, 1);
   КонецЦикла;
   Возврат результат;
КонецФункции
40 izekia
 
28.10.11
17:00
с обрезанием:
шаблон = "12345678";
инд = СтрДлина(шаблон);
длинаШаблона = инд;
длинаСтроки = СтрДлина(числоСтрокой);
Пока инд > 0 Цикл
   Если длинаСтроки < инд Тогда
       СтрЗаменить(шаблон, Строка(длинаШаблона - инд + 1), "0");
   Иначе
       СтрЗаменить(шаблон, Строка(длинаСтроки - инд + 1), Сред(числоСтрокой, длинаСтроки - инд + 1));
   КонецЕсли;
   инд = инд - 1;
КонецЦикла;