|
v7: разделение строки на части | ☑ | ||
---|---|---|---|---|
0
JuixyJes
14.05.19
✎
12:26
|
Имеется реквизит, куда заполняются паспортные данные через обработку. Заполнение идет одной строкой, через запятую. Как мне взять каждое значение, написанное через запятую в отдельности?
|
|||
1
JuixyJes
14.05.19
✎
12:28
|
Данные заполняются так
паспорт, 0000, 000000, 00.00.0000, умвд, 000-000 |
|||
2
Builder
14.05.19
✎
12:31
|
Используй функции Найти() и Лев()
|
|||
3
Mikeware
14.05.19
✎
12:31
|
изСтрокиСРазделителями
|
|||
4
JuixyJes
14.05.19
✎
12:32
|
(2) а поподробней можно?
|
|||
5
user-ok
14.05.19
✎
12:32
|
ПозицияЗапятой = Найти(ИсходнаяСтрока, ",");
НомерПаспорта = Лев(ИсходнаяСтрока, ПозицияЗапятой - 1); |
|||
6
Builder
14.05.19
✎
12:32
|
(4) Ну блин, вот ленивые же... В любой типовой есть функция такая
//****************************************************************************** // Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт // // Параметры: // Стр - строка, которую необходимо разложить на подстроки. // Параметр передается по значению. // Разделитель - строка-разделитель, по умолчанию - запятая. // // // Возвращаемое значение: // список значений, элементы которого - подстроки // // Описание: // Функция "расщепляет" строку на подстроки, используя заданный // разделитель. Разделитель может иметь любую длину. // Если в качестве разделителя задан пробел, рядом стоящие пробелы // считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр // игнорируются. // Например, // глРазложить(",ку,,,му", ",") возвратит список значений из пяти элементов, // три из которых - пустые строки, а // глРазложить(" ку му", " ") возвратит список значений из двух элементов // Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт СЗ = СоздатьОбъект("СписокЗначений"); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда СЗ.ДобавитьЗначение(СокрЛП(Стр)); Возврат СЗ; КонецЕсли; СЗ.ДобавитьЗначение(СокрЛП(Лев(Стр,Поз-1))); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда СЗ.ДобавитьЗначение(СокрЛП(Стр)); Возврат СЗ; КонецЕсли; СЗ.ДобавитьЗначение(СокрЛП(Лев(Стр,Поз-1))); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции // глРазложить |
|||
7
user-ok
14.05.19
✎
12:35
|
не в любой. да и у ТС нигде не указано что типокая
очень похоже на задачу для зачета. только вот 7.7.... |
|||
8
Mikeware
14.05.19
✎
12:36
|
(7) "задачу для зачета" да такое пишется на любом языке в любом состоянии...
|
|||
9
Builder
14.05.19
✎
12:37
|
+(6) Дальше видимо будет вопрос как вытащить эти данные из СпискаЗначений :)
|
|||
10
JuixyJes
14.05.19
✎
12:40
|
(9) именно:D
|
|||
11
user-ok
14.05.19
✎
12:40
|
(8) пишется. но не студентом, который проквасил весь семестр :D
просто последние пару недель появилась куча детских вопросов. вот и предполагаю, може не зачет а сдача лаб за семестр жду вопроса о сортировке пузырьком и пазл сложится )))) |
|||
12
JuixyJes
14.05.19
✎
12:50
|
Так что, никто не скажет как обратиться к списку значений из(6)
|
|||
13
Ёпрст
14.05.19
✎
12:58
|
(12) открфть пофигуратор, в любом месте написать СписокЗначений, выделить, нажать Ctrl+F1 - читать до просветления
|
|||
14
Ёпрст
14.05.19
✎
13:00
|
Ну или библию почитай
http://old.mista.ru/tutor_1c/sz.htm |
|||
15
Garykom
гуру
14.05.19
✎
13:21
|
(1) Не забудьте добавить проверку на правильность исходных данных.
Что если документ "паспорт" то серия=ЧЧЧЧ, номер равен ЧЧЧЧЧЧ и т.д. В датах любят когда руками вбивали вместо "." понаставить "," и прочие ошибки. Короче в реальности надо на каждом шагу делать защиту от дурака, если данные могут быть кривыми даже теоретически и предусматривать что делать в каждом случае. Например можно просто сообщить об этом оператору и записать в логи и продолжить а можно отменить всю загрузку. |
|||
16
JuixyJes
14.05.19
✎
13:55
|
ПозицияЗапятой = Найти(ИсходнаяСтрока, ",");
вид = Лев(ИсходнаяСтрока, ПозицияЗапятой - 1); С этим понятно все, а остальные элементы как вытянуть? |
|||
17
JuixyJes
14.05.19
✎
14:06
|
(15) Я знаю что вы знаете)) Подскажите?
|
|||
18
Builder
14.05.19
✎
14:07
|
(17) Почитать (6)
|
|||
19
hhhh
14.05.19
✎
14:08
|
(16) СтрокаПослеЗапятой = Сред(ИсходнаяСтрока, ПозицияЗапятой + 1);
и дальше как в (16) ПозицияЗапятой = Найти(СтрокаПослеЗапятой, ","); номер = Лев(СтрокаПослеЗапятой, ПозицияЗапятой - 1); |
|||
20
Garykom
гуру
14.05.19
✎
14:09
|
||||
21
Масянька
14.05.19
✎
14:10
|
(20) Блин... Обогнал...
Интересно, а за "подвернувшийся заказ" мистянам отломится? |
|||
22
HawkEye
14.05.19
✎
14:31
|
(0) Женечка, завязывай ты с этой 1С....))
|
|||
23
Mikeware
14.05.19
✎
14:34
|
(22) во-во. посоветуй ей широко известный способ зарабатывать вдвое больше..
|
|||
24
sqr4
14.05.19
✎
14:35
|
(23) а что сам не посоветуешь?
|
|||
25
Garykom
гуру
14.05.19
✎
15:01
|
(24) Опытные старички уже
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |