AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 19.03.2003, 07:43   #1  
renat is offline
renat
Участник
renat's Avatar
 
142 / 12 (1) ++
Join Date: 14.10.2002
Файлы DAT и DEF
Встал вопрос о импорте данных в Axapta.
Посмотрел я на DAT и DEF файлы может грузить из текста.

т.е. можно взять бд из левой ИС и сгенерить такие файлы и потом импортировать в Ахарта.

Файл DAT почти все понятно кроме третьего поля - там какое-то большое число - обязательно ли оно в файле для импорта и если обязательно то как его генерить?

Файл DEF:
"EXPFORMAT VER. 2.5 SP4 RU","Comma" - все понятно

"TABLEDEF",175,"InventTable" - тоже все понятно

"RECORDDEF",175,77,"ItemGroupId",1,"ItemId",2,"ItemName",.... - не понятно поле 3 и
циферки 1,2,3,4,5... после 82 пошли 16000, 160001 - это почему так? надо ли их каким -то особым образом генерить?

"RECORDCOUNT",175,60 - тоже все понятно

"RECORDIDMIN",36920499 - это видимо связано с третьим полем из DEF
"RECORDIDMAX",73943864 - нужно ли их заполнать или можно пропустить или
можно "от фонаря" значения поставить?

"RECORDCOMPANY","ren" - все понятно

И еще вопрос - если я хочу заполнять лишь 10 полей из 80 могу ли я так сгенерить эти файлы чтобы не писать лишнее ?

Заранее спасибо.
Old 19.03.2003, 08:55   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Join Date: 03.12.2001
Quote:
т.е. можно взять бд из левой ИС и сгенерить такие файлы и потом импортировать в Ахарта.
Нет нельзя.

Причин много. Вот одна из них:

Quote:
"RECORDIDMIN",36920499 - это видимо связано с третьим полем из DEF
"RECORDIDMAX",73943864 - нужно ли их заполнать или можно пропустить или
можно "от фонаря" значения поставить?
Это min и max recId из того набора данных который вы экспортировали из старой БД. Взять от балды вы их никак не можете. Дело в том, что когда эти данные будут закачиваться в системе резервируется дипазон recId равный (max-min+1). Все будущие recId закачанных записей генерятся в зависимости от:

1. RECORDIDMINб RECORDIDMAX
2. Текущего счетчика recID в базе в которую мы закачиваем данные
3. Наличия таблиц, общих для двух компаний
4. Наличия таблиц, у которых для связки используется recId
5. Наличия еще нескольких экзотических моментов.

В общем там много чего понакручено - в свое время, когда я с этим разбирался я даже сделал вывод, что механизм импорта/экспорта данных самое сложное что я видел в Аксапте
Если интересуют подробности смотри класс SysDataImport. Например метод con2, который вызывает методы con2* , которые в свою очередь получают данные из def файла. Рекомендую также посмотреть методы importData, importDef и главное importBuffer.
Old 19.03.2003, 09:03   #3  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Join Date: 03.12.2001
Да и вообще, зачем генерить файл такой сложной структуры, всего лишь для того, чтобы закачать данные. Осмелюсь привести несколько альтернативных вариантов достижения того же результата:

1. Перегнать данные из вашей системы в текстовый файл (с данными, разделенными запятой) и закачать в Аксапту.
2. То же самое, но с Excel вместо текстового файла.
3. Если Ваше приложение можно использловать как COM сервер, то используя Аксапту, как COM клиент можно забрать у Вашей системы необходимые данные.
4. Если у Вас закуплен COM коннектор и Ваша программа поддреживает COM, то можно используя Аксапту, как COM сервер, а Вашу программу как COM клиент перекачать все необходимые данные.
5. Используя ADOConnection или ODBCConnection можно обращаться к данным в любой базе данных, для которой есть ODBC драйвера (то етсь практически ко всем).
6. Использовать возможности XML.
7. Зная сколько строк Вы хотите импортировать, можно зарезервировать данное количество RecId у Аксапты и пользуясь любым языком (например SQL ) можно быстро закачать очень большой объем данных, не забывая подставлять recId из зарезервированного диапазона.
Old 19.03.2003, 09:07   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Join Date: 15.01.2002
Location: Москва
Blog Entries: 7
Quote:
циферки 1,2,3,4,5... после 82 пошли 16000, 160001 - это почему так? надо ли их каким -то особым образом генерить?
Каждое поле в таблице имеет свой ID. Это id зависит от слоя, в котором оно было добавлено, т.е. поля 1-82 SYSтемные, а 16000.. DISные. Генерить, понятное дело, бесполезно для стандартных таблиц.
Old 19.03.2003, 10:20   #5  
renat is offline
renat
Участник
renat's Avatar
 
142 / 12 (1) ++
Join Date: 14.10.2002
1. Перегнать данные из вашей системы в текстовый файл (с данными, разделенными запятой) и закачать в Аксапту.


Насколько я понял - это надо уже на X++ написать прогу, которая окроет этот текстовый файл и сделает INSERTы в таблицу... А RecID Axapta сама уже создаст...

или нет?

2. То же самое, но с Excel вместо текстового файла. - еще не пробовал (к сожалению)

