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

v7: Последняя строка не выполняет условие

v7: Последняя строка не выполняет условие
Я
   Mafiozaa
 
12.04.21 - 05:34
Всем доброго времени суток, вопрос такой, код отрабатывает правильно, но в последней строке, нет, возможно код не совсем красивый, но то что от него хотят выполняет

Процедура Сформировать()                                          
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
        Если Найти(КодМаркировки, "<НомУпак>") <> 0 Тогда
            ПолучитьСтрокуПоНомеру(НомерСтроки);                                    
            ТЗАгр.НоваяСтрока();
            ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки);
            ТЗАгр.НомерУпаковки = Сред(ТЗАгр.НомерУпаковки, 10, 18);
            ТЗАгр.НомерУпаковки = "00"+ТЗАгр.НомерУпаковки;
        КонецЕсли;
        Если Найти(КодМаркировки, "<КИЗ>") <> 0 Тогда
            ПолучитьСтрокуПоНомеру(НомерСтроки);
            Если Найти(ТЗАгр.НомерУпаковки, "<КИЗ>") <> 0 Тогда
                ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "<КИЗ>", "");
            КонецЕсли;
            Если Найти(ТЗАгр.НомерУпаковки, "</КИЗ>") <> 0 Тогда
                ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "</КИЗ>", "");
            КонецЕсли;
            ТЗАгр.НоваяСтрока();
            ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки);
            ТЗАгр.НомерУпаковки = ТЗАгр.НомерУпаковки;
        КонецЕсли;
        Если Найти(КодМаркировки, "<НомСредИдентТов ИдентТрансУпак=") <> 0 Тогда
            ПолучитьСтрокуПоНомеру(НомерСтроки);
            ТЗАгр.НоваяСтрока();
            ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки);
            ТЗАгр.НомерУпаковки = Сред(ТЗАгр.НомерУпаковки, 34, 18);
            ТЗАгр.НомерУпаковки = "00"+ТЗАгр.НомерУпаковки;
        КонецЕсли;
    КонецЦикла;
    УдалитьСтроки();
    ТЗАгр.ВыбратьСтроки();
    Пока ТЗАгр.ПолучитьСтроку() = 1 Цикл
        НоваяСтрока();
        Если Найти(ТЗАгр.НомерУпаковки, "&amp;") <> 0 Тогда
            ПолучитьСтрокуПоНомеру(НомерСтроки);
        КонецЕсли;
            ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "&amp;", "&");
        Если Найти(ТЗАгр.НомерУпаковки, "&lt") <> 0 Тогда
            ПолучитьСтрокуПоНомеру(НомерСтроки);
            ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "&lt;", "<");
        КонецЕсли;
        Если Найти(ТЗАгр.НомерУпаковки, "&gt") <> 0 Тогда
            ПолучитьСтрокуПоНомеру(НомерСтроки);
            ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "&gt;", ">");
        КонецЕсли;
        КодМаркировки = ТЗАгр.НомерУпаковки;
    КонецЦикла;
КонецПроцедуры

Суть в чем загружается документ в txt из ЭДО, и удаляется все лишнее, оставляя только то что меня интересует, а именно кодмаркировки,

010629110366046621Yg0U_!*QuXFnH - Предпоследняя строка
<КИЗ>010629110366046621NIXxnsZmp!VEG</КИЗ> - Последняя строка

Почему не удаляет тег?
   big
 
1 - 12.04.21 - 06:51
Если Найти(КодМаркировки, "<КИЗ>") <> 0 Тогда
            ПолучитьСтрокуПоНомеру(НомерСтроки);
            Если Найти(ТЗАгр.НомерУпаковки, "<КИЗ>") <> 0 Тогда
                ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "<КИЗ>", "");
            КонецЕсли;
            Если Найти(ТЗАгр.НомерУпаковки, "</КИЗ>") <> 0 Тогда
                ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "</КИЗ>", "");
            КонецЕсли;
            ТЗАгр.НоваяСтрока();
            ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки);
            ТЗАгр.НомерУпаковки = ТЗАгр.НомерУпаковки;
        КонецЕсли;


Сначала ищешь в Найти(ТЗАгр.НомерУпаковки, "<КИЗ>"), а только потом добавляешь строку
            ТЗАгр.НоваяСтрока();
            ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки);

По-моему надо сначала строку добавить.
   HawkEye
 
2 - 12.04.21 - 09:02
(0) ужас какой-то...
  ПолучитьСтрокуПоНомеру(НомерСтроки); - это зачем в каждом условии??

это как понимать:
 Если Найти(ТЗАгр.НомерУпаковки, "<КИЗ>") <> 0 Тогда
                ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "<КИЗ>", "");
            КонецЕсли;
            Если Найти(ТЗАгр.НомерУпаковки, "</КИЗ>") <> 0 Тогда
                ТЗАгр.НомерУпаковки = СтрЗаменить(ТЗАгр.НомерУпаковки, "</КИЗ>", "");
            КонецЕсли;
            ТЗАгр.НоваяСтрока();
            ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки);

??? )))

что по твоему будет в "НомерУпаковки", для строки: "<КИЗ>010629110366046621NIXxnsZmp!VEG</КИЗ>"? ))))

хотя о чем я...

ТЗАгр.НоваяСтрока();
            ТЗАгр.НомерУпаковки = СокрЛП(КодМаркировки);
            ТЗАгр.НомерУпаковки = Сред(ТЗАгр.НомерУпаковки, 10, 18);
            ТЗАгр.НомерУпаковки = "00"+ТЗАгр.НомерУпаковки;

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.