|
Пустая строка в дату | ☑ | ||
---|---|---|---|---|
0
Dimonkur
24.01.14
✎
06:13
|
Пустая строка не преобразуется в число 0 в 1с 8.2? Пример
|
|||
1
Wobland
24.01.14
✎
06:14
|
откуда ты эти вопросы берёшь? сам пример генерируй
|
|||
2
BICO
24.01.14
✎
07:13
|
ЗначениеЗаполнено(что-то)
|
|||
3
1Сергей
24.01.14
✎
07:41
|
>>Пустая строка не преобразуется в число 0 в 1с 8.2? Пример
казалось бы - причем тут дата? |
|||
4
Dimonkur
24.01.14
✎
07:44
|
Я обрабатываю REP файл. В нем строки. Пишу оператор
_товар = число(лев(стр,поз-1)). Поз это позиция ; Если стоит число на этом месте то все нормально, а вот если Перед ; один пробел то ошибка - невозможно преобразовать к типу число. |
|||
5
kosts
24.01.14
✎
07:47
|
(4) Открой для себя СОКРЛП()
|
|||
6
Wobland
24.01.14
✎
07:47
|
и СтрДлину()
|
|||
7
Dimonkur
24.01.14
✎
07:51
|
KOSTS c СОКРП() не получилось, попробую с СОКРЛП хотя особой разницы не вижу
|
|||
8
kosts
24.01.14
✎
07:54
|
(7) Может внутри числа пробелы есть? Выложи кусочек файла глянуть
|
|||
9
Irbis
24.01.14
✎
07:56
|
Просто ещё одна жертва неразрывного пробела
|
|||
10
dsdred
24.01.14
✎
07:57
|
(7) сокрлп превратит в текст, не забудь перевести в нужный формат(На сколько я понял у тебя число).
Есть еще варианты удалять пробелы если они присутствуют. Вообщем то вариантов масса, тебе просто нужно алгаритм сделать обработки текста и перевода его в число. |
|||
11
Рэйв
24.01.14
✎
08:00
|
Нужное=Число(СтрЗаменить(СокрЛП(Значение),Символы.ПС,""));
|
|||
12
dsdred
24.01.14
✎
08:01
|
(9) а ну если так то это не трудно)) разберется. минут 5 потратит на гугл и все.
|
|||
13
Dimonkur
24.01.14
✎
08:07
|
280608;28.12.2013;11:15:15;150;1;7690;0;;0;0.00;0.000;0.00;
Это одна из строк. Ну думаю разберусь тут достаточно дали подсказок |
|||
14
kosts
24.01.14
✎
08:08
|
(13) А где пробел?
|
|||
15
1Сергей
24.01.14
✎
08:09
|
(13) Функция Split(Строка, Разделитель) Экспорт
Рез = Новый Массив; Стр = СтрЗаменить(Строка, Разделитель, Символы.ПС); Для Сч = 1 По СтрЧислоСтрок(Стр) Цикл Рез.Добавить(СтрПолучитьСтроку(Стр,Сч)); КонецЦикла; Возврат Рез; КонецФункции |
|||
16
Dimonkur
24.01.14
✎
08:31
|
1С Сергей. Спасибо конечно. Ну зачем мне массив из подстрок строки?
|
|||
17
Мимохожий Однако
24.01.14
✎
08:32
|
Дарёному коню в зубы не смотрят. Не нужен, ну и ладно. Кому другому пригодится.
|
|||
18
Dimonkur
24.01.14
✎
08:33
|
Для примера есть строка 280614;28.12.2013;11:22:24;11;1;7691;2;150;1;31.00;1.000;31.00; Мне нужно получить число 150. Если стоит число 150 то все прекрасно Но если строка 280608;28.12.2013;11:15:15;150;1;7690;0;;0;0.00;0.000;0.00; То шобка потому что на месте где я предполагаю число ;;
|
|||
19
Бледно Золотистый
24.01.14
✎
08:35
|
(18) Ну обрабатывай ситуацию, Число(""), Число(" ") и проч. работать не будут. только строковые представления числа и булево.
|
|||
20
Мимохожий Однако
24.01.14
✎
08:35
|
(18)Покажи код, в котором тебе удаётся это получить.
|
|||
21
kosts
24.01.14
✎
08:35
|
(18) Если не получается написать свой парсер, зачем отказываешься от готового в (15)?
|
|||
22
Dimonkur
24.01.14
✎
08:36
|
Спасибо БледноЗолотистый за инфу
|
|||
23
kosts
24.01.14
✎
08:37
|
(18)
Split("280608;28.12.2013;11:15:15;150;1;7690;0;;0;0.00;0.000;0.00;", ";")[8] |
|||
24
Dimonkur
24.01.14
✎
08:38
|
А вот пример 1с Сергей. В результате его примера у меня будет один из элементов массива вообще пустая строка даже без пробелов, ее можно будет преобразовать в число?
|
|||
25
Dimonkur
24.01.14
✎
08:40
|
Для сч = 4 По Текст.КоличествоСтрок() Цикл
Стр = Текст.ПолучитьСтроку(сч); Поз = Найти(Стр,";"); стр = сред(стр, поз+1); //Дата Поз = Найти(Стр,";"); _Дата = Дата((лев(стр,поз-1))+ " 00:00:00"); стр = сред(стр,поз+1); //время поз = найти(стр,";"); _время = (лев(стр,поз-1)); стр = сред(стр,поз+1); //тип транзакции поз = найти(стр,";"); _ТипТр = число(лев(стр,поз-1)); стр = сред(стр,поз+1); //код системы поз = найти(стр,";"); стр = сред(стр,поз+1); //номер клиента поз = найти(стр,";"); _номерКл = лев(стр,поз-1); стр = сред(стр,поз+1); //что за поле? поз = найти(стр,";"); стр = сред(стр,поз+1); //стр = СОКРЛП(стр); //код товара поз = найти(стр,";"); //_товар = (лев(стр,поз-1)); _товар = число(лев(стр,поз-1)); стр = сред(стр,поз+1); //секция поз = найти(стр,";"); стр = сред(стр,поз+1); //цена поз = найти(стр,";"); _цена = (лев(стр, поз-1)); //_цена = число(лев(стр, поз-1)); стр = сред(стр, поз+1); //количество поз = найти(стр,";"); _количество = (лев(стр,поз-1)); //_количество = число(лев(стр,поз-1)); стр = сред(стр,поз+1); //сумма поз = найти(стр, поз+1); _сумма = (лев(стр,поз-1)); //_сумма = число(лев(стр,поз-1)); //ТЗ.Дата = _дата; //тз.Товар = _товар; //ТЗ.Цена = _цена; //ТЗ.Количество = _количество; //тз.сумма = _сумма; КонецЦикла; |
|||
26
Мимохожий Однако
24.01.14
✎
08:40
|
(24)Если НЕ ЗначениеЗаполнено(ЭлементМассива) Тогда
ЭлементМассива = 0 КонецЕсли |
|||
27
Dimonkur
24.01.14
✎
08:43
|
А может действительно лучше сделать как у Сергея Получить массив из подстрок. А с массивом лучше работать?
|
|||
28
dsdred
24.01.14
✎
08:49
|
(27) А может просто убрать массив из предложеной функции?
Вам все инструменты дали а вы не пользуетесь. Функция Split(Строка, Разделитель) Экспорт //Рез = Новый Массив; Стр = СтрЗаменить(Строка, Разделитель, Символы.ПС); // Для Сч = 1 По СтрЧислоСтрок(Стр) Цикл // Рез.Добавить(СтрПолучитьСтроку(Стр,Сч)); // КонецЦикла; Возврат Стр ; КонецФункции |
|||
29
dsdred
24.01.14
✎
08:51
|
(27) У вас впринципе задача легкая и лучше Вам с ней разобраться самому иначе какой смысл дальше быть программистом?
У вас задача котороая научит вас работать с данными и переводить их в нужный вам формат. Вам это еще не раз понадобится, но нужно самому это прочуствовать. |
|||
30
kosts
24.01.14
✎
08:52
|
(25)
|
|||
31
dsdred
24.01.14
✎
08:55
|
(28) фигню написал((
|
|||
32
kosts
24.01.14
✎
09:08
|
|
|||
33
1Сергей
24.01.14
✎
09:14
|
(32) браво! мыслишь как программист
|
|||
34
Alex1979rak
24.01.14
✎
09:27
|
(32) это что такое?
|
|||
35
kosts
24.01.14
✎
09:32
|
(34) Пример более-менее универсальной загрузки
|
|||
36
Dimonkur
24.01.14
✎
09:34
|
(32) Тебе не нравится вопрос "с массивом лучше работать?", заменю его на "с массивом гибче работать?". Т
|
|||
37
Infsams654
24.01.14
✎
09:36
|
уже 2-й раз: Что это было ?
|
|||
38
kosts
24.01.14
✎
09:37
|
(36) Мне не нравится в лоб прописывать 100500 реквизитов. При малейшем изменении в структуре файла разбираться потом пол дня...
|
|||
39
Dimonkur
24.01.14
✎
09:39
|
(34) А что за функция split?
|
|||
40
kosts
24.01.14
✎
09:41
|
(39) Перечитай ветку
|
|||
41
Infsams654
24.01.14
✎
09:46
|
(38) ты в уме ? Как в дальнейшем с этим работать ?
В общем, то для этого есть какие-то настройки, в которых заложены схемы - лучший вариант, это SOAP |
|||
42
kosts
24.01.14
✎
09:52
|
(41) Затраты на решение задачи должны быть соразмерны с уровнем задачи.
Если нужно загружать пару файлов. То проще так сделать, за три минуты, в том же модуле без использовании сторонних компонент. Я же не предлагаю делать обмен между базами таким способом... |
|||
43
Infsams654
24.01.14
✎
10:04
|
(42) тогда зачем закладывать универсальность?
Забей все в коде напрямую |
|||
44
kosts
24.01.14
✎
10:06
|
(43) Мне с такой универсальностью сделать и отладить быстрее. Чем прямо забивать.
|
|||
45
Infsams654
24.01.14
✎
10:20
|
(44) см. как сделано http://www.vdgb-soft.ru/jsk/jkh/
Там настройка загрузки реестра платежей для разных форматов (txt, csv, xls, xml). Все настраивается, что, от куда и куда - очень просто. |
|||
46
Dimonkur
24.01.14
✎
10:32
|
(46) А где на этом сайте найти обработки?
|
|||
47
kosts
24.01.14
✎
11:20
|
(45) Я не против.
Но вот мне например понадобилось, ну подкинули такую задачку, что нужно загрузить файл в документ по нажатию одной кнопки. Без всяких визуальных форм. Можно скопипастить несколько процедур из своего ранешнего решения и через 20 минут все будет работать. Можно начать искать универсальные обработки. Хорошо, если знаешь, что тебе нужно и где это лежит. Опять же настраивать и сохранять схему каким то образом в конфигурации или данных. Не забываешь про лицензионную чистоту... Не думаю что будет меньше времени... Если в задаче пользователю нужно иметь возможность самому настраивать поля для загрузи, тогда и подход соответствующий. Не стоит заморачиваться своим великом, а лучше поискать готовое или посмотреть как люди делают. Каждой задаче свой подход... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |