El mecanismo "indiceitem" es una propiedad especial que permite manejar desde el control ActiveX una lista de valores variables (como los items correspondientes a las alícuotas de una factura electrónica del WSFEv1 y otros datos que no son fijos).
Por ejemplo antes de llamar al método "f1CAESolicitar" deben cargarse una serie de datos (fecha, total, etc) en las propiedades correspondientes y también deben cargarse los datos de las alícuotas de i.v.a. que se aplican al comprobante en las propiedades:
Pero en una factura pueden presentarse más de una alícuota a aplicar (productos gravados con el 21% y otros con el 10%). El control podría agregar propiedades extras como:
f1DetalleIvaId2, f1DetalleBaseImp2, f1DetalleIvaImporte2
f1DetalleIvaId3, f1DetalleBaseImp3, f1DetalleIvaImporte3.
Un esquema asi sería muy engorroso y limitante. Además hay muchos otros datos variables (tributos, comprobantes asociados, etc) en una factura y todos deberian tener sus propiedades duplicadas, triplicadas o más.
Una forma más sencilla y genérica para cargar (o leer) estos datos es usar una propiedad "f1IndiceItem" para indicar a que linea o fila de la lista nos estamos refiriendo. Si en una factura debemos cargar 2 alicuotas de I.V.A. (21% y 10.5%) con sus importes correspondientes procederiamos asi:
En la propiedad "f1DetalleIvaItemCantidad" cargamos el valor 2 (para indicar que la lista de alícuotas contiene 2 filas).
Cargamos la propiedad "f1indiceitem" a 0 (para indicar que nos estamos refiriendo a la primera fila).
Cargamos en la propiedades "f1DetalleIvaId", "f1DetalleIvaBaseImp" y "f1DetalleIvaImporte" los datos de la primera fila.
Cargamos la propiedad "f1indiceitem" a 1 (para indicar que nos estamos refiriendo a la segunda fila).
Cargamos en la propiedades "f1DetalleIvaId", "f1DetalleIvaBaseImp" y "f1DetalleIvaImporte" los datos de la segunda fila.
Este procedimiento se aplica a cualquier lista que debamos carga (o leer). Primero se indica en una propiedad "f1XXXXItemCantidad" la cantidad de filas de la lista y luego usando la propiedad "f1IndiceItem" para referenciar a cada fila (empezando siempre desde 0 hasta f1XXXXItemCantidad-1).
Si necesitamos leer una lista variable devuelta por AFIP (por ejemplo la lista de errores devueltos al intentar autorizar un CAE) se procede de igual forma:
En la propiedad "f1DetalleObeseracionItemCantidad" contendrá la cantidad de filas (errores) en la lista que puede ser 0 o más.
Cargamos la propiedad "f1Indiceitem" a 0 y leemos en las propiedades correspondientes los datos de la primera fila (F1RespuestaDetalleObservacionMsg, F1RespuestaDetalleObservacionCode).
Continuamos cargando la propiedad "f1IndiceItem" a 1, 2, etc hasta "f1DetalleObersvacionItemCantidad-1".
En la documentación de métodos y propiedades se detalle específicamente que métodos devuelven listas variables y en que propiedades se leen. Solo la propiedad "f1IndiceItem" es común a todas las listas.
Bajo ningún concepto debe confundirse la propiedad "f1IndiceItem", que referencia la fila de una lista variable, con la propiedad "f1Indice" que referencia a un comprobante en caso que se esté autorizando un lote de comprobantes para obtener varios CAE en una sola llamada.