Имя: Пароль:
LIFE
Юмор
OFF: Убрать первые нули из номера
0 Dooro
 
25.05.11
13:45
Есть длина строки = 10
нумерация идет ,например 0000000001,0000000002, и тд
как оставить "чистый" номер ?
например из 0000000209 оставить 209
1 Irbis
 
25.05.11
13:45
Число?
2 PR
 
25.05.11
13:45
(0) Ты действительно программируешь на 1С три года?
3 Попытка1С
 
25.05.11
13:46
Поставить числовой тип у номера?
4 Dooro
 
25.05.11
13:46
тип строка
5 Нуф-Нуф
 
25.05.11
13:46
(2)+1
6 Dooro
 
25.05.11
13:46
оставить строку
7 Попытка1С
 
25.05.11
13:46
(6) Написать обработку не предлагать?
8 Irbis
 
25.05.11
13:47
Строка(Число(НомерСНулями))
9 and2
 
25.05.11
13:47
ОбщегоНазначения.ПолучитьНомерНаПечать
10 shamannk
 
25.05.11
13:47
Строка(Число(000000001)) Взлетит?
11 НуВотКак
 
25.05.11
13:48
НомерНаПечать
12 Dooro
 
25.05.11
13:48
нули убрать я знаю как.. но уберутся и внутренние нули из 209 останется 29
13 Irbis
 
25.05.11
13:48
(12) Пятница не завтра
14 Dem1urg
 
25.05.11
13:49
(12) Чукча не читатель?
15 and2
 
25.05.11
13:49
(13) сегодня?
16 Попытка1С
 
25.05.11
13:49
(12) Тяжелый случай..
17 hhhh
 
25.05.11
13:50
(12) кОндидат наук?
18 Рэйв
 
25.05.11
13:50
СтрЗаменить(Номер,"0","");
19 Рэйв
 
25.05.11
13:51
хотя не покатит:)
20 Рэйв
 
25.05.11
13:51
в номерер тоже убьет
21 Попытка1С
 
25.05.11
13:51
(18) Еще один..
22 Dooro
 
25.05.11
13:52
да можно перебирать с лева направо. но я думал может проще как то
23 Dooro
 
25.05.11
13:52
перебирать пока следующий символ <> 0
24 lxs
 
25.05.11
13:52
(22) проснись, епт.. строка(число(твойномер))..
25 PR
 
25.05.11
13:53
(12) LOL
26 Dooro
 
25.05.11
13:53
номер и так тип строка.
27 almar
 
25.05.11
13:53
Пока Лев(Номер,1)="0" Цикл
Номер=Сред(Номер,2);
КонецЦикла;
28 Mitriy
 
25.05.11
13:54
а то, что в (9) посмотреть не айс?
29 Wobland
 
25.05.11
13:54
ВК не предлагали ешё написать?
30 PR
 
25.05.11
13:54
(27) Ты чо секреты мастерства начинающим раздаешь, он даже пятерки еще не намотал :))
31 rs_trade
 
25.05.11
13:54
(22) про преобразование типов слышал?
32 Irbis
 
25.05.11
13:55
(15) В обед не закусывал
33 almar
 
25.05.11
13:55
(30) Я сегодня добрый
34 Irbis
 
25.05.11
13:56
(33) Из-за таких дореньких слой икры и масла на булке у 1сников истончается
35 almar
 
25.05.11
13:57
(34) Неее. Чем больше раздаешь, тем больше получаешь.
36 rs_trade
 
25.05.11
13:57
предлагаю накидать автору годных алгоритмов. Число не предлагать!
37 fisher
 
25.05.11
13:58
(34) Не истончается. Автор сюда скоро вернется проблемы с нумерацией разгребать.
38 Irbis
 
25.05.11
13:59
Таким конфигурастам надо презервативы бесплатно раздавать...
39 hhhh
 
25.05.11
14:00
чем больше таких авторов, тем больше зарплата. Надо его всячески поддерживать. А то если будут все шибко умные, написать отчет будет стоить 50 рублей.
40 Mitriy
 
25.05.11
14:00
(37) предполагаешь, что он подразумевает нумерацию? Тогда ветку надо переносить на пятницу...
41 shamannk
 
25.05.11
14:01
Предлагаю так: все 0=" "
СокрЛП(Номер)
ну а потом " "=0
42 Mitriy
 
25.05.11
14:01
(41) а с префиксами чего делать будешь?
43 Mickeleangelo
 
25.05.11
14:02
(36)
Для Ном = 1 По 9999999999 Цикл
   Проверка = Прав("0000000000 + Формат(Ном, "ЧРГ=''; ЧГ=0;"), 10);
   Если Проверка = Номер Тогда
       Номер = Формат(Ном, "ЧРГ=''; ЧГ=0;");
       Прервать;
   КонецЕсли;
КонецЦикла;
44 Ахиллес
 
25.05.11
14:03
Чем тупее тема, тем больше в ней ответов.
Если создать тему "сколько будет 2+2?" будет в ней 1000 ответов - 4?
45 and2
 
25.05.11
14:03
(42) вот сейчас ты конкретно отобрал у кого то кусок масла :(
46 Dooro
 
25.05.11
14:03
префиксов нет
тип значения строка = 10 символов.
47 Mitriy
 
25.05.11
14:03
блин... ну есть же уже готовая функция во всех, пожалуй, типовых...
зоопарк велосипедистов...
48 Mickeleangelo
 
25.05.11
14:03
(43) Ошибся:
Прав("0000000000" + …);
49 Дикообразко
 
25.05.11
14:04
(42) кстати, а вот 77 лучше с неявным преобразованием работала, сейчас 8ка ошибки выдает
50 lxs
 
25.05.11
14:04
(46) Я правильно понял? твой ник читается "ДУРо"?
51 Dooro
 
25.05.11
14:04
ОбщегоНазначения.ПолучитьНомерНаПечать - у меня не типовая
этого нет
52 Попытка1С
 
25.05.11
14:04
Автор ты сначало руками перенумеруй номера типа 000206 на 0002О2, т.е. между цифрами замени 0 на букву.

А потом воспользуйся секретным оружием из (18)...
53 NDN
 
25.05.11
14:04
вот нетленка, делюсь:

Если Ном="0000000001" Тогда Возврат "1"
ИначеЕсли Ном="0000000002" Тогда Возврат "2"
ИначеЕсли Ном="0000000003" Тогда Возврат "3"
ИначеЕсли Ном="0000000004" Тогда Возврат "4"
.....
КонецЕсли;
54 shamannk
 
25.05.11
14:07
(42) Вот жить будет (46)
55 PuhUfa
 
25.05.11
14:07
(53) а может справочник соответсвий? -)))
56 lxs
 
25.05.11
14:07
Пока 1=1 Цикл
   Если Лев(ТвойНомер,1) = "0" Тогда
       ТвойНомер = Прав(ТвойНомер, СтрДлина(ТвойНомер)-1);
   Иначе
       Прервать;
   КонецЕсли;
КонецЦикла;
57 Попытка1С
 
25.05.11
14:07
(53) Выложи весь код пжл...
58 Voronve
 
25.05.11
14:07
ТС дибил
59 aleks-id
 
25.05.11
14:08
похоже автор толстый тролль
60 PuhUfa
 
25.05.11
14:08
(44) не взлетит -)
2 + 2 = 3.9999999999999999999999999999999...
61 Дикообразко
 
25.05.11
14:09
(53) надо было так делать
Если Ном = Формат(1,"ЧЦ=10; ЧВН=; ЧГ=0") Тогда Возврат "1"
ИначеЕсли Ном=Формат(2,"ЧЦ=10; ЧВН=; ЧГ=0") Тогда Возврат "2"
ИначеЕсли Ном=Формат(3,"ЧЦ=10; ЧВН=; ЧГ=0") Тогда Возврат "3"
ИначеЕсли Ном=Формат(4,"ЧЦ=10; ЧВН=; ЧГ=0") Тогда Возврат "4"
.....
КонецЕсли;
62 Нуф-Нуф
 
25.05.11
14:10
гыгыгы это развод :)
63 rs_trade
 
25.05.11
14:11
(53) дык можно же табличку соответствия забацать. Например на справочнике, а потом запросом получать соответствие.
64 VladZ
 
25.05.11
14:11
Абаржался!!!
65 VladZ
 
25.05.11
14:12
Тема дня, ё-моё...
66 aleks-id
 
25.05.11
14:12
(63) не по джедайски. табличку надо заполнять на лету :)
67 Эмбеддер
 
25.05.11
14:12
(61) Самое интересное должно быть там, где многоточие
68 Попытка1С
 
25.05.11
14:12
Даже миста перестала отображать код правильна...
69 Дикообразко
 
25.05.11
14:13
а можно еще вот так

Для Сч = 1 По 10000000000 Цикл
 Если Ном = Формат(Сч,"ЧЦ=10; ЧВН=; ЧГ=0") Тогда Возврат Сч;
КонецЦикла
70 YV
 
25.05.11
14:13
(53) Неужели индусы кодят уже и на 1с.
71 VladZ
 
25.05.11
14:13
(68) Миста обладает искуственным интелектом... Гов нокод не подсвечивается...
72 rs_trade
 
25.05.11
14:15
(66) да один раз можно. Количество записей, соответственно самой большой разрядности из всех документов. Надо же что бы универсально было, для многих документов )))
73 Дикообразко
 
25.05.11
14:15
(68) в лайфе не кажет
74 forforumandspam
 
25.05.11
14:16
(73) А в (43) тогда что?
75 sda553
 
25.05.11
14:16
Теперь Dooro надо создать кучу тем на мисте, чтобы эта тема похоронилась как можно глубже и как можно быстрее забылась
76 Irbis
 
25.05.11
14:17
(75) Это уже невозможно, такие темы забываются небыстро
77 Mitriy
 
25.05.11
14:17
(66) сделать регистр сведений...
Измерение - любой возможный номер документа с нулями...
Ресурс - представление без нулей...
заполнять в модуле сеанса и пользоваться...
потом чистить, чтобы база не росла...
78 zbv
 
25.05.11
14:17
(74) тогда тема была еще в V8
79 Дикообразко
 
25.05.11
14:17
(14)
тест


Пока Истина Цикл
Прервать;
КонецЦикла
[\1C]
80 Дикообразко
 
25.05.11
14:17
(74) баг
81 hhhh
 
25.05.11
14:17
(70) дык, был же где-то здесь Индийска Программиста.
82 Попытка1С
 
25.05.11
14:18
(75) Легче новый ник придумать..
83 sda553
 
25.05.11
14:19
(82) три года опыта пропадет
84 1Сергей
 
25.05.11
14:19
Формат(НомерДок,"Ч10"); // для 1с77
85 lxs
 
25.05.11
14:19
Процедура dooro(ТвойКод)

   Нуль = Найти(ТвойКод, Символ(48));
   Если Нуль Тогда
       ТвойКод = Сред(ТвойКод,2);
       dooro(ТвойКод);
   КонецЕсли;

КонецПроцедуры
86 1Сергей
 
25.05.11
14:19
0+Номердок
87 VladZ
 
25.05.11
14:19
(75) Да ладно вам! Человек развивается... Двигается куда-то... Вот уже дошел до "Число"...  :)
88 Попытка1С
 
25.05.11
14:20
(83) Где ты опыт увидел...
89 hhhh
 
25.05.11
14:20
(77) правильно, классификатор номеров. И пусть 1С по интернету всем подписчикам ИТС бесплатно его высылает.
90 Дикообразко
 
25.05.11
14:20
(86) в 8ке вылетит
91 sda553
 
25.05.11
14:21
(88) В лк у Dooro
написано стаж 3 года
92 1Сергей
 
25.05.11
14:21
(90) а в 7 нет :)
93 VladZ
 
25.05.11
14:21
(89) Название нужно придумать... Типо Общероссийский Классификатор Номеров: ОКН.
94 aleks-id
 
25.05.11
14:21
(85) а что - разрешено рекурсивно вызывать процедуры?
95 Mitriy
 
25.05.11
14:21
(89) зачем? можно ссылку на инф_остарте продавать за деньги...
96 VladZ
 
25.05.11
14:21
+93 ...номеров документов: ОКНД.
97 Дикообразко
 
25.05.11
14:22
(92) знаю... уроды еще те
98 sda553
 
25.05.11
14:22
(94) ЭЭЭЭЭ...это шутка?
99 Попытка1С
 
25.05.11
14:22
(91) Это я видел, только где опыт не понял =)
100 Mitriy
 
25.05.11
14:22
(95)+ а здесь рекламу повесить...
101 forforumandspam
 
25.05.11
14:22
(94) О_О
102 VladZ
 
25.05.11
14:22
(94) Ну вообще-то нельзя... Но если никто не видит - то можно.
103 Дикообразко
 
25.05.11
14:22
(94) О_о... меняй ник
104 lxs
 
25.05.11
14:22
(94) а ты попробуй, удивишься
105 Mitriy
 
25.05.11
14:22
(98) нет... это заразно...
106 Дикообразко
 
25.05.11
14:23
среда удалась
107 Mitriy
 
25.05.11
14:23
(102) где нельзя?
108 YurOK_51
 
25.05.11
14:23
Просто ржу :)
109 Nagaru
 
25.05.11
14:23
Тоже помогу ТС, написал функцию, она работает для длины номера в 10 символов, но можно чуть подделать и будет очень универсально

Функция ПолучитьНомерБезНулей(НомерДок)
   Номер = 0;
   Пока Истина Цикл
       Номер = Номер + 1;
       Если Прав(НомерДок, СтрДлина(Строка(Номер))) = Строка(Номер) Тогда
           Итератор = 0;
           НулиСлева = "";
           Пока Итератор < 10 - СтрДлина(Строка(Номер)) Цикл
               НулиСлева = НулиСлева + "0";
           КонецЦикла;
           Если Лев(НомерДок, 10 - СтрДлина(Строка(Номер))) = НулиСлева Тогда
               Возврат Номер;
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
КонецФункции;
110 aleks-id
 
25.05.11
14:23
(103) нас за это в институте по рукам били и заставляли делать рекурсивные функции.
111 Дикообразко
 
25.05.11
14:24
(92)кстати, в 8ке и бесконечная рекурсия не интересно работает :(
вылетает
112 Дикообразко
 
25.05.11
14:24
(110) делай рекурсивные подпрограммы...
113 1Сергей
 
25.05.11
14:25
(111) хе :) я всегда говорил, что восьмерка гав но
114 sda553
 
25.05.11
14:25
(111) А есть что то, где бесконечная рекурсия работает интересно?
115 Дикообразко
 
25.05.11
14:25
(114) попробуй на 77 :)
116 1Сергей
 
25.05.11
14:26
(115) + 100500
117 stix2010
 
25.05.11
14:26
я плакаль
118 VladZ
 
25.05.11
14:26
(107) Вот этому товарищу нельзя: aleks-id
119 Dooro
 
25.05.11
14:27
almar спасибо за
Пока Лев(Номер,1)="0" Цикл
Номер=Сред(Номер,2);
КонецЦикла;
120 Дикообразко
 
25.05.11
14:27
мля :)))))))))))
121 Дикообразко
 
25.05.11
14:27
(117) +1
122 1Сергей
 
25.05.11
14:28
бугага :))))
123 Попытка1С
 
25.05.11
14:28
almar подонок...
124 Дикообразко
 
25.05.11
14:28
(119) чем (8) не устроило?
125 lxs
 
25.05.11
14:29
(119) Это просто звиздец какой-то! Это просто генитально! Звезду товарищу almar! остальных на колыму!
126 VladZ
 
25.05.11
14:29
(119) Бу-га-га!!!!
127 aleks-id
 
25.05.11
14:29
админы, вычислите тс по ип, накатайте руководству - пусть выкинут с соответствующей записью в трудовой!!!
128 fisher
 
25.05.11
14:30
(124) Ниасилен принцип действия.
И автор пока не признался, может он документы так перенумеровывает.
129 rs_trade
 
25.05.11
14:30
(111) ага, у SQL сервера бесконечные дедлоки тоже не интересно работают. отваливаются почему то.
130 Stado_adama
 
25.05.11
14:30
(119) :))))))
131 МойКодУныл
 
25.05.11
14:30
В конфе "КД" есть очень много уже написанных функций для работы с номерами и приведением их к нужной длине, выделению префиксов и прочих. Можно посмотреть там)
(119) а если префикс?)
132 КонецЕсли
 
25.05.11
14:30
(124) он же сказал: "номер и так тип строка.". А в (8) Строка(...)
з.ы вообще-то в (8) надо формат(..)
133 Ksandr
 
25.05.11
14:30
Данную тему теперь нужно давать почитать всем кто ищет работничков :) чтобы знали, что можно получить от прогера за стотыщ и больше
134 VladZ
 
25.05.11
14:30
(127) не умничай! Иди про рекурсию читай!
135 stix2010
 
25.05.11
14:31
Не стыдно чего-нибудь не знать, но стыдно не хотеть учиться.
136 Irbis
 
25.05.11
14:31
(132) формат там накуй не нужен, если в номере только цифры, как у ТС.
137 forforumandspam
 
25.05.11
14:32
(119) БаГаГа!
138 Дикообразко
 
25.05.11
14:32
(132) Вадим, вот от тебя я этого не ожидал,
загони в табло Строка(Число("00000001")) и удивись
139 almar
 
25.05.11
14:32
День прожит не зря!
140 Конфигурист
 
25.05.11
14:32
Через вебсевис надо делать.
141 Irbis
 
25.05.11
14:33
(138) причем в клюшках тоже работает, мультиплатформенный код получается
142 lxs
 
25.05.11
14:33
Вспоминается Ганжа и тот жмот из Большой перемены.. "Аттракцион неслыханной..." тупости..
143 hhhh
 
25.05.11
14:33
(133) вроде он с Украины. Там не стотыщ.
144 Nagaru
 
25.05.11
14:33
(140) А может кто-нить запрос накатает, который вернет нужный номер?
145 Дикообразко
 
25.05.11
14:35
(141) на клюшках (86) короче будет
146 КонецЕсли
 
25.05.11
14:36
(138) "Вадим" -  как бэ тоже, Внезапно! :)
147 Дикообразко
 
25.05.11
14:37
(146) пардон, совсем дурной стал КонецЕсли с КонецЦикла путаю
148 forforumandspam
 
25.05.11
14:37
Напишу полный вариант к (41)  
СтрЗаменить(СокрЛП(СтрЗаменить("0000001001", "0", " ")), " ", "0")
149 and2
 
