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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.03.2003, 07:43   #1  
renat is offline
renat
Участник
Аватар для renat
 
142 / 12 (1) ++
Регистрация: 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 могу ли я так сгенерить эти файлы чтобы не писать лишнее ?

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

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

Цитата:
"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.
Старый 19.03.2003, 09:03   #3  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Да и вообще, зачем генерить файл такой сложной структуры, всего лишь для того, чтобы закачать данные. Осмелюсь привести несколько альтернативных вариантов достижения того же результата:

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


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

или нет?

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

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

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

Мастер отрабатывает с ошибкой, хотя создает пустую таблицу Excel c именем таблицы Axapta
Старый 19.03.2003, 11:10   #8  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Изначально опубликовано 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
Старый 19.03.2003, 11:15   #9  
renat is offline
renat
Участник
Аватар для renat
 
142 / 12 (1) ++
Регистрация: 14.10.2002
Ошибка
Функция 'value возвратила код ошибки 80020005 (0xDISP_E_TYPEMISMATCH), что означает: Один или большее количество аргументов не мог быть преобразовано.
Старый 19.03.2003, 11:27   #10  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: 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
Старый 19.03.2003, 11:35   #11  
renat is offline
renat
Участник
Аватар для renat
 
142 / 12 (1) ++
Регистрация: 14.10.2002
Да создаются пустые листы

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


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

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

И вообще, так только у тебя или на всех машинах в сети ?
Старый 19.03.2003, 12:14   #15  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
У нас была та же ерунда. Пишет в файл поля, пока не встретится поле типа Integer без EDT на нем. Выдавала не помню какую ошибку, что-то про типы данных, и на этом процесс создания полей заканчивался. Вылечилось правкой метода generateWorkSheet() класса SysExcelImport (неохота было долго разбираться, просто закомментировали там ветвь case, где вызывается глобальный метод isTypeTime(), который и порождал ошибку, вроде все работает ).
__________________
Андрей.
Старый 19.03.2003, 12:17   #16  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: 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
Старый 19.03.2003, 12:20   #17  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Изначально опубликовано 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
Старый 19.03.2003, 13:07   #18  
renat is offline
renat
Участник
Аватар для renat
 
142 / 12 (1) ++
Регистрация: 14.10.2002
ошибка идет для любой таблице... в частночти для Address, ZipCodes

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

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

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

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Метки и Меточные файлы 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
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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