|
Распарсить текстовый файл | ☑ | ||
---|---|---|---|---|
0
1987denis
03.09.15
✎
12:53
|
Все из текстового файла достаю, всё гуд, КРОМЕ табличной части...
внешний вид ее в текстовом файле такой...могу вытащить только 1 строку, а все нет...понимаю что в цикле надо, но не как не пойму как его туда всунуть...чтобы он только по строкам нужным шел, а не по всему текстовому файлу. http://prntscr.com/8c1xlm подскажите как быть |
|||
1
mikecool
03.09.15
✎
12:55
|
(0) заставить себя воспользоваться циклом и быть мужиком
|
|||
2
Strogg
03.09.15
✎
12:58
|
всунь цикл после СокрЛП(СтрЗаменить(ТвояСтрока" ", ""))= "1234"
ну или что там у тебя вместо пробела |
|||
3
aka AMIGO
03.09.15
✎
13:00
|
(0) немного непонятно..
8-ка извлекает тебе строки, и ей абсолютно всё равно, что в этой стрке помещено. я так понял, что таблица - по позициям всё-таки организована.. вот и раскладывай строку ТЧ под каждую позицию.. только подсчитать кол-во пробелов до каждого реквизита |
|||
4
aka AMIGO
03.09.15
✎
13:02
|
(3) + только не "пробелов".. поторопился я..
Сред(Стрк, НачПозРекв, ДлинаРекв) |
|||
5
1987denis
03.09.15
✎
13:07
|
ТекСтр = СтрЗаменить(ТекСтр, " ","|"); СтрМ=РазложитьСтрокуВМассивПодстрок(ТекСтр,"|");
Если Ном=65 И СтрМ.Количество()> 1 Тогда НоваяСтрока=ДокВозвратТоваровОтПокупателя.Товары.Добавить(); НаименованиеТовара=Сред(СокрЛП(СтрМ[1]),1,СтрДлина(СокрЛП(СтрМ[1]))); НоваяСтрока.НаименованиеТовара =Справочники.Номенклатура.НайтиПоНаименованию(НаименованиеТовара); Если НоваяСтрока.НаименованиеТовара<>Справочники.Номенклатура.НайтиПоНаименованию(НаименованиеТовара) Тогда НовыйТовар=Справочники.Номенклатура.СоздатьЭлемент(); НовыйТовар.Наименование=НаименованиеТовара; НовыйТовар.ЕдиницаИзмеренияМест=СокрЛП(СтрМ[2]); НовыйТовар.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар"); НовыйТовар.БазоваяЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(СокрЛП(СтрМ[2])); НовыйТовар.Комментарий="Из ПДФ"; НовыйТовар.Записать(); НоваяСтрока.НаименованиеТовара=Справочники.Номенклатура.НайтиПоНаименованию(НаименованиеТовара); Иначе НоваяСтрока.НаименованиеТовара=Справочники.Номенклатура.НайтиПоНаименованию(НаименованиеТовара); КонецЕсли; НоваяСтрока.ЕдиницаПоКлассификатору =Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(СокрЛП(СтрМ[2])); НоваяСтрока.Количество =СокрЛП(Сред(СтрМ[3],1,Найти(СтрМ[3]," ("))); КонецЦикла; КонецЕсли; |
|||
6
1987denis
03.09.15
✎
13:08
|
Ном - это строка.
|
|||
7
aka AMIGO
03.09.15
✎
13:13
|
(5) вот и сделай это в цикле чтения строк из текста
ЗЫ. ты знаешь, как выглядит ТекСтр после ТекСтр = СтрЗаменить(ТекСтр, " ","|"); ?? Сомневаюсь я что-то, что после РазложитьСтроку в СтрМ удастся разобраться |
|||
8
kosts
03.09.15
✎
13:29
|
(4) +1
|
|||
9
aka AMIGO
03.09.15
✎
13:32
|
остановил в отладчике код:
ТекСтр = " 1 товар ниаменование шт 1 (один)"; ТекСтр = СтрЗаменить(ТекСтр, " ","|"); После СтрЗаменить имею: "|||1|товар ниаменование||| шт 1 (один)" Функции СтрМ=РазложитьСтрокуВМассивПодстрок( у меня в конфе нет. Но, скорей всего, отыскать нужные элементы массива, и преобразовать их в реквизиты документа, будет не так-то просто. |
|||
10
aka AMIGO
03.09.15
✎
13:53
|
Нашел функцию в форуме. Разложил..
http://pics.rsh.ru/img/1razl_kdb1s6dk.jpg ужосс.. © :) с кодом в (5) невесть что запишется в базу.. если вообще запишется. |
|||
11
1987denis
03.09.15
✎
14:29
|
Если был бы уверен, что код идеален, я бы и не писал сюда
|
|||
12
Krolik Bezobraznik
03.09.15
✎
14:34
|
(0) Покажи код парсера своего.
|
|||
13
Serginio1
03.09.15
✎
14:48
|
У тебя скорее всего колонки определенной длины
Попробуй через Вручную выделить строки из колонок и получить их длину |
|||
14
1987denis
03.09.15
✎
15:22
|
ап
|
|||
15
Dmitry77
03.09.15
✎
15:42
|
должно быть что то типа
Текст = Новый ТекстовыйДокумент; Текст.Прочитать("c:\temp\text.txt"); Для НомерСтроки = 7 По Текст.КоличествоСтрок() Цикл Стр = Текст.ПолучитьСтроку(НомерСтроки); // в переменной стр твоя строка... сообщить (стр); КонецЦикла; должно вывести строки ТЧ. дальше смотришь чем разделены столбцы в ТЧ... например в total comandere. и с помощью найти и сред разбираешь стр... потом ищешь значения в БД по строковой переменной. Проверяешь есть там или нет, если есть берешь готовый, если нет создаешь... потом найденные значение пишешь в документ... |
|||
16
aka AMIGO
03.09.15
✎
16:06
|
(0) Попробуй так..
//вспомогательная переменная, понадобится при чтении ТЧ ТЧ = 0; //далее - твой цикл: Для Ном=1 по текдок.КоличествоСтрок() цикл //... тут читаешь строки, в конце проверяешь на встречу с ТЧ Если Найти(ТекСтр,"Материальные ценности") Тогда ТЧ=1; КонецЕсли; Если ТЧ=0 Тогда //нет пока ТЧ Продолжить; КонецЕсли; //далее - примерно так: //добавляю: Если Найти(ТекСтр,"Материальные ценности") Тогда ТЧ=1; Продолжить; КонецЕсли; Если ТЧ=0 Тогда //нет пока ТЧ Продолжить; КонецЕсли; //надо определить встречу с 1-й строкой //на ней порядковый номер "1" Если Лев(ТСтр,1)="1" Тогда ТЧ=2; КонецЕсли; Если ТЧ=1 Тогда Продолжить; КонецЕсли; //еще не мешало-б проверить на конец ТЧ, но уже нет времени //тут операторы разбора строк по НачРекв //Надо поймать в отладчике // и внимательно разобрать строку табличной части // т.е. - курсорчиком посчитать начало каждого реквизита // а также его длину. //Для очередного реквизита // применить Рекв = Сред(ТСтр, НачРекв, ДлинаРекв); // и пытаться записать по принадлежности/свойствам Вот так примерно я-бы сделал обработку. Наверняка есть у форумчан другое мнение, в добрый путь!! :) Что и как сообразил - так и написал Извините уж :) |
|||
17
Krolik Bezobraznik
03.09.15
✎
16:06
|
(15) Там все намного хуже. У него сперва конвертируется из PDF в текст, а потом уже текстовый файл открывается из временного каталога. При этом, конвертируется криво очень. =(
(12) Глянул я твою обработку. К слову сказать нашел я "прародителя твоей обработки" =)) Почему то в твоей обработке у меня не корректно конвертируется в текст (строк мало) и текст "левый" какой то. А вот в обработке - прародителе чуток получше. Строка 65 но тоже как - то все криво. В отладчике смотрел, сколько строк в твоем конвертированном файле получилось? |
|||
18
Dmitry77
03.09.15
✎
16:18
|
(17) очередной новичек решил решить типовую проблему торговли - взять бумажную версию ( PDF из нее запросто делается) и загнать в приходную накладную...
Флаг в руки и барабан на шею :))) Хотя если получиться можно много денег заработать... |
|||
19
1987denis
03.09.15
✎
16:37
|
Опыт у меня конечно не большой, но на работе сказал сделать, вот хочется попытать свои силы, хоть пока и стажор...поэтому и пошёл сюда...
|
|||
20
Krolik Bezobraznik
03.09.15
✎
16:44
|
(19) Понимаешь... на мой взгляд много проблем из за того что сперва конвертируется из PDF. Тут самое "узкое место".
|
|||
21
1987denis
03.09.15
✎
16:57
|
Вы предлагаете на прямую из пдф? Но я такой возможности в интернете не нашел.
|
|||
22
Живой Ископаемый
03.09.15
✎
17:00
|
ИзвлечениеТекста, слава 1С... если бы этого не было, пришлось бы вытаскивать глифы, потому что текстовый слой в ПДФ изобретали надмозги.
|
|||
23
1987denis
03.09.15
✎
17:11
|
НадМозги)))
|
|||
24
Живой Ископаемый
03.09.15
✎
17:16
|
http://lurkmore.to/Надмозг
Блистают туфли нестерпимо лаком. Мне некуда бежать. Все решено. Мне нынче дома мирный сон уже не лаком, Мне нынче ночевать у Джорджа суждено! |
|||
25
1987denis
03.09.15
✎
17:20
|
не понял только как оно работает
ИзвлечениеТекста |
|||
26
Живой Ископаемый
03.09.15
✎
17:21
|
стоп.. читаю, и там нет PDF... но вродеж было!
|
|||
27
1987denis
03.09.15
✎
17:29
|
не понял?
|
|||
28
Живой Ископаемый
03.09.15
✎
17:43
|
что?
файла определяется по расширению файла (т.е. текст из файла с расширением .tmp извлечен не будет). Для извлечения текста из файлов используется интерфейс IFilter. Он является расширяемым. Можно установить дополнительные модули, чтобы появилась возможность извлекать текст из еще одного типа файлов. По умолчанию текст извлекается из файлов следующих типов (имеющих расширение): ASCX, ASP, ASPX, CSS, HHC, HTA, HTM, HTML, HHT, HTW, HTX, ODC, STM, DOC, DOT, POT, PPS, PPT, XLB, XLC, XLS, XLT, TXT, EML. Подразумевается, что файлы с расширением TXT - это текстовые файлы в кодировке ANSI или UNICODE (UTF-16). |
|||
29
Живой Ископаемый
03.09.15
✎
17:44
|
нет PDF
|
|||
30
1987denis
04.09.15
✎
08:52
|
угу
|
|||
31
1987denis
04.09.15
✎
08:52
|
я об этом выше и писал, что нашел метод в котором из PDF в TXT и потом уже в 1с.
|
|||
32
StillEnough
04.09.15
✎
09:18
|
неужели нельзя структурированный файл использовать для ТЗ? что за ситуация в жизни заставила так организовать выгрузку?
|
|||
33
1987denis
04.09.15
✎
10:50
|
тараканы бухгалтера)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |