|
Покритикуйте код | ☑ | ||
---|---|---|---|---|
0
SeregaMW
08.09.11
✎
09:50
|
а=0;
ФамилияФлаг=0 ; ФлагОтчества = 0; захват =0; Пока а< 50 Цикл а=а+1; ФамилияСотр = Сред(Автор.Сотрудник.Наименование,а,1); Если (ФамилияСотр=" ") и (ФамилияФлаг=0)тогда ФамилияФлаг=1; Фамилия = Лев(Автор.Сотрудник.Наименование,а-1); Имя= Сред(Автор.Сотрудник.Наименование,а+1,1); КонецЕсли; Если (ФамилияСотр=" ") тогда ФлагОтчества = ФлагОтчества+1; КонецЕсли; Если (ФлагОтчества =2) и (захват =0) тогда Отчество = Сред(Автор.Сотрудник.Наименование,а+1,1); захват =1; КонецЕсли; КонецЦикла; ОбластьМакета.Параметры.Сотрудник = Фамилия+" "+Имя+". "+Отчество+"."; |
|||
1
Maxus43
08.09.11
✎
09:51
|
велосипед? Разложить строку на массив подстрок давно придуман в типовых
|
|||
2
butterbean
08.09.11
✎
09:52
|
код гамно
|
|||
3
asady
08.09.11
✎
09:53
|
а=0;
ФамилияФлаг=0 ; ФлагОтчества = 0; захват =0; Сотр=Автор.Сотрудник; Наим = Сотр.Наименование; Пока а< 50 Цикл а=а+1; ФамилияСотр = Сред(Наим,а,1); Если (ФамилияСотр=" ") и (ФамилияФлаг=0)тогда ФамилияФлаг=1; Фамилия = Лев(Наим,а-1); Имя= Сред(Наим,а+1,1); КонецЕсли; Если (ФамилияСотр=" ") тогда ФлагОтчества = ФлагОтчества+1; КонецЕсли; Если (ФлагОтчества =2) и (захват =0) тогда Отчество = Сред(Наим,а+1,1); захват =1; КонецЕсли; КонецЦикла; ОбластьМакета.Параметры.Сотрудник = Фамилия+" "+Имя+". "+Отчество+"."; это без разбора самого алгоритма - навскидку |
|||
4
Stepa86
08.09.11
✎
09:53
|
в УПП есть:
|
|||
5
Segate
08.09.11
✎
09:54
|
Нафег оно вообще нужно?
В типовой жеж есть все |
|||
6
Мимохожий Однако
08.09.11
✎
09:54
|
(0)Потренируйся теперь с падежами без использования ВК от 1С.
|
|||
7
Maxus43
08.09.11
✎
09:55
|
мой гений дарит вам (с) Сирожа :
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока Истина Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока Истина Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции // глРазложить |
|||
8
SeregaMW
08.09.11
✎
09:57
|
(5) в АльфеАвто не нашел
|
|||
9
Поручик
08.09.11
✎
10:00
|
(8) Всё что вверху, шляпа. Учись
http://infostart.ru/public/71130/#Pro_bystrye_massivy |
|||
10
Fragster
гуру
08.09.11
✎
10:03
|
кто-нидудь на govnokod.ru запостил уже?
|
|||
11
asady
08.09.11
✎
10:04
|
(10) чел учится - а ты его по рукам....
|
|||
12
SeregaMW
08.09.11
✎
10:07
|
(10) Предложи свой вариант!
|
|||
13
butterbean
08.09.11
✎
10:09
|
(12) ФИО = Автор.Сотрудник.Наименование;
ПозПрб = Найти(ФИО," "); Фамилия = Лев(ФИО,ПозПрб - 1); ФИО = Сред(ФИО, ПозПрб + 1); Имя = Сред(ФИО,1); ПозПрб = Найти(ФИО," "); Отчество = Сред(ФИО,ПозПрб+1,1); ОбластьМакета.Параметры.Сотрудник = Фамилия+" "+Имя+". "+Отчество+"."; |
|||
14
Fragster
гуру
08.09.11
✎
10:09
|
(12) в (9) очень быстрый вариант (сам использую), в типовых РазложитьСтрокуВМассивПодстрок кажися называется
|
|||
15
Maxus43
08.09.11
✎
10:09
|
(12) сравни производительность (0) и (7) кстати, погляди как оно
|
|||
16
Jstunner
08.09.11
✎
10:10
|
(7)
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт Т = Новый ТекстовыйДокумент; Т.УстановитьТекст(СтрЗаменить(Стр, Разделитель, Символы.ПС)); М = Новый Массив; Для Н=1 По Т.КоличествоСтрок() Цикл М.Добавить(Т.ПолучитьСтроку(Н)); КонецЦикла; Возврат М; КонецФункции |
|||
17
sttt
08.09.11
✎
10:11
|
Результат = СтрЗаменить(Имя, " ", Символы.ПС);
Сообщить(СтрПолучитьСтроку(Результат, 1)); // фамилия Сообщить(СтрПолучитьСтроку(Результат, 2)); // Имя Сообщить(СтрПолучитьСтроку(Результат, 3)); // Отчество |
|||
18
Stepa86
08.09.11
✎
10:11
|
еси чо, разложение через ЗначениеИзСтрокиВнутр( не работает на тонком и веб клиентах
|
|||
19
Fragster
гуру
08.09.11
✎
10:12
|
(15) в (9) - вообще самолет, особенно когда тысячи кусков в строке... да, серийные номера через запятую в документах достались в наследство...
|
|||
20
Maxus43
08.09.11
✎
10:12
|
(16) это типовой УПП в (7)
|
|||
21
Fragster
гуру
08.09.11
✎
10:12
|
(18) написать &Сервер перед функцией не предлагать?
|
|||
22
Stepa86
08.09.11
✎
10:13
|
(21) я как раз намекаю, чтоб не забыли. Сам вот так написал:
|
|||
23
Fragster
гуру
08.09.11
✎
10:14
|
(22) не, именно перед самой функцией
|
|||
24
Fragster
гуру
08.09.11
✎
10:14
|
&Сервер
Функция РазборСтроки(знач Стр, Разделитель = "," ) Экспорт ... |
|||
25
Fragster
гуру
08.09.11
✎
10:14
|
и массивы и строки прекрасно ходят между клиентом и сервером
|
|||
26
Stepa86
08.09.11
✎
10:15
|
(23) это тогда бегание на сервер скушать может весь эффект, да и расположена она у меня в общем модуле + в Толстом то работает
|
|||
27
Fragster
гуру
08.09.11
✎
10:16
|
(26) поверь мне, не скушает, если (19), например... для (0) - пофиг, да
|
|||
28
Maxus43
08.09.11
✎
10:17
|
(24) тогда уж внеконтекстный вызов надо
|
|||
29
Fragster
гуру
08.09.11
✎
10:18
|
(28) внеконтекстный на тонко клиенте ошибку выдаст
|
|||
30
Stepa86
08.09.11
✎
10:18
|
(27) регэкспами не пробовал строку разбивать? интересно шустрее или медленнее они, чем (9)
|
|||
31
Fragster
гуру
08.09.11
✎
10:18
|
(30) медленнее, я пробовал
|
|||
32
Fragster
гуру
08.09.11
✎
10:19
|
если что - регэксп был
"[^"+Разделитель+"]+" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |