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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.10.2006, 11:54   #1  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
Импорт справочника поставщиков в AX
Доброго времени суток коллеги!
У меня есть вопрос и ответ на него, но не уверен правильный ли мой ответ.
Задача такова. В ЕХСЕль есть список поставщиков. Мне необходимо импортировать из этого файла поставщиков. Условия таковы. Всех поставщиков нужно заводить заново, обновление записей не нужно.
Код:
 
void PutVend(str FileName)
{
  VendTable vend;
  NumberSeq numberSeq;
  Num       number;
  Uni_ExcelImportADO  excelImp;
  ;
  excelImp = new Uni_ExcelImportADO(FileName);
  if(!excelImp.openFile())
            throw error(strfmt(@"Ioeaea i?e ioe?uoee oaeea Excel «%1»", Filename));
  while(!excelImp.eof())
    {
      vend.initValue();
      number = numberSeq::newGetNum(NumberSequenceReference::Find(602)).num();
      vend.AccountNum = number;
      vend.InvoiceAccount = number;
      vend.NameAlias = excelImp.getFieldValue(1);
      vend.Name = excelImp.getFieldValue(2);
      vend.INN_RU = excelImp.getFieldValue(3);
      vend.Address = excelImp.getFieldValue(4);
      vend.Phone = excelImp.getFieldValue(5);
      vend.YourAccountNum = excelImp.getFieldValue(6);
      vend.VendGroup = "INI";
      vend.PostingProfile = "INI";
      vend.AFPLeadTime = 1;
      vend.LanguageId = "ru";
      vend.PriceCurrency = "RUR";
      vend.Country = "RUS";
      vend.insert();
      excelImp.moveNext();
    }
  excelImp.finalize();
}
По чтению из ЕХСЕль вопросов не возникает. Все работает хорошо. еще раз спасибо gl00mie за предоставленный класс Uni_ExcelImportADO.
Но вот сегодня консультант сказал, что возможна ситуация неверного заполнения, так как я заполняю только поля таблицы. В фортме VendTable я протестировал ввод новой записи вручную, и ничего лишнего(какие-то действия, кроме заполнения таблицы) я не нашел. Может я ошибаюсь? Пожалуйста помогите мне с этим.
Старый 05.10.2006, 12:05   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
1. Обязательно поставьте перед vend.initValue()
vend.clear(); потому как у вас сейчас из созданной записи могут перетираться значения.
2. Find(602) - это конечно, круто
Может лучше метот numRefVendAccount таблицы VendParameters?
3. Язык, профиль разноски, группу поставщиков, страну и валюту тоже из настроект следует тащить.
4. Мы еще заполняем Currency - оно стоит как обязательное в таблице тоже. Поэтому странно, что у вас insert() проходит.

А вообще, никаких других вещей, кроме создания строки таблицы VendTable, ИМХО, делать не нужно.
Мы правда создаем еще запись в vendBankAccount. Но это уже наша специфика.
Видимо, ваш консультант так предположил после импорта ном. справочника (там еще 2 таблицы нужно заполнять)
За это сообщение автора поблагодарили: Hans (1), demon46 (1).
Старый 05.10.2006, 12:22   #3  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
kashperuk Что касается второго и третьего твоего ответа, так я не знаю как работать с настройками справочника, буду очень признателен, если дашь пример, применительный к моему случаю
Старый 05.10.2006, 12:25   #4  
Maugly
Гость
 
n/a
А еще в Акс есть стандартные средства импорта...
Старый 05.10.2006, 12:28   #5  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
2.) numberSeq::newGetNum( VendParameters::numRefVendAccount() ).num();

3.) Делаеш таблицу `ImportParameters` = {currency,langid,vendgroupid, ... etc ... }
При импорте один раз сделай запрос на эту таблицу и используй данные оттуда:

Vendtable.currency = "RUR";
=>
Vendtable.currency = ImportParameters.currency;
За это сообщение автора поблагодарили: demon46 (1).
Старый 05.10.2006, 12:32   #6  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
Про обязательный поля все понятно, но про дополнительные проверки так и осталась смута. Нужно ли делать дополнительные проверки или все же можно обойтись только простым добавлением записи в таблицу?
Старый 05.10.2006, 12:39   #7  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
У нас Ретейл
Старый 05.10.2006, 13:04   #8  
Nick is offline
Nick
Участник
Аватар для Nick
 
