Iniciando con X++ en Microsoft Dynamics AX 2012

Hilo iniciado por Marco Perez Vallejo el 31 de enero de 2014

Viendo 9 entradas - de la 1 a la 9 (de un total de 9)
  • Autor
    Entradas
  • #11775
    RangoMarco Perez VallejoMarco Perez Vallejo
    Participante
    APRENDIZ
    999 Rincoins

    Buenas, este es mi primer post, espero hacerlo en el lugar adecuado.
    Soy programador en herramientas como VB6, delphi y webs, y tengo un amigo que tiene su consultora y va a necesitar desarrollos, me ha pedido aprender X++ y eso empece a ver, recien tomare el curso oficial en 2 meses pero me desespera dejar que pase 2 meses cuando puedo ir viendo algo, ya tengo instalado el Dyn2012 con el SQL Server sobre Windows Server 2012 en una PC con 16Gb de ram, todo resuelto por alli. Ya estoy viendo los conceptos del ERP, y para ir practicando mi amigo me ha encargado el desarrollo de una funcionalidad: Retenciones de impuestos.
    El alcance esta definido y claro. 

    Entre al AOT y despues de algunos dias y de vencer algunas frustraciones he conseguido crear una tabla donde definire las empresas afectas a retenciones, he conseguido hacer un formulario que levanto desde el MenuItem y dicho formulario lo tengo vinculado a la tabla creada. En esa tabla tengo 3 campos. El DataArea para identificar a la empresa, el monto que afecta y un campo integer para que usando un checkbox defina si es afecto o no.

    Bueno, vi que como usuario al trabajar en el formulario los datos se graban directamente en la tabla,vi que se creo el registro y hasta este momento no hice ni una sola linea de codigo.

    El problema que tengo es que el registro me queda grabado con el campo DataArea vacio, los demas si tienen datos. Y lo que sucede es que no quiero poner en el textbox el texto que identifica la empresa, quiero que aparezca alli cuando levanto el formulario. Este formulario nuevo lo llamo desde el form OMLegalEntity y ese form si tiene el dato DataArea, lo que no logro hacer es:
    ¿como paso el texto de DataArea del formulario OMLegalEntity al texto DataArea de mi formulario?
    Si fuera con codigo en mi antiguo ide era tan sencillo como:
    MiForm.Text1.Text = OtroForm.Text1.text

    Agradezco la respuesta y me disculpo por lo basica de la pregunta pero alli estoy luchando por romper el paradigma que tengo, necesito aprender unas 20 cosas por unica vez y de alli ya camino solo y esta es una de esas “cosas”. Gracias

    #11776
    RangoXBBXBB
    Participante
    PARTICIPANTE
    1.049 Rincoins

    El campo DataArea es el del estandard o te has creado uno?

    Si es el el estandard y quieres que se rellene automaticamente con la empresa que estas trabajando, en las propiedades de la tabla la propiedad …savedatapercompany o algo asi tiene uqe estar a true.

    Si lo que quers pasar el datareaid del OMLegalentity al otro form deberas pasarselo por argumentos.

    #11777
    RangoMarco Perez VallejoMarco Perez Vallejo
    Participante
    APRENDIZ
    999 Rincoins

    Muchas gracias por responderme.

    El campo DataArea es del standard pero en la tabla CompanyInfo que es la que llena el textbox OMLegalEntity_DataArea del formulario OMLegalEntity formulario que pertenece al standard. A ese formulario standard le agregue en el menu (MenuItem) el enlace al formulario que yo he creado llamado frmRetenImpuesto. Este formulario esta vinculada a la tabla que cree y el campo de relación en esa tabla también la llame DataArea y tengo un textbox de ese campo en dicho formulario (el que hice).

    Entonces, el formulario que he creado SOLO sera invocado por el formulario standard OMLegalEntity y es este quien ya tiene la empresa selecta y al levantar mi form debe cargarse dicha empresa porque es a ella a quien se le definirá el tema de retención.

    He probado tambien agregando un datasorce mas a mi formulario, el datasource de la tabla CompanyInfo y puse un control que muestra el dato del campo DataArea y funciona en el sentido que me muestra la empresa selecta, pero ¿Como meto ese dato a mi tabla si el textbos no esta vinculado a mi tabla creada?

    Entonces, aplicando la sugerencias:

    He encontrado savedatapercompany en las propiedades y ya estaba en True. ¿Algo mas deberia checar?, de momento voy a ir buscando como hacen otros formularios que al cargar un segundo form (conectado a otro DataSource).

    Si por alli no fuera ¿tienes algun enlace donde pueda ver codigo de como le pasan el dato por los argumentos del form?

    Muchisimas gracias.

    #11778
    RangoXBBXBB
    Participante
    PARTICIPANTE
    1.049 Rincoins

    Todas las tablas tienen el campo dataAreaId y si la propiedad savepercompany esta en true se guardara con la empresa actual, la que puedes ver abajo a la derecha de AX (si no son tablas compartidas que guardaria vir),,si esto no te sirve pruba con lo siguiente.

    En el menuitem que has creado en el formulario de empresa , en la propiedad datasoruce metele el de la companyInfo o OMLegalEntity ahora no recuedo en la 2012 cual es el que tiene elcampo dataareaid que te interesa.

    En tu formulario en el classdeclaration declarate una vatiable de tipo tabla con la tabla que recibiera tu formulario OMLegaentity o companyInfo.

    Si no sabes declararla es muy simple

    Typo objeto/nombre que le das

    La buenas practicas de ax indican que deben ser nombres logicos y por defecto el mismo que el objeto.

    Ej:

    Companyinfo      companyInfo;

    El primero es el tipo objeto el segundo el nombre de la variable.

    No pongas cosas como esta.

    CompanyInfo   CI;

    no dará error pero es de mal programador.

    Anula el metodo init del formulario.

    TuFormulario>Metodos>boton dercho> anular init

    te quedara algo asi

    [Code]

    void init()

    {

       super();

    }

    [/code]

    Antes del super verificar que te llegan registros y del tipo que te interesa en los argumentos, todos los form pueden o no recibir argumentos

    [Code]

    void init()

    {

       if (!element.args() || !element.args().record() || element.args().dataset() != tablenum(CompanyInfo) )

       {

            throw error(‘Donde esta mi registro’);

       }

        companyInfo = element.args().record();

       super();

    }

    [/code]

    Element se refiere al objeto al formulario

    Element.args() devuelve los argumentos (lo que se le ha pasado)

    Element.args().datasert() devuleve el identificador de tabla del que se ha pasdo por eso verifico si el que se le ha pasado es correcto, en caso que no se pasen argumentos lanzara un mensaje de error.

    Hay cientos de ejemplos en ax con busacar en los init de los form los veras.

    Si todo es correcto le asignara el registro que se le ha pasado a tu variable y tendaras el dataareaid que te interesa.

    Espero que ahora si este resuelta.

    #11779
    RangoMarco Perez VallejoMarco Perez Vallejo
    Participante
    APRENDIZ
    999 Rincoins

    Que nutrida respuesta, te agradezco mucho, el lunes a primera hora voy a aplicar lo que me indicas, muchísimas gracias

    #11780
    RangoEdgarEdgar
    Participante
    APRENDIZ
    999 Rincoins

    Algún manual o pagina que recomienden para dar los primeros paso en X++??

    Saludos

    #11781
    RangoXBBXBB
    Participante
    PARTICIPANTE
    1.049 Rincoins

    Existia por la red un manual muy bueno de X++ el problema es que se ha quedado desfasado.

    Ahora mismo como no busques los libros de microsoft lo tienes mal.

    Inside microsoft dynamics

    Dynamics cookbook

    Dynamics reportcookbook 

    #11782
    RangoYvan AcostaYvan Acosta
    Participante
    APRENDIZ
    999 Rincoins

    A mi también me interesa ver la programación en X++, estoy buscando algún compañero que domine X++ (alguien tan ducho como el amigo PrOfesional de aqui) y que me pueda capacitar o hacer una inducción por unas horas  que tengo montones de preguntas. Si hay algún interesado por favor me escribe a mi correo y también me indica sus honorarios por hora.

    Preferiria que fuera alguien de aqui de Lima – Peru, pero en todo caso si alguien no es de Lima entonces podria ser via Teamviewer u otro, igual me avisa sus costos.

    Gracias.

    #11783
    RangoXBBXBB
    Participante
    PARTICIPANTE
    1.049 Rincoins

    Se me habia olvidado pero existen los manuales de desarrollo de microsoft.

    Tal vez eso os sirva

Viendo 9 entradas - de la 1 a la 9 (de un total de 9)
  • Debes estar registrado para responder a este debate.
Carrito de compra