|
|
#1 |
|
Участник
|
Импорт справочника поставщиков в 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();
}Но вот сегодня консультант сказал, что возможна ситуация неверного заполнения, так как я заполняю только поля таблицы. В фортме VendTable я протестировал ввод новой записи вручную, и ничего лишнего(какие-то действия, кроме заполнения таблицы) я не нашел. Может я ошибаюсь? Пожалуйста помогите мне с этим. |
|
|
|
|
#2 |
|
Участник
|
1. Обязательно поставьте перед vend.initValue()
vend.clear(); потому как у вас сейчас из созданной записи могут перетираться значения. 2. Find(602) - это конечно, круто ![]() Может лучше метот numRefVendAccount таблицы VendParameters? 3. Язык, профиль разноски, группу поставщиков, страну и валюту тоже из настроект следует тащить. 4. Мы еще заполняем Currency - оно стоит как обязательное в таблице тоже. Поэтому странно, что у вас insert() проходит. А вообще, никаких других вещей, кроме создания строки таблицы VendTable, ИМХО, делать не нужно. Мы правда создаем еще запись в vendBankAccount. Но это уже наша специфика. Видимо, ваш консультант так предположил после импорта ном. справочника (там еще 2 таблицы нужно заполнять) |
|
|
|
| За это сообщение автора поблагодарили: Hans (1), demon46 (1). | |
|
|
#3 |
|
Участник
|
kashperuk Что касается второго и третьего твоего ответа, так я не знаю как работать с настройками справочника, буду очень признателен, если дашь пример, применительный к моему случаю
|
|
|
|
|
#4 |
|
Гость
|
А еще в Акс есть стандартные средства импорта...
|
|
|
|
|
#5 |
|
Участник
|
2.) numberSeq::newGetNum( VendParameters::numRefVendAccount() ).num();
3.) Делаеш таблицу `ImportParameters` = {currency,langid,vendgroupid, ... etc ... } При импорте один раз сделай запрос на эту таблицу и используй данные оттуда: Vendtable.currency = "RUR"; => Vendtable.currency = ImportParameters.currency; |
|
|
|
| За это сообщение автора поблагодарили: demon46 (1). | |
|
|
#6 |
|
Участник
|
Про обязательный поля все понятно, но про дополнительные проверки так и осталась смута. Нужно ли делать дополнительные проверки или все же можно обойтись только простым добавлением записи в таблицу?
|
|
|
|
|
#7 |
|
Участник
|
У нас Ретейл
|
|
|
|
|
#8 |
|
Участник
|
Не забудьте проинициализировать
PrintModuleType = Параметры чтоб потом долго не разбираться почему документы не печатаются |
|
|
|
| За это сообщение автора поблагодарили: kashperuk (4). | |
|
|
#9 |
|
Участник
|
|
|
|
|
|
#10 |
|
Axapta
|
X++: vend.PrintModuleType = ModuleVendPurchParameters::Parameters; Последний раз редактировалось oip; 05.10.2006 в 14:37. |
|
|
|
| За это сообщение автора поблагодарили: demon46 (1). | |
|
|
#11 |
|
Участник
|
Кажется разобрался. Всем еще раз спасибо
|
|
|
|
|
#12 |
|
Пенсионер
|
Если есть >1 адреса, юридический, фактический etc. то придется заполнять еще табличку Address
__________________
Законы природы еще никто не отменял!А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
|
|
|
#13 |
|
Участник
|
А можно поинтересоватся .... а есть ли стандартные средства. вот для такого примера....
закачиваю файл из Execel. там кода поставщиков. причём в файле код клиента 5004, а в аксапте есть код клиента 0005004. вот как проверить,есть ли у нас нужный клиент и "дорастить " код клиента до кода указанного в номерной серии? То есть импортнуть код 0005004? |
|
|
|
|
#14 |
|
Участник
|
Есть метод, который по коду выдает номер с учетом маски номерной серии.
Вот пример: X++: box::info(NumberSeq::numInsertFormat(4005, "######_162")); |
|
|
|
|
#15 |
|
Участник
|
|
|
|
|
|
#16 |
|
Участник
|
Конечно. Для получения маски номерной серии восьпользуйся любым подходящим способом.
|
|
|
|
|
#17 |
|
Участник
|
Цитата:
Сообщение от fialka
А можно поинтересоватся .... а есть ли стандартные средства. вот для такого примера....
закачиваю файл из Execel. там кода поставщиков. причём в файле код клиента 5004, а в аксапте есть код клиента 0005004. вот как проверить,есть ли у нас нужный клиент и "дорастить " код клиента до кода указанного в номерной серии? То есть импортнуть код 0005004? В ЕКСЕЛЕ(!!!) в колонке Код установите формат Текст, а не число. "Дорастите" непосредственное в Экселе. И не программируйте. В следующий раз установите формат ДО того, как данные будут попадать в Эксель. Вот и не будут нули пропадать. |
|
|
|
|
#18 |
|
Участник
|
так кабы я заполняла этот документ... всё же пользователи... то недоглядят, то переглядят.. а ты майся, как поставить дополнительную проверку, чтобы нормально закачивались данные....(
|
|
|
|
|
#19 |
|
Участник
|
|
|
|
|
|
#20 |
|
Участник
|
Цитата:
в ней напишите формулу =right("0000000"&[адрес_ячейки_с_усеченным_кодом];7) размножте для всех строк импортируйте эту колонку, а не колонку пользователей. |
|
|
| Теги |
| импорт, как правильно, справочник |
|
|
|