320 / 30 (2) +++
Регистрация: 14.12.2001
Адрес: г. Москва
Не забудьте проинициализировать
PrintModuleType = Параметры
чтоб потом долго не разбираться почему документы не печатаются
За это сообщение автора поблагодарили: kashperuk (4).
Старый 05.10.2006, 14:29   #9  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
Цитата:
Сообщение от Nick Посмотреть сообщение
Не забудьте проинициализировать
PrintModuleType = Параметры
чтоб потом долго не разбираться почему документы не печатаются
Если не затруднит, не могли бы вы описать подробнее. чего то не понял что вы имеете ввиду.
Старый 05.10.2006, 14:35   #10  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
X++:
vend.PrintModuleType = ModuleVendPurchParameters::Parameters;
Только оно в InitValue() уже есть.

Последний раз редактировалось oip; 05.10.2006 в 14:37.
За это сообщение автора поблагодарили: demon46 (1).
Старый 05.10.2006, 14:38   #11  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
Кажется разобрался. Всем еще раз спасибо
Старый 06.10.2006, 12:36   #12  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Если есть >1 адреса, юридический, фактический etc. то придется заполнять еще табличку Address
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 24.12.2007, 22:01   #13  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Maugly Посмотреть сообщение
А еще в Акс есть стандартные средства импорта...
А можно поинтересоватся .... а есть ли стандартные средства. вот для такого примера....
закачиваю файл из Execel. там кода поставщиков. причём в файле код клиента 5004, а в аксапте есть код клиента 0005004. вот как проверить,есть ли у нас нужный клиент и "дорастить " код клиента до кода указанного в номерной серии? То есть импортнуть код 0005004?
Старый 24.12.2007, 22:33   #14  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Есть метод, который по коду выдает номер с учетом маски номерной серии.

Вот пример:
X++:
box::info(NumberSeq::numInsertFormat(4005, "######_162"));
Старый 24.12.2007, 22:50   #15  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Есть метод, который по коду выдает номер с учетом маски номерной серии.

Вот пример:
X++:
box::info(NumberSeq::numInsertFormat(4005, "######_162"));
я так понимаю, что можно и custParametrs в конце привязать?
Старый 24.12.2007, 23:40   #16  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Конечно. Для получения маски номерной серии восьпользуйся любым подходящим способом.
Старый 25.12.2007, 10:25   #17  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от fialka Посмотреть сообщение
А можно поинтересоватся .... а есть ли стандартные средства. вот для такого примера....
закачиваю файл из Execel. там кода поставщиков. причём в файле код клиента 5004, а в аксапте есть код клиента 0005004. вот как проверить,есть ли у нас нужный клиент и "дорастить " код клиента до кода указанного в номерной серии? То есть импортнуть код 0005004?
Все бы программировать...
В ЕКСЕЛЕ(!!!) в колонке Код установите формат Текст, а не число.
"Дорастите" непосредственное в Экселе.
И не программируйте.

В следующий раз установите формат ДО того, как данные будут попадать в Эксель.
Вот и не будут нули пропадать.
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2007, 10:30   #18  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от mazzy Посмотреть сообщение
Все бы программировать...
В ЕКСЕЛЕ(!!!) в колонке Код установите форма Текст, а не число.
"Дорастите" непосредственное в Экселе.
И не программируйте.

В следующий раз установите формат ДО того, как данные будут попадать в Эксель.
Вот и не будут нули пропадать.
так кабы я заполняла этот документ... всё же пользователи... то недоглядят, то переглядят.. а ты майся, как поставить дополнительную проверку, чтобы нормально закачивались данные....(
Старый 25.12.2007, 10:31   #19  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от demon46 Посмотреть сообщение
Задача такова. В ЕХСЕль есть список поставщиков. Мне необходимо импортировать из этого файла поставщиков. Условия таковы. Всех поставщиков нужно заводить заново, обновление записей не нужно.
http://axapta.mazzy.ru/lib/import/
__________________
полезное на axForum, github, vk, coub.
Старый 25.12.2007, 10:34   #20  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от fialka Посмотреть сообщение
так кабы я заполняла этот документ... всё же пользователи... то недоглядят, то переглядят.. а ты майся, как поставить дополнительную проверку, чтобы нормально закачивались данные....(
в экселе добавьте колонку.
в ней напишите формулу =right("0000000"&[адрес_ячейки_с_усеченным_кодом];7)
размножте для всех строк

импортируйте эту колонку, а не колонку пользователей.
__________________
полезное на axForum, github, vk, coub.
Теги
импорт, как правильно, справочник

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: Managing Your Supply Chain Using Microsoft Dynamics AX 2009 - Book Review Blog bot DAX Blogs 0 31.03.2009 23:06
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Arijit Basu: AX 2009 - Quick Overview Blog bot DAX Blogs 4 19.05.2008 14:47
Arijit Basu: Reporting & BI in AX: An Overview [Level 100] Blog bot DAX Blogs 0 07.01.2008 16:01
Inside Dynamics AX 4.0: Usage Scenarios Blog bot DAX Blogs 0 04.10.2007 05:15

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

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

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