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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.03.2008, 19:07   #1  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Стандартный импорт данных. Обновление
Добрый вечер, коллеги.

Задался вопросом как можно обнвлять записи в таблице при стандартном импорте данных(Администрирование/Период. операции/Экспорт Импорт данных).

Судя по функционалу обновление возможно только для групп определений с типом "Стандарт". Там при импорте в диалоге можно выбрать из 3х значений параметр обновления.

А вот в группах определения Ексель и Произвольная нигде не нашел никакого параметра похожего при нажатии на кнопу импорт начинается сразу импортирование данных без всяких доп. диалогов. На форме настройка таблиц тоже ничего похожего не обнаружил Как же быть...

Что больше всего смутило, так это то что вот здесь:
http://axapta.mazzy.ru/lib/import/
написано как раз что возможен импорт данных с обновлением.
вот кусок из статьи, описывающий импорт из txt:
Возможности импорта из текстового файла

Возможно позиционное определение полей или определение с помощью разделителя;
Импорт записывает информацию о каждой импортированной и неимпортированной записи в лог;
Можно создать произвольные функции проверки, фильтрации и преобразования импортируемых данных на языке X++;
Можно создать произвольные функции проверки и преобразования данных для каждого поля на языке X++;
Непосредственно в определении импорта можно указать начальные значения для каждого поля;
Для каждого поля можно указать символы к удалению, а также префикс и суффикс, которые будут удалены из текстовых данных перед записью в таблицу;
Перед импортом можно автоматически удалить все записи, существующие в таблице;
Можно указать поле, которое является идентификатором. В этом случае импорт будет не добавлять, а изменять записи.

думал что вот она - панацея...Однако ж как выяснилось что не совсем она, или возможно одного этого недостаточно...

Вообщем, по поводу этого поля уникального на форме настройки таблиц...
1) Оно возможно поможет только если:
а) на таблице есть действительно уникальное поле
б) это уникальное поле есть в файле импорта.

А если на таблице составной индекс, то как здесь быть?

2) Посмотрел код метода validateRecord() на классе SysDataImportDefBase, который собственно делает проверку этого волшебного поля:

X++:
boolean validateRecord(
    SysExpImpTable  _expImpTable,
    DictTable       _dictTable,
    Common          _common
    )
{
    fieldId                primaryKeyId;
    Common                 primaryTableCopy;

    primaryKeyId = _expImpTable.PrimaryKeyId;
    if (primaryKeyId)
    {
        // This to declare it as the same table as common
        primaryTableCopy = _dictTable.makeRecord();
        select firstonly RecId from primaryTableCopy
            where primaryTableCopy.(primaryKeyId) == _common.(primaryKeyId);
    }

    if (primaryTableCopy)
        return false;

    return true;
}
метод вернет 0 всякий раз когда найдет запись по этому ключу.
А далее результат этого метода анализируется след.образом:
X++:
        if (this.canImportRecord(_expImpTable,dictTable,common,line))
 validateRecord()
        {
            if (this.importData(common,_expImpTable.ValidationLevel,dictTable))
            {
                anyImported = true;
            }
            else
            {
                this.logNotOk(line);
            }
        }
        else
        {
            this.logNotOk(line);
        }
то есть ни фига ничего не импортируется и не обновляется...
более того, в метод importData() передается всего 3 параметра, а 4ый (отвечающий за тип обработки: вставка/обновление) берется по дефаулту = false

В итоге система пытается вставить записи и тут же естесственно ругается на то что такая запись уже есть!!!

В итоге я вообщем не вижу реализованной возможности импорта данных с обновлением
Поправьте меня если я не прав... И стоит ли подкручивать механизм импорта дабы он давал возможность обновления
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Стандартный импорт данных... Jony DAX: Программирование 0 28.09.2006 15:32
Тормозит Экспорт/Импорт данных st_msav DAX: Администрирование 28 01.08.2006 15:52
Импорт данных из ODBC источника JohNick DAX: Программирование 4 09.04.2004 10:17
Импорт на данных из 2.5 в 3.0 ddadream DAX: Прочие вопросы 14 10.06.2003 20:28
Импорт данных Swetik DAX: Функционал 2 30.01.2003 01:52

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

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

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