Alguns testes que estou realizando com o Python encontrei alguns problemas parecidos e algo que notei no seu código seria o uso do print como saída final, o print não lhe será útil para retornar para o Iris creio a substituição dele por um return será mais efetivo.

O seu print irá imprimir como uma lista tudo que foi insirido no array vendas, se for para tratar essa váriavel externamente creio que será nescessário algumas modificações, mas irá funcionar.

Creio que já deva ter sulocionado o problema, mas talvez, algo que possa ajudar nesse problema seria a utilização do Python? Não sei qual versão do Iris está utilizando, mas se tiver suporte ao Python, ele tem algumas bibliotecas que poderão te auxiliar nessa resolução.

Olá Djeniffer, simplesmente após a ultima atualização da extenção no dia 20/07 da InterSystems, eu não consigo executar mais o terminal do Iris no VsCode.

Olá Danusa, a versão é essa, Product version: IRIS 2022.1, $ZV: IRIS for UNIX (Red Hat Enterprise Linux 8 for x86-64) 2022.1.2 (Build 574U), essa extensão utiliza o terminal na web, fora do VS, eu gostaria de rodar o terminar do IRIS, dentro do VsCode, mas fazendo novos testes hoje, descobri que para poder utilizar esse terminal integrado com o VS só na nova versão do IRIS. 

Sim, eu tinha conseguido conectar, porém não posso voltar versão, porque preciso do Python que é a partir dessa versão, mas a versão web funciona, só queria algo mais integrado, mais rápido, esperar chegar a versão 2023 aqui, creio que está solucionado essa questao.

O Json é bem extenso, mais de 5 milhões de caracteres, vou colocar aqui em baixo a classe,
 

ClassMethod InserirFatura(pInput As %Library.AbstractStream, Output pOutput As %Stream.Object) As %Status

{

    Set tSC = $System.Status.OK()

    Set %response.ContentType="application/json"

    Try {

        Set tObjBody = {}.%FromJSON(%request.Content)

        If $IsObject(tObjBody) {

            Set tArrayFatura = tObjBody.fatura

            Set iterArrayFatura = tArrayFatura.%GetIterator()

            Set tContNovo = 0

            Set tContAlte = 0

            Set tContDupli = 0

            TSTART

            While iterArrayFatura.%GetNext(.key, .tObjFatura) {

                Set:(tObjFatura.modalidade = "ger. compartilhada-geradora") tUG = $ZCONVERT(tObjFatura.instalacao, "I")

                Set tFatura = ##Class(Onboarding.Modelo.BotCemig).%New()

                If tObjFatura."per_prox_saldo_exp" '= ""{

                    Set tMesProx = $PIECE(tObjFatura."per_prox_saldo_exp","/",2)

                    Set tAnoProx = $PIECE(tObjFatura."per_prox_saldo_exp","/",1)

                    Set tDataProx = "01/"_tMesProx_"/"_tAnoProx

                    Set tFatura."per_prox_saldo_exp" = $ZDATEH(tDataProx)

                }

                Set tMesPer = $PIECE(tObjFatura.periodo,"/",2)

                Set tAnoPer = $PIECE(tObjFatura.periodo,"/",1)

                Set tDataPer = "01/"_tMesPer_"/"_tAnoPer

                Set tFatura.periodo = $ZDATEH(tDataPer)

                Set tNumSemPorc = $PIECE(tObjFatura.quota,"%",1)

                Set tNumSemVirg = $REPLACE(tNumSemPorc,",",".")    

                Set tFatura.quota = tNumSemVirg

                Set tFatura."unidade_geradora" = tUG

                Set tFatura."posto_horario" = tObjFatura."posto_horario"

                Set tFatura."qtd_compensacao" = tObjFatura."qtd_compensacao"

                Set tFatura."qtd_consumo" = tObjFatura."qtd_consumo"

                Set tFatura."qtd_geracao" = tObjFatura."qtd_geracao"

                Set tFatura."qtd_geracao" = tObjFatura."qtd_geracao"

                Set tFatura."qtd_prox_saldo_exp" = tObjFatura."qtd_prox_saldo_exp"

                Set tFatura."qtd_recebimento" = tObjFatura."qtd_recebimento"

                Set tFatura."qtd_saldo_ant" = tObjFatura."qtd_saldo_ant"

                Set tFatura."qtd_saldo_atual" = tObjFatura."qtd_saldo_atual"

                Set tFatura."qtd_saldo_exp" = tObjFatura."qtd_saldo_exp"

                Set tFatura."qtd_transferencia" = tObjFatura."qtd_transferencia"

                Set tFatura.instalacao = $ZCONVERT(tObjFatura.instalacao, "I")

                Set tFatura.modalidade = tObjFatura.modalidade

                Set tRS = ##Class(Onboarding.Repositorio.ConsultaSQL).ConsultaFatura(tFatura.instalacao, tFatura.periodo, tFatura."posto_horario", .tSC)

                If $$$ISERR(tSC) {

                    Throw tSC

                }

                If tRS.%Next() = 0 {

                    Set tFatura."data_criacao" = $PIECE($HOROLOG,",",1)

                    Set tFatura.duplicidade = 1

                    Set tSC = tFatura.%Save()

                    If $$$ISERR(tSC) {

                        Throw tSC

                    }

                    Set tContNovo = tContNovo+1

                }Else{

                    Set tFaturaExi = ##Class(Onboarding.Modelo.BotCemig).%OpenId(tRS.ID, .tSC)

                    If $$$ISERR(tSC) {

                        Throw tSC

                    }

                    If ((tFaturaExi."data_alteracao" = $PIECE($HOROLOG,",",1)) || (tFaturaExi."data_criacao" = $PIECE($HOROLOG,",",1))) {

                        Set tFatura.duplicidade = 1

                        Set tFaturaExi.duplicidade = 2

                        Set tFaturaExi."data_alteracao" = $PIECE($HOROLOG,",",1)

                        Set tFatura."data_criacao" = $PIECE($HOROLOG,",",1)

                        Set tSC = tFatura.%Save()

                        Set tSC = tFaturaExi.%Save()

                        If $$$ISERR(tSC) {

                            Throw tSC

                        }

                        Set tContDupli = tContDupli+1

                    }Else {

                    Set tFaturaExi.modalidade = tFatura.modalidade

                    Set tFaturaExi."per_prox_saldo_exp" = tFatura."per_prox_saldo_exp"

                    Set tFaturaExi."qtd_compensacao" = tFatura."qtd_compensacao"

                    Set tFaturaExi."qtd_consumo" = tFatura."qtd_consumo"

                    Set tFaturaExi."qtd_geracao" = tFatura."qtd_geracao"

                    Set tFaturaExi."qtd_prox_saldo_exp" = tFatura."qtd_prox_saldo_exp"

                    Set tFaturaExi."qtd_recebimento" = tFatura."qtd_recebimento"

                    Set tFaturaExi."qtd_saldo_ant" = tFatura."qtd_saldo_ant"

                    Set tFaturaExi."qtd_saldo_atual" = tFatura."qtd_saldo_atual"

                    Set tFaturaExi."qtd_saldo_exp" = tFatura."qtd_saldo_exp"

                    Set tFaturaExi."qtd_transferencia" = tFatura."qtd_transferencia"

                    Set tFaturaExi.quota = tFatura.quota

                    Set tFaturaExi.duplicidade = 1

                    Set tFaturaExi."data_alteracao" = $PIECE($HOROLOG,",",1)

                    Set tSC = tFaturaExi.%Save()

                    If $$$ISERR(tSC) {

                        Throw tSC

                    }

                    Set tContAlte = tContAlte+1

                    }

                }

            }

            TCOMMIT

            Write {"retorno":"OK","tContNovo":(tContNovo),"tContAlte":(tContAlte),"tContDupli":(tContDupli)}.%ToJSON()

        } Else {

            Throw ##class(%Exception.General).%New("Entrada JSON inválida")

        }

    }Catch tException {

        TROLLBACK

        Do ..ReportHttpStatusCode(..#HTTP500INTERNALSERVERERROR)

        Set:'$$$ISERR(tSC) tSC = tException.AsStatus()

        Set tSC = $System.Status.GetErrorText(tSC)

    }

    Quit tSC

}

1 - Sim, salvo todos os JSONs.

2 - Faço o reenvio somente dos que dão erro.

3 -  Não tinha reparado nesse ponto de retorno.

-- Já consegui resolver o problema, praticamente refiz toda a lógica de envio do Json, em vez de enviar ele inteiro, quebrei em 300 objetos por vez, tem muito mais envios, porém não quebrou. 

Desculpa a demora para responder, e muito obrigado pela atenção.