Bukimedia / PrestaSharp

CSharp .Net client library for the PrestaShop API via web service
GNU General Public License v3.0
154 stars 152 forks source link

Actualizar un producto, recibo la siguiente Excepción no controlada por el usuario Referencia a objeto no establecida como instancia de un objeto. SOLUCIONADO #363

Closed John-R-P closed 4 years ago

John-R-P commented 5 years ago

Al intentar actualizar un articulo, recibo System.NullReferenceException: 'Referencia a objeto no establecida como instancia de un objeto.' root fue null. Quisiera solicitar ayuda al respecto. He descargado el repositorio en mi proyecto para poder depurar la incidencia y lo que consigo es un error en en roor.Element, tal como se ve en la imagen, no se descifrar el porque se se genera la Excepción. imagen1 imagen2

ghost commented 5 years ago

Revisa si con la clave del servcio web usada, tienes permiso para actualizar productos. Desde el backoffice, busca servicio web y comprueba los check marcados en cada tabla a gestionar.

John-R-P commented 5 years ago

Gracias por responder, he revisado y tengo activadas todas las casillas relacionadas con los artículos en al administración de Prestashop / Webservice. Cuando ejecuto depuración del proceso que crea y actualiza los artículos, al modificar un artículo me sale la Acepción mencionada, pero si le doy a continuar con la depuración, si que se modifica el artículo, esto lo hace con cada uno de los artículos a modificar, En resumen el proceso modifica los artículos, pero por cada artículo aparece la Acepción. Espero que puedas ayudarme con este teme. Gracias.

ghost commented 5 years ago

Pues no se que puede ser, pero si ROOT es null, es raro que todo funcione. Puedes meter un control de errores (try cath) para interceptar el error e ignorarle. También podrías añadir una comprobación de null sobre el objeto root en esa misma parte del código, aunque lo lógico seria no tocar nada ahí. Supongo que antes de actualizarlo, lo lees, cambias lo que quieras y luego haces el update. Yo me inclinaria a pensar que el UPDATE lo estás haciendo sobre un elmento que no has leido. Ya se que dirás que 'claro que he hecho eso', pero a veces, nos liamos y es una tonteria. Voy a probar a hacer un update de artículo y te cuento (de momento solo leo y actualizo pedidos y poco mas)

ghost commented 5 years ago

Este código a mi me funciona sin problemas: Busco el artículo con ID 14494 y le cambio el precio sin error ni nada.

        Dim P As New Bukimedia.PrestaSharp.Factories.ProductFactory(frmConfig.GetWSUrl, frmConfig.GetWSLoginUser, frmConfig.GetWSKey)
        Dim A As List(Of Bukimedia.PrestaSharp.Entities.product)
        Dim F As New Dictionary(Of String, String)
        F.Add("id", 14494)
        A = P.GetByFilter(F, "", "")
        A(0).price = 3.51
        P.Update(A(0))

Yo me inclinaria a que tienes algún problema en el código, pero no consigo reproducirlo Por ejemplo, esto falla, pero en otro punto:


        Dim b As Bukimedia.PrestaSharp.Entities.product

        P.Update(b)
John-R-P commented 5 years ago

Después de seguir tus consejos, crea una nueva solución, y utilice el código de ejemplo que me diste y funciono correctamente, con esta prueba, inserte el código de ejemplo en mi proyecto, y se ejecuto la excepción, comparando los dos proyectos, el que funciona tiene integrado PrestaSharp como paquete NuGet, y el proyecto que no funciona, tiene integrado PrestaSharp como proyecto que descargue de GitHub. Solución elimine el proyecto Prestasharp, y inserte Prestasharp como paquete NuGet, y se soluciono la Excepción. Al insertar PrestasSharp en una solución como un proyecto, nos puede dar problemas? Quiero agradecer el apoyo recibido para solucionar esta incidencia

ghost commented 5 years ago

No entiendo bien, por desconocimiento, la diferencia entre tenerlo como paque NuGet o como proyecto independiente de una solución.

Yo lo tengo como un proyecto, dentro de una solución, y funciona.

Supongo que la diferencia básica es que a ti, te saltarán actualizaciones del paquete NuGet, mientra que yo, debo buscar actualizaciones, cuando yo decida (es decir, nunca!!!! Si todo funciona).

Así que supongo que el proyecto que usabas, tendrá algún BUG o algo por el estilo.

Si tienes el PROYECTO independiente, si quieres me lo mandas, e intento buscar la diferencia respecto al mio, o te mando yo el mio… o directamente lo das por solucionado y a otro tema.

Encantando de poder ayudarte, es lo mínimo que puedo hacer, cuando a mi tanto me han ayudado.

De: John-R-P notifications@github.com Enviado el: viernes, 19 de julio de 2019 12:45 Para: Bukimedia/PrestaSharp PrestaSharp@noreply.github.com CC: Roberto nts@netsistemas.com; Comment comment@noreply.github.com Asunto: Re: [Bukimedia/PrestaSharp] Actualizar un producto, recibo la siguiente Excepción no controlada por el usuario Referencia a objeto no establecida como instancia de un objeto.' (#363)

Después de seguir tus consejos, crea una nueva solución, y utilice el código de ejemplo que me diste y funciono correctamente, con esta prueba, inserte el código de ejemplo en mi proyecto, y se ejecuto la excepción, comparando los dos proyectos, el que funciona tiene integrado PrestaSharp como paquete NuGet, y el proyecto que no funciona, tiene integrado PrestaSharp como proyecto que descargue de GitHub. Solución elimine el proyecto Prestasharp, y inserte Prestasharp como paquete NuGet, y se soluciono la Excepción. Al insertar PrestasSharp en una solución como un proyecto, nos puede dar problemas? Quiero agradecer el apoyo recibido para solucionar esta incidencia

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Bukimedia/PrestaSharp/issues/363?email_source=notifications&email_token=AKDYYBRHB2DEJHLITG5X7CDQAGLKNA5CNFSM4IDUA4U2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2LJBJI#issuecomment-513183909 , or mute the thread https://github.com/notifications/unsubscribe-auth/AKDYYBV4FHPT6DNBVGTNV7LQAGLKNANCNFSM4IDUA4UQ . https://github.com/notifications/beacon/AKDYYBVR52CSJSMO54ILYOLQAGLKNA5CNFSM4IDUA4U2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2LJBJI.gif

mowcixo commented 4 years ago

La gran diferencia entre usar una solución y el paquete NuGet es que con el paquete NuGet te aseguras de estar siempre actualizado, con una solución a veces no tienes la trazabilidad necesaria para saber en qué estado está el código que tienes descargado. Siempre es recomendable usar el paquete NuGet sin ninguna duda.

Cierro el issue por estar solucionado.

Gracias @John-R-P y @makuki

lock[bot] commented 4 years ago

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.