Хорошая программа не та, что правильно работает при правильном использовании, а та, что правильно работает при любых ситуациях... и как понял - "УС Лэнд:ЕГАИС" ещё долго развиваться прежде чем её можно будет назвать хорошей программой. С начала февраля 2021 было несколько сообщений о вылетах программы, присылали скрины, но источник вылетов или их причину не мог найти, т.к. судя по скринам вылеты были на "пустом месте".
Наконец вчера удалось поймать ситуацию вылета, с обычным сообщением "февраля" об ошибке и выяснить ситуацию, когда такая ошибка возникает в "любом" режиме программы... и
это возможно новая реальность ЕГАИС?
Суть: из ЕГАИС могут приходить не полностью оформленные или пустые ответы, где такого "не может быть"
Обычно, если ситуация неполного ответа была допустимой, то в "УСЕга" была обработка ответа типа:
Код:
oUrl := oDoc:findFirst( "url" )
IF oUrl <> NIL
<Операции>
ELSE
<сообщение об ошибке>
ENDI
Но на "месте" отловленного вылета программы был код:
Код:
oUrl := oDoc:findFirst( "ns:Document" )
// Создаю объект итератора подузла. Используя объект итератора сканирую ВСЕ теги узла СПЛОШНЯКОМ.
oIter := TXmlIterator():new( oUrl )
т.е.
если ОБЯЗАТЕЛЬНОГО тэга "ns:Document" в ответе ЕГАИС не существовало, то операция TXmlIterator():new( oUrl ) порождала вылет программы...
Начата процедура поиска иголок в стоге сена, т.е. ситуаций не обработки косяков в ответах ЕГАИС... и пару "иголок" уже нашел и исправил