25.05.11
14:38
мля.
где ж тут кнопка то - "добавить в базу знаний" ?
150 1Сергей
 
25.05.11
14:38
(148) тема
151 DrShad
 
25.05.11
14:38
(148) интересный ход
152 Dooro
 
25.05.11
14:38
almar не зря :)
Сколько людей не добрых , ужас.
153 zbv
 
25.05.11
14:39
(136)

00001000 - что будет на выходе из (8)?
154 Дикообразко
 
25.05.11
14:39
(148) 5 баллов
155 Irbis
 
25.05.11
14:39
(148) "010" Как отработает послеСокрЛП
156 VladZ
 
25.05.11
14:39
(148) Однако!
157 Дикообразко
 
25.05.11
14:39
(153) "1000"
158 hhhh
 
25.05.11
14:40
(155) йес!

СтрЗаменить(СокрЛ(СтрЗаменить("0000001001", "0", " ")), " ", "0")
159 forforumandspam
 
25.05.11
14:40
(155) Там будет " 10".
160 VladZ
 
25.05.11
14:40
Да ладно вам.. Навалились... Мысль-то верная!
161 DrShad
 
25.05.11
14:40
(158) 5+
162 PR
 
25.05.11
14:40
(148) Что будет с "000 Васе И. 24"?
163 forforumandspam
 
25.05.11
14:41
(158) Точно!!!
164 zbv
 
25.05.11
14:41
(157) а НПП куда делся ?
165 and2
 
25.05.11
14:41
СокрЛП(СтрЗаменить(СокрЛ(СтрЗаменить("0000001001", "0", " ")), " ", "0"))
166 Дикообразко
 
25.05.11
14:41
(155) прав, вот так будет правильно


СтрЗаменить(СокрЛ(СтрЗаменить("0000001001", "0", " ")), " ", "0")
167 DrShad
 
25.05.11
14:42
(165) баян
168 and2
 
25.05.11
14:42
(167) а вдруг справа пробел?
169 1Сергей
 
25.05.11
14:42
(148) СокрЛП заменить на СокрЛ и последние нули не стерутся
170 Дикообразко
 
25.05.11
14:43
(165) он про (158)
171 Дикообразко
 
25.05.11
14:43
(167) (167) он про (158)
172 DrShad
 
25.05.11
14:43
(168) откуда?
173 Дикообразко
 
25.05.11
14:43
(164) откуда ему там взяться?
174 Mitriy
 
25.05.11
14:43
люблю мисту... добрые люди... отзывчивые...
175 Dooro
 
25.05.11
14:44
я тоже люблю :)
176 Дикообразко
 
25.05.11
14:44
(172) СтрЗаменить(СокрЛП(СтрЗаменить("010", "0", " ")), " ", "0")
177 forforumandspam
 
25.05.11
14:44
Подняли настроение...
178 Irbis
 
25.05.11
14:44
(173) Будет, снеговик вредный. Придется форматировать
179 DrShad
 
25.05.11
14:45
(175) пиши еще!
180 Дикообразко
 
25.05.11
14:46
(178) ну и хер с ним :)
181 and2
 
25.05.11
14:46
(172)баян.

экзамен в ГАИ.
Э.  спрашивает - "кто из этих трех машин первый проедет перекресток"
С.  - "водитель маршрутки"
Э.  - "его ж тут нет"
С. - "сейчас подъедет"
182 zbv
 
25.05.11
14:47
(180) что значит хер сним!?

потом же будет ветка "Как убрать пробел?"

:)
183 hhhh
 
25.05.11
14:47
всё равно алмара способ быстрее отработает, хоть этот и в одну строчку.
184 Irbis
 
25.05.11
14:54
(182) Это будет завтра, надо же улыбнуться в конце рабочего дня.
185 PowerBoy
 
25.05.11
14:56
Для н = 1 до 10 Цикл
Если Лев(Номер,10-н)= Лев("0000000000",10-н)Тогда
   Номер=Сред(Номер,10-н);
   Прервать;
КонецЕсли;
КонецЦикла;
186 DGorgoN
 
25.05.11
15:04
Весна, миграция? Внезапно - видимо самый запоздалый..
187 forforumandspam
 
25.05.11
15:11
Решение с использованием запроса:

ВЫБРАТЬ
   ВЫБОР
       КОГДА ПОДСТРОКА(&Строка, 1, 1) <> "0"
           ТОГДА &Строка
       ИНАЧЕ ВЫБОР
               КОГДА ПОДСТРОКА(&Строка, 2, 1) <> "0"
                   ТОГДА ПОДСТРОКА(&Строка, 2, 9)
               ИНАЧЕ ВЫБОР
                       КОГДА ПОДСТРОКА(&Строка, 3, 1) <> "0"
                           ТОГДА ПОДСТРОКА(&Строка, 3, 8)
                       ИНАЧЕ ВЫБОР
                               КОГДА ПОДСТРОКА(&Строка, 4, 1) <> "0"
                                   ТОГДА ПОДСТРОКА(&Строка, 4, 7)
                               ИНАЧЕ ВЫБОР
                                       КОГДА ПОДСТРОКА(&Строка, 5, 1) <> "0"
                                           ТОГДА ПОДСТРОКА(&Строка, 5, 6)
                                       ИНАЧЕ ВЫБОР
                                               КОГДА ПОДСТРОКА(&Строка, 6, 1) <> "0"
                                                   ТОГДА ПОДСТРОКА(&Строка, 6, 5)
                                               ИНАЧЕ ВЫБОР
                                                       КОГДА ПОДСТРОКА(&Строка, 7, 1) <> "0"
                                                           ТОГДА ПОДСТРОКА(&Строка, 7, 4)
                                                       ИНАЧЕ ВЫБОР
                                                               КОГДА ПОДСТРОКА(&Строка, 8, 1) <> "0"
                                                                   ТОГДА ПОДСТРОКА(&Строка, 8, 3)
                                                               ИНАЧЕ ВЫБОР
                                                                       КОГДА ПОДСТРОКА(&Строка, 9, 1) <> "0"
                                                                           ТОГДА ПОДСТРОКА(&Строка, 9, 2)
                                                                       ИНАЧЕ ПОДСТРОКА(&Строка, 10, 1)
                                                                   КОНЕЦ
                                                           КОНЕЦ
                                                   КОНЕЦ
                                           КОНЕЦ
                                   КОНЕЦ
                           КОНЕЦ
                   КОНЕЦ
           КОНЕЦ
   КОНЕЦ КАК Поле2
188 aleks-id
 
25.05.11
15:11
(134) а вот с этого места поподробнее. в чем был неправ мой препод по системному программированию, заставивший всех использовать только рекурсивные функции и забыть использование рекурсии в процедурах?
189 КонецЕсли
 
25.05.11
15:13
А никто ещё не предупреждал ТС, что когда его обрезанный номер дойдет до 9 (99,999,9999...) то автонумерация у него закончится? А что будет с возможность сортировки по номеру в форме списка документов?
190 forforumandspam
 
25.05.11
15:15
+(187) Хотя зря столько вложенностей.
191 forforumandspam
 
25.05.11
15:16
ВЫБРАТЬ
   ВЫБОР
       КОГДА ПОДСТРОКА(&Строка, 1, 1) <> "0"
           ТОГДА &Строка
       КОГДА ПОДСТРОКА(&Строка, 2, 1) <> "0"
           ТОГДА ПОДСТРОКА(&Строка, 2, 9)
       КОГДА ПОДСТРОКА(&Строка, 3, 1) <> "0"
           ТОГДА ПОДСТРОКА(&Строка, 3, 8)
       КОГДА ПОДСТРОКА(&Строка, 4, 1) <> "0"
           ТОГДА ПОДСТРОКА(&Строка, 4, 7)
       КОГДА ПОДСТРОКА(&Строка, 5, 1) <> "0"
           ТОГДА ПОДСТРОКА(&Строка, 5, 6)
       КОГДА ПОДСТРОКА(&Строка, 6, 1) <> "0"
           ТОГДА ПОДСТРОКА(&Строка, 6, 5)
       КОГДА ПОДСТРОКА(&Строка, 7, 1) <> "0"
           ТОГДА ПОДСТРОКА(&Строка, 7, 4)
       КОГДА ПОДСТРОКА(&Строка, 8, 1) <> "0"
           ТОГДА ПОДСТРОКА(&Строка, 8, 3)
       КОГДА ПОДСТРОКА(&Строка, 9, 1) <> "0"
           ТОГДА ПОДСТРОКА(&Строка, 9, 2)
       ИНАЧЕ ПОДСТРОКА(&Строка, 10, 1)
   КОНЕЦ КАК Поле2
192 dzemon666
 
25.05.11
15:18
Рекурсию заказывали?

Функция УбратьНули(С,В=0)
   возврат(?(В>0,?(В  =0,С*10,УбратьНули(С,В-1)*10 ),?(СтрДлина(С) = 1,КодСимв(Лев(С,1))-КодСимв("0"),УбратьНули(Лев(С,1),СтрДлина(С)-1)+УбратьНули(Прав(С,СтрДлина(С)-1)))));
КонецФункции  

Вызов:
 УбратьНули("0000454654601")
193 dzemon666
 
25.05.11
15:19
+(192) в одну строчку смотрится красивее.
194 Злобный монстр
 
25.05.11
15:20
Ржунимагу!!! ))))
195 Nagaru
 
