AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.05.2016, 10:19   #2  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Я пользуюсь таким скриптом для AX 2012. Попробуйте применить его для AX 4 на тестовом приложении.
После исправлений, выполненных скриптом, перегрузите АОС.

X++:
protected void checkNextVal(boolean _fixNextVal = false)
{
    SystemSequences systemSequences;
    Common          record;

    while select forUpdate systemSequences
           where systemSequences.TabId != 0
    {
        if (!(new SysDictTable(systemSequences.TabId)))
            continue;

        record = new SysDictTable(systemSequences.TabId).makeRecord();

        new SkipAOSValidationPermission().assert();
        record.skipAosValidation(true);

        select firstOnly crossCompany RecId
          from record
         where record.RecId >= systemSequences.NextVal;

        if (record.RecId)
        {
            warning(tableId2Name(systemSequences.TabId));

            new SystemSequence().suspendRecIds(systemSequences.TabId);
            new SystemSequence().flushValues(systemSequences.TabId);

            if (_fixNextVal)
            {
                this.fixNextVal(systemSequences.TabId);
            }
        }

        CodeAccessPermission::revertAssert();
    }
}
X++:
protected void fixNextVal(TableId _tableId)
{
    Connection dbConnection = new Connection();
    str        sqlStatement;
    Common     record       = new SysDictTable(_tableId).makeRecord();

    select crossCompany maxOf(RecId)
      from record;

    sqlStatement = strFmt('update %1 set NextVal = %2 where TabId = %3',
                          new SysDictTable(tableNum(SystemSequences)).name(DbBackend::Sql),
                          int642str(record.RecId + 1),
                          int2str(_tableId));

    new SqlStatementExecutePermission(sqlStatement).assert();
    dbConnection.createStatement().executeUpdate(sqlStatement);
    CodeAccessPermission::revertAssert();
}

Последний раз редактировалось Morpheus; 27.05.2016 в 10:24.
За это сообщение автора поблагодарили: AlGol (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
DAX: Official Dynamics AX 2012 R2 Content (update) - Where is it, and how can you find out about updates? Blog bot DAX Blogs 0 03.12.2012 11:11
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11
Developer for Microsoft Dynamics AX Certification Roadmap Blog bot DAX Blogs 1 13.05.2009 16:17
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:03.