Видимо Exel таблица должна быть определнным образом построена...
Был бы экспорт в Exсel было бы понятно какая таблица должна быть...
Old 19.03.2003, 10:55   #6  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Join Date: 03.12.2001
1. Администрирование->База данных->Экспорт/Импорт
В частности "Мастер Шаблонов Excel"

2. Читать руководство администратора.
Old 19.03.2003, 11:01   #7  
renat is offline
renat
Участник
renat's Avatar
 
142 / 12 (1) ++
Join Date: 14.10.2002
1 . Администрирование->База данных->Экспорт/Импорт
В частности "Мастер Шаблонов Excel"

Мастер отрабатывает с ошибкой, хотя создает пустую таблицу Excel c именем таблицы Axapta
Old 19.03.2003, 11:10   #8  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: Dubai, UAE
Quote:
Изначально опубликовано renat
Мастер отрабатывает с ошибкой, хотя создает пустую таблицу Excel c именем таблицы Axapta
Что вы хотите услышать в ответ на это? Сообщите хотя бы, что за ошибка.

В целом, могу сказать, что с мастером проблем у меня не возникало.

Про импорт из текстового файла читайте здесь: http://www.mazzy.ru/axapta/hints/import/index.html (спасибо Сергею Мазуркину, за то что ткнул меня в это носом )
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Old 19.03.2003, 11:15   #9  
renat is offline
renat
Участник
renat's Avatar
 
142 / 12 (1) ++
Join Date: 14.10.2002
Ошибка
Функция 'value возвратила код ошибки 80020005 (0xDISP_E_TYPEMISMATCH), что означает: Один или большее количество аргументов не мог быть преобразовано.
Old 19.03.2003, 11:27   #10  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: Dubai, UAE
Для какой таблицы AXAPTA вы создаете шаблон?

На самом деле мастер очень простой. Он всего лишь создает в книге Excel несколько листов с именами полей таблиц.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Old 19.03.2003, 11:35   #11  
renat is offline
renat
Участник
renat's Avatar
 
142 / 12 (1) ++
Join Date: 14.10.2002
Да создаются пустые листы

а названия полей в которые данные ложить?
Old 19.03.2003, 12:00   #12  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Join Date: 03.12.2001
На каждом листе должно быть по одной строке, в которой прописаны названия полей.
Old 19.03.2003, 12:06   #13  
renat is offline
renat
Участник
renat's Avatar
 
142 / 12 (1) ++
Join Date: 14.10.2002


а у меня пустые листы !!!

почему нет строки с названиями полей
Old 19.03.2003, 12:12   #14  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Join Date: 03.12.2001
Попробуй переустановить Excel. Если не поможет, поработай с отладчиком и попытайся локализовать причину ошибки

И вообще, так только у тебя или на всех машинах в сети ?
Old 19.03.2003, 12:14   #15  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Join Date: 27.03.2002
Location: Москва
У нас была та же ерунда. Пишет в файл поля, пока не встретится поле типа Integer без EDT на нем. Выдавала не помню какую ошибку, что-то про типы данных, и на этом процесс создания полей заканчивался. Вылечилось правкой метода generateWorkSheet() класса SysExcelImport (неохота было долго разбираться, просто закомментировали там ветвь case, где вызывается глобальный метод isTypeTime(), который и порождал ошибку, вроде все работает ).
__________________
Андрей.
Old 19.03.2003, 12:17   #16  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: Dubai, UAE
Таблица?

Какая версия Excel?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Old 19.03.2003, 12:20   #17  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Join Date: 27.11.2001
Location: Dubai, UAE
Quote:
Изначально опубликовано Dron AKA andy
У нас была та же ерунда.
Здесь не похоже. В твоей ситуации ошибку выдает Global::typeId2ExtendedTypeId. Здесь ошибку выдает метод COM-объекта.

Настаиваю на том, что сначала надо выяснить, для какой таблицы создается шаблон. Пока повторить ошибку не удалось.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Old 19.03.2003, 13:07   #18  
renat is offline
renat
Участник
renat's Avatar
 
142 / 12 (1) ++
Join Date: 14.10.2002
ошибка идет для любой таблице... в частночти для Address, ZipCodes

может MSOffice надо особый у меня XP...
Old 19.03.2003, 13:28   #19  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Join Date: 03.12.2001
Может и фиг с ним, с Excel ?

Я же еще кучу способов привел

Из текстового файла качается на порядок быстрее, чем из Excel. COM - все таки штука не бустрая.
Old 19.03.2003, 13:48   #20  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Join Date: 15.01.2002
Location: Москва
Blog Entries: 7
У меня аналогичная ситуация с данным мастером.
Ошибка возникает в методе generateWorkSheet(...) класса SysExcelImport
на строках с кодом curCell.value(...)
Для исправления можно использовать метод, предложенный Андре (в другом обсуждении) - заменить код на curCell.value2(...)
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Метки и Меточные файлы sguryev DAX: База знаний и проекты 1 03.09.2021 12:01
Народ, плиз, нужны файлы демо-базы на Ax 3.0. Alexey-IT DAX: База знаний и проекты 4 29.03.2007 13:11
Формат файла Экспорта Импорта dat demon46 DAX: Администрирование 33 11.09.2006 16:18
Компания DAT katja DAX: Функционал 9 24.08.2005 22:47
*.aoc файлы Андре DAX: Администрирование 15 22.04.2003 07:40

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 17:31.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.