25.05.11
15:23
Осталось только вариант в (191) динамически формировать в зависимости от длины строки в номере и можно сказать, что оптимальное решение найдено
196 dzemon666
 
25.05.11
15:28
Зря первый вариант выложил(192), надо было сразу этот
Функция С(С,C=0) возврат(?(C>0,?(C  =0,С*10,С(С,C-1)*10 ),?(СтрДлина(С) = 1,КодСимв(Лев(С,1))-КодСимв("0") ,С(Лев(С,1) , СтрДлина(С)-1)+С(Прав(С,СтрДлина(С)-1))))); КонецФункции

Работет только если скопируете с сообщения :-).
197 Nagaru
 
25.05.11
15:29
(196) С и C разные?
198 dzemon666
 
25.05.11
15:30
(197) не пали контору
199 rs_trade
 
25.05.11
15:31
(187) хотел тоже подобное запостить, да писать обломался )))
200 zak555
 
25.05.11
15:31
мало вариантов
201 МастерВопросов
 
25.05.11
15:36
а предлагали такой способ?

Функция Преобразоватьвчисло(СтрокаСЗначением)
   
   Если ПустоеЗначение(СписокЗначений)=0 Тогда    
       Список    =    СоздатьОбъект("СписокЗначений");    
       Список.ИзСтрокиСРазделителями(СтрокаСЗначением);
       ПолученноеЧисло=Список.ПолучитьЗначение(1);
       Возврат ПолученноеЧисло;
   Иначе
       Сообщить("Передано некоретное значение");
   КонецЕсли;        
КонецФункции

правда еще на запятые надо проверить, а то вернёт только целую часть числа
202 МастерВопросов
 
25.05.11
15:41
+(201) update
Функция Преобразоватьвчисло(СтрокаСЗначением)
   
   Если ПустоеЗначение(СтрокаСЗначением)=0 Тогда    
       Список    =    СоздатьОбъект("СписокЗначений");    
       Список.ИзСтрокиСРазделителями(СтрокаСЗначением);
       ПолученноеЧисло=Список.ПолучитьЗначение(1);
       Возврат ПолученноеЧисло;
   Иначе
       Сообщить("Передано некоретное значение");
   КонецЕсли;        
КонецФункции
203 Jstunner
 
25.05.11
15:46
Формат(Число(НомерСНулями), "ЧН=; ЧГ=");
204 dzemon666
 
25.05.11
15:48
Функция ВернутьЧисло(Строка1)
Число1 = Random(999999999);
Пока Вопрос("Подходит "+Число1+" ?","Да+Нет") = "Нет" Цикл
  Число1 = Random(999999999);
конецциикла
КонецФункции
205 dzemon666
 
25.05.11
15:49
(203) .. ты действуешь как новичек ...
206 shamannk
 
25.05.11
15:50
или так
Номер = Строка(0+номер);
207 Jstunner
 
25.05.11
15:50
удивительно, хотя и задачка простенькая, но большинство даже не врубилось, что требуется. Все повелись на преобразование в число, хотя в (0) об этом ни слова..
208 dzemon666
 
25.05.11
15:53
Ошибся, млин, корректирую.

Функция ВернутьЧисло(Строка1)
Число1 = Random(999999999);
СколькоРазСпросили =0;
Пока Вопрос("Подходит "+Число1+" ?","Да+Нет") = "Нет" Цикл
 Число1 = Random(999999999);
 СколькоРазСпросили = СколькоРазСпросили + 1;
 Если  СколькоРазСпросили = 20 тогда
   Если Вопрос("Устал?","Да+Нет") = "Да" Цикл
     прервать;
   Конецесли;
  СколькоРазСпросили = 0;
 Конецесли;
конецциикла
возврат(Число1);
КонецФункции
209 palpetrovich
 
25.05.11
15:58
(201) в (0) кстати, не сказано и что нужно "_______209" или "209_______"
*  _ - пробел
210 palpetrovich
 
25.05.11
15:59
сорьки, (209) -> (207)  ...кста, пост тоже 209 получился :)
211 shamannk
 
25.05.11
16:02
(210) Нужно три символа с конца оставить приме не очень хороший.
212 Jstunner
 
25.05.11
16:02
(209) в сабже все очевидно: _Убрать_первые_нули_ из номера
213 palpetrovich
 
25.05.11
16:04
(211) из сабжа нельзя сделать однозначный вывод ..впрочем как и вывод о авторе ветки. ...возможен развод
214 1Сергей
 
25.05.11
16:05
пля... вы ещё трёте об этом? Вот вам делать нефиг
215 shamannk
 
25.05.11
16:05
(212) И  в (206) это не происходит? Преобразование в число идет)))
216 wPa
 
25.05.11
16:05
(213) может ему надо просто убрать видимость этих нулей ) перевести в числовой вид номер )
217 Jstunner
 
25.05.11
16:08
(215) в (206) происходит кривизна. Хинт: проверь для "1000"
218 dzemon666
 
25.05.11
16:09
(212)
Функция С(С)возврат(?(Лев(С,1)="0",С(Прав(С,СтрДлина(С)-1)),С));КонецФункции
219 Злобный монстр
 
25.05.11
16:12
(208) Бу га га!! Блин ну нельзя же так... я чуть под стол не упал... до слез...
220 Jstunner
 
25.05.11
16:13
(218) хз, как у тебя, но мне бабушка еще лет двадцать назад рассказывала, "внучек, не юзай рекурсию на восьмерке!"
221 Nagaru
 
25.05.11
16:14
(220) А с деревом ты как работаешь?
222 Jstunner
 
25.05.11
16:15
(221) дерево - отдельная история, там без рекурсии сложно, но (218) решается простецким линейным алгоритмом
223 dzemon666
 
25.05.11
16:16
"(220) А с деревом ты как работаешь?"
Если Обект = "Дерево" тогда
     сообщить("Да ну его нафиг");
     а=а/0;
Конецесли;
224 dzemon666
 
25.05.11
16:17
(222) .. но (218) решается простецким линейным алгоритмом
линейные для новичков
225 unknown181538
 
25.05.11
16:20
вот вам всем заняться нечем!!) Может лучше коллективом обработочку за меня напишите?
226 dzemon666
 
25.05.11
16:20
(225) Дава описание. За результат не ручаемся.
227 Nagaru
 
25.05.11
16:25
(225) Тут главное правильно подойти к созданию темы, если народ заинтересуется, то напишут запросто, а если банальщина типа перегрузить платежки из экселя в УТ, то тут уже придется самому
228 unknown181538
 
25.05.11
16:49
(227) Банально - документ, 12 таб.частей, около 50 реквизитов шапки. Перенести из 7.7 в 8.2)
229 unknown181538
 
25.05.11
16:50
Но есть, например, отчет, который не смог написать. Результат не сильно важен, но, боюсь, тухлыми помидорами закидают)
230 rs_trade
 
25.05.11
17:01
(228) на кой черт таких монстров городить 99.9% что можно было сделать по другому
231 vmlspb
 
25.05.11
17:29
Запрос.Текст =
   "ВЫБРАТЬ
   |    ВЫБОР
   |        КОГДА &Номер ПОДОБНО ""000000000_""
   |            ТОГДА ПОДСТРОКА(&Номер, 9, 1)
   |        КОГДА &Номер ПОДОБНО ""00000000__""
   |            ТОГДА ПОДСТРОКА(&Номер, 8, 2)
   |        КОГДА &Номер ПОДОБНО ""0000000___""
   |            ТОГДА ПОДСТРОКА(&Номер, 7, 3)
   |        КОГДА &Номер ПОДОБНО ""000000____""
   |            ТОГДА ПОДСТРОКА(&Номер, 6, 4)
   |        КОГДА &Номер ПОДОБНО ""00000_____""
   |            ТОГДА ПОДСТРОКА(&Номер, 5, 5)
   |        КОГДА &Номер ПОДОБНО ""0000______""
   |            ТОГДА ПОДСТРОКА(&Номер, 4, 6)
   |        КОГДА &Номер ПОДОБНО ""000_______""
   |            ТОГДА ПОДСТРОКА(&Номер, 3, 7)
   |        КОГДА &Номер ПОДОБНО ""00________""
   |            ТОГДА ПОДСТРОКА(&Номер, 2, 8)
   |        КОГДА &Номер ПОДОБНО ""0_________""
   |            ТОГДА ПОДСТРОКА(&Номер, 1, 9)
   |        ИНАЧЕ &Номер
   |    КОНЕЦ КАК Номер";
   
   Запрос.УстановитьПараметр("Номер",Номер);
   
можно еще в цикле собрать запрос )))
232 AlexSmolensky
 
26.05.11
09:32
еще один алгоритм

Функция УбратьНули(пЧисло)
   мЧисло = пЧисло;
   Если Лев(пЧисло,1)="0" Тогда
       мЧисло = УбратьНули(Прав(пЧисло, стрДлина(пЧисло)-1));
   КонецЕсли;
   Возврат мЧисло;
КонецФункции
233 dzemon666
 
26.05.11
09:34
(232) А какая разница с (223)?  :-).
234 МастерВопросов
 
26.05.11
11:54
оказывается в клюшках допускается такой синтаксис:

Если ВыбФирма = ПолучитьПустоеЗначение("Справочник.Фирмы") = 1 Тогда

  Предупреждение("Задайте непустое значение Фирмы");

КонецЕсли;