Показать сообщение отдельно
Старый 10.03.2015, 17:26   #34  
novic is offline
novic
Axapta Retail User
Axapta Retail User
 
168 / 25 (0) +++
Регистрация: 14.04.2005
Как-то на проекте переносили данные прямым запросом.
Не так ужасно -) И очень быстро -))

X++:
  SOURCE #RHRMImportCalendarDate
    #static void RHRMImportCalendarDate(Args _args)
    #{
    #    ODBCConnection                odbcConnection;
    #    Statement                     statement;
    #    str                           sqlQueryString;
    #    SqlStatementExecutePermission permission;
    #    ResultSet                     resultSet;
    #    LoginProperty                 loginProperty;
    #    str                           serverName = "SUPER";
    #    //str                           dataBaseName = "BASE";
    #    str                           dataBaseName = "DT";
    #    DataAreaId                    dataAreaId;
    #    int                           counter;
    #
    #    void import()
    #    {
    #        RPayCalendarDate rpayCalendarDate;
    #        ;
    #
    #        rpayCalendarDate.clear();
    #        rpayCalendarDate.TransDate = resultSet.getDate(1);
    #        rpayCalendarDate.CalendarId = resultSet.getString(2);
    #        rpayCalendarDate.PayDayType = resultSet.getInt(3);
    #
    #        if(!RPayCalendarDate::exist(rpayCalendarDate.CalendarId, rpayCalendarDate.TransDate))
    #        {
    #            rpayCalendarDate.doInsert();
    #        }
    #
    #
    #        counter++;
    #    }
    #    ;
    #
    #    try
    #    {
    #        loginProperty = new LoginProperty();
    #        loginProperty.setServer(serverName);
    #        loginProperty.setDatabase(dataBaseName);
    #
    #        odbcConnection = new ODBCConnection(loginProperty);
    #
    #        if (!odbcConnection)
    #        {
    #            info("Ошибка при подключении к базе данных");
    #        }
    #    }
    #    catch (Exception::Internal)
    #    {
    #        info("Возникла ошибка при подключении к базе данных. Операция отменена.");
    #    }
    #    catch (Exception::Error)
    #    {
    #        info("Ошибка при подключении к базе данных!");
    #    }
    #
    #    statement = odbcConnection.createStatement();
    #
    #
    #    sqlQueryString = strfmt("SELECT RPAYCALENDARDATE.TRANSDATE"//1
    #                          + ", RPAYCALENDARDATE.CALENDARID"//2
    #                          + ", RPAYCALENDARDATE.PAYDAYTYPE"//3
    #                          + " FROM RPAYCALENDARDATE"
    #                          + " WHERE RPAYCALENDARDATE.DATAAREAID = 'dat'"
    #                          + " AND RPAYCALENDARDATE.TRANSDATE > '20091231'");
    #
    #    permission = new SqlStatementExecutePermission(sqlQueryString);
    #    permission.assert();
    #    resultSet = statement.executeQuery(sqlQueryString);
    #
    #    while (resultSet.next())
    #    {
    #        ttsbegin;
    #
    #        import();
    #
    #        ttscommit;
    #    }
    #
    #    statement.close();
    #
    #    info(strfmt("Импортировано %1", counter));
    #}
  ENDSOURCE