24.03.2008, 19:07 | #1 |
Участник
|
Стандартный импорт данных. Обновление
Добрый вечер, коллеги.
Задался вопросом как можно обнвлять записи в таблице при стандартном импорте данных(Администрирование/Период. операции/Экспорт Импорт данных). Судя по функционалу обновление возможно только для групп определений с типом "Стандарт". Там при импорте в диалоге можно выбрать из 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; } А далее результат этого метода анализируется след.образом: 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 В итоге система пытается вставить записи и тут же естесственно ругается на то что такая запись уже есть!!! В итоге я вообщем не вижу реализованной возможности импорта данных с обновлением Поправьте меня если я не прав... И стоит ли подкручивать механизм импорта дабы он давал возможность обновления |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Стандартный импорт данных... | 0 | |||
Тормозит Экспорт/Импорт данных | 28 | |||
Импорт данных из ODBC источника | 4 | |||
Импорт на данных из 2.5 в 3.0 | 14 | |||
Импорт данных | 2 |
|