|
v7: Последняя строка не выполняет условие | ☑ | ||
---|---|---|---|---|
0
Mafiozaa
12.04.21
✎
05:34
|
Всем доброго времени суток, вопрос такой, код отрабатывает правильно, но в последней строке, нет, возможно код не совсем красивый, но то что от него хотят выполняет
Процедура Сформировать() ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл Если Найти(КодМаркировки, "<НомУпак>") <> 0 Тогда ПолучитьСтрокуПоНомеру(НомерСтроки); ТЗАгр.НоваяСтрока(); ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки); ТЗАгр.НомерУпаковки = Сред(ТЗАгр.НомерУпаковки, 10, 18); ТЗАгр.НомерУпаковки = "00"+ТЗАгр.НомерУпаковки; КонецЕсли; Если Найти(КодМаркировки, "<КИЗ>") <> 0 Тогда ПолучитьСтрокуПоНомеру(НомерСтроки); Если Найти(ТЗАгр.НомерУпаковки, "<КИЗ>") <> 0 Тогда ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "<КИЗ>", ""); КонецЕсли; Если Найти(ТЗАгр.НомерУпаковки, "</КИЗ>") <> 0 Тогда ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "</КИЗ>", ""); КонецЕсли; ТЗАгр.НоваяСтрока(); ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки); ТЗАгр.НомерУпаковки = ТЗАгр.НомерУпаковки; КонецЕсли; Если Найти(КодМаркировки, "<НомСредИдентТов ИдентТрансУпак=") <> 0 Тогда ПолучитьСтрокуПоНомеру(НомерСтроки); ТЗАгр.НоваяСтрока(); ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки); ТЗАгр.НомерУпаковки = Сред(ТЗАгр.НомерУпаковки, 34, 18); ТЗАгр.НомерУпаковки = "00"+ТЗАгр.НомерУпаковки; КонецЕсли; КонецЦикла; УдалитьСтроки(); ТЗАгр.ВыбратьСтроки(); Пока ТЗАгр.ПолучитьСтроку() = 1 Цикл НоваяСтрока(); Если Найти(ТЗАгр.НомерУпаковки, "&") <> 0 Тогда ПолучитьСтрокуПоНомеру(НомерСтроки); КонецЕсли; ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "&", "&"); Если Найти(ТЗАгр.НомерУпаковки, "<") <> 0 Тогда ПолучитьСтрокуПоНомеру(НомерСтроки); ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "<", "<"); КонецЕсли; Если Найти(ТЗАгр.НомерУпаковки, ">") <> 0 Тогда ПолучитьСтрокуПоНомеру(НомерСтроки); ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, ">", ">"); КонецЕсли; КодМаркировки = ТЗАгр.НомерУпаковки; КонецЦикла; КонецПроцедуры Суть в чем загружается документ в txt из ЭДО, и удаляется все лишнее, оставляя только то что меня интересует, а именно кодмаркировки, 010629110366046621Yg0U_!*QuXFnH - Предпоследняя строка <КИЗ>010629110366046621NIXxnsZmp!VEG</КИЗ> - Последняя строка Почему не удаляет тег? |
|||
1
big
12.04.21
✎
06:51
|
Если Найти(КодМаркировки, "<КИЗ>") <> 0 Тогда
ПолучитьСтрокуПоНомеру(НомерСтроки); Если Найти(ТЗАгр.НомерУпаковки, "<КИЗ>") <> 0 Тогда ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "<КИЗ>", ""); КонецЕсли; Если Найти(ТЗАгр.НомерУпаковки, "</КИЗ>") <> 0 Тогда ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "</КИЗ>", ""); КонецЕсли; ТЗАгр.НоваяСтрока(); ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки); ТЗАгр.НомерУпаковки = ТЗАгр.НомерУпаковки; КонецЕсли; Сначала ищешь в Найти(ТЗАгр.НомерУпаковки, "<КИЗ>"), а только потом добавляешь строку ТЗАгр.НоваяСтрока(); ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки); По-моему надо сначала строку добавить. |
|||
2
HawkEye
12.04.21
✎
09:02
|
(0) ужас какой-то...
ПолучитьСтрокуПоНомеру(НомерСтроки); - это зачем в каждом условии?? это как понимать: Если Найти(ТЗАгр.НомерУпаковки, "<КИЗ>") <> 0 Тогда ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "<КИЗ>", ""); КонецЕсли; Если Найти(ТЗАгр.НомерУпаковки, "</КИЗ>") <> 0 Тогда ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "</КИЗ>", ""); КонецЕсли; ТЗАгр.НоваяСтрока(); ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки); ??? ))) что по твоему будет в "НомерУпаковки", для строки: "<КИЗ>010629110366046621NIXxnsZmp!VEG</КИЗ>"? )))) хотя о чем я... ТЗАгр.НоваяСтрока(); ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки); ТЗАгр.НомерУпаковки = Сред(ТЗАгр.НомерУпаковки, 10, 18); ТЗАгр.НомерУпаковки = "00"+ТЗАгр.НомерУпаковки; )) |
|||
3
Mikeware
12.04.21
✎
09:19
|
(2) он в стопочку записывает... три заза запишет - три раза прочитает
|
|||
4
HawkEye
12.04.21
✎
09:45
|
(3) думаешь фифо практикует? )))
|
|||
5
Mikeware
12.04.21
✎
09:47
|
(4) может, стек.. а может, и очередь...
"автомат Калашникова - конечный автомат для преобразования стека в очередь"© |
|||
6
Mafiozaa
12.04.21
✎
09:47
|
(4) (3) (2) ха-ха, красавчики, ну ткните носом
|
|||
7
Mikeware
12.04.21
✎
09:49
|
(6) с первого раза никак?
|
|||
8
HawkEye
12.04.21
✎
09:51
|
(6) объясни этот кусок кода:
Если Найти(ТЗАгр.НомерУпаковки, "<КИЗ>") <> 0 Тогда ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "<КИЗ>", ""); КонецЕсли; Если Найти(ТЗАгр.НомерУпаковки, "</КИЗ>") <> 0 Тогда ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "</КИЗ>", ""); КонецЕсли; ТЗАгр.НоваяСтрока(); ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки); |
|||
9
hhhh
12.04.21
✎
10:01
|
(6) да это невозможно прочитать, какое там тыкать?
|
|||
10
Mikeware
12.04.21
✎
10:03
|
(9) тебя ж не просят прочитать, тебя просят написать! :-)
|
|||
11
Mafiozaa
12.04.21
✎
10:09
|
(8) Если нахожу в ТЗАгр "Киз" тогда меняю этот киз на ""
Если нахожу в ТЗАгр "/Киз" меняю на "" Потом создаю новую строку и записываю в нее то что находится в табличной части |
|||
12
acanta
12.04.21
✎
10:12
|
(9) ответ типичного программиста...
|
|||
13
Злопчинский
12.04.21
✎
10:23
|
1с++ XMLite
|
|||
14
HawkEye
12.04.21
✎
11:11
|
(11) т.е. если находишь и меняшь, то записываешь в предыдущую строку, да?
и тебя не смущает что в строчке есть и Киз и /Киз? а в нову строчку ты записываешь совсем не то, что меняшь )))) |
|||
15
Salimbek
12.04.21
✎
11:31
|
(0) Странный код.
1) Получаешь КодМаркировки в переменную КМ 2) Чистишь эту переменную как тебе нужно (я бы делал просто КМ = СтрЗаменить(КМ,"Мусор","")) 3) Записываешь обратно КодМаркировки = КМ Все... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |