Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: разделение строки на части

v7: разделение строки на части
Я
   JuixyJes
 
14.05.19 - 12:26
Имеется реквизит, куда заполняются паспортные данные через обработку. Заполнение идет одной строкой, через запятую. Как мне взять каждое значение, написанное через запятую в отдельности?
 
 
   JuixyJes
 
1 - 14.05.19 - 12:28
Данные заполняются так

паспорт, 0000, 000000, 00.00.0000, умвд, 000-000
   Builder
 
2 - 14.05.19 - 12:31
Используй функции Найти() и Лев()
   Mikeware
 
3 - 14.05.19 - 12:31
изСтрокиСРазделителями
   JuixyJes
 
4 - 14.05.19 - 12:32
(2) а поподробней можно?
   user-ok
 
5 - 14.05.19 - 12:32
ПозицияЗапятой = Найти(ИсходнаяСтрока, ",");
НомерПаспорта = Лев(ИсходнаяСтрока, ПозицияЗапятой  - 1);
   Builder
 
6 - 14.05.19 - 12:32
(4) Ну блин, вот ленивые же... В любой типовой есть функция такая

//******************************************************************************

//    Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт
//

//    Параметры: 
//        Стр -             строка, которую необходимо разложить на подстроки. 

//                        Параметр передается по значению.
//        Разделитель -     строка-разделитель, по умолчанию - запятая.

//
//

//    Возвращаемое значение:
//        список значений, элементы которого - подстроки

//
//    Описание:

//        Функция "расщепляет" строку на подстроки, используя заданный 
//        разделитель. Разделитель может иметь любую длину. 

//        Если в качестве разделителя задан пробел, рядом стоящие пробелы 
//        считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр

//        игнорируются.
//        Например, 

//        глРазложить(",ку,,,му", ",") возвратит список значений из пяти элементов, 
//        три из которых - пустые строки, а 

//        глРазложить(" ку   му", " ") возвратит список значений из двух элементов
//        

Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт
    СЗ = СоздатьОбъект("СписокЗначений");
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                СЗ.ДобавитьЗначение(СокрЛП(Стр));
                Возврат СЗ;
            КонецЕсли;
            СЗ.ДобавитьЗначение(СокрЛП(Лев(Стр,Поз-1)));
            Стр = СокрЛ(Сред(Стр,Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                СЗ.ДобавитьЗначение(СокрЛП(Стр));
                Возврат СЗ;
            КонецЕсли;
            СЗ.ДобавитьЗначение(СокрЛП(Лев(Стр,Поз-1)));
            Стр = Сред(Стр,Поз+ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;

КонецФункции// глРазложить
   user-ok
 
7 - 14.05.19 - 12:35
не в любой. да и у ТС нигде не указано что типокая
очень похоже на задачу для зачета. только вот 7.7....
   Mikeware
 
8 - 14.05.19 - 12:36
(7) "задачу для зачета" да такое пишется на любом языке в любом состоянии...
   Builder
 
9 - 14.05.19 - 12:37
+(6) Дальше видимо будет вопрос как вытащить эти данные из СпискаЗначений :)
   JuixyJes
 
10 - 14.05.19 - 12:40
(9) именно:D
   user-ok
 
11 - 14.05.19 - 12:40
(8) пишется. но не студентом, который проквасил весь семестр :D
просто последние пару недель появилась куча детских вопросов.
вот и предполагаю, може не зачет а сдача лаб за семестр
жду вопроса о сортировке пузырьком и пазл сложится ))))
   JuixyJes
 
12 - 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
   Garykom
 
15 - 14.05.19 - 13:21
(1) Не забудьте добавить проверку на правильность исходных данных.
Что если документ "паспорт" то серия=ЧЧЧЧ, номер равен ЧЧЧЧЧЧ и т.д.
В датах любят когда руками вбивали вместо "." понаставить "," и прочие ошибки.

Короче в реальности надо на каждом шагу делать защиту от дурака, если данные могут быть кривыми даже теоретически и предусматривать что делать в каждом случае.
Например можно просто сообщить об этом оператору и записать в логи и продолжить а можно отменить всю загрузку.
   JuixyJes
 
16 - 14.05.19 - 13:55
ПозицияЗапятой = Найти(ИсходнаяСтрока, ",");
вид = Лев(ИсходнаяСтрока, ПозицияЗапятой  - 1);

С этим понятно все, а остальные элементы как вытянуть?
   JuixyJes
 
17 - 14.05.19 - 14:06
(15) Я знаю что вы знаете)) Подскажите?
   Builder
 
18 - 14.05.19 - 14:07
(17) Почитать (6)
   hhhh
 
19 - 14.05.19 - 14:08
(16) СтрокаПослеЗапятой = Сред(ИсходнаяСтрока, ПозицияЗапятой + 1);

и дальше как в (16)

ПозицияЗапятой = Найти(СтрокаПослеЗапятой, ",");
номер = Лев(СтрокаПослеЗапятой, ПозицияЗапятой  - 1);
   Garykom
 
20 - 14.05.19 - 14:09
   Масянька
 
21 - 14.05.19 - 14:10
(20) Блин... Обогнал...
Интересно, а за "подвернувшийся заказ" мистянам отломится?
   HawkEye
 
22 - 14.05.19 - 14:31
(0) Женечка, завязывай ты с этой 1С....))
   Mikeware
 
23 - 14.05.19 - 14:34
(22) во-во. посоветуй ей широко известный способ зарабатывать вдвое больше..
   sqr4
 
24 - 14.05.19 - 14:35
(23) а что сам не посоветуешь?
   Garykom
 
25 - 14.05.19 - 15:01
(24) Опытные старички уже


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.