|   |   | 
| 
 | 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) Записываешь обратно КодМаркировки = КМ Все... | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |