05.10.2006, 11:54 | #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 я протестировал ввод новой записи вручную, и ничего лишнего(какие-то действия, кроме заполнения таблицы) я не нашел. Может я ошибаюсь? Пожалуйста помогите мне с этим. |
|
05.10.2006, 12:05 | #2 |
Участник
|
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 |
Участник
|
kashperuk Что касается второго и третьего твоего ответа, так я не знаю как работать с настройками справочника, буду очень признателен, если дашь пример, применительный к моему случаю
|
|
05.10.2006, 12:25 | #4 |
Гость
|
А еще в Акс есть стандартные средства импорта...
|
|
05.10.2006, 12:28 | #5 |
Участник
|
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 |
Участник
|
Про обязательный поля все понятно, но про дополнительные проверки так и осталась смута. Нужно ли делать дополнительные проверки или все же можно обойтись только простым добавлением записи в таблицу?
|
|
05.10.2006, 12:39 | #7 |
Участник
|
У нас Ретейл
|
|
05.10.2006, 13:04 | #8 |
Участник
|
Не забудьте проинициализировать
PrintModuleType = Параметры чтоб потом долго не разбираться почему документы не печатаются |
|
|
За это сообщение автора поблагодарили: kashperuk (4). |
05.10.2006, 14:29 | #9 |
Участник
|
|
|
05.10.2006, 14:35 | #10 |
Axapta
|
X++: vend.PrintModuleType = ModuleVendPurchParameters::Parameters; Последний раз редактировалось oip; 05.10.2006 в 14:37. |
|
|
За это сообщение автора поблагодарили: demon46 (1). |
05.10.2006, 14:38 | #11 |
Участник
|
Кажется разобрался. Всем еще раз спасибо
|
|
06.10.2006, 12:36 | #12 |
Пенсионер
|
Если есть >1 адреса, юридический, фактический etc. то придется заполнять еще табличку Address
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
24.12.2007, 22:01 | #13 |
Участник
|
А можно поинтересоватся .... а есть ли стандартные средства. вот для такого примера....
закачиваю файл из Execel. там кода поставщиков. причём в файле код клиента 5004, а в аксапте есть код клиента 0005004. вот как проверить,есть ли у нас нужный клиент и "дорастить " код клиента до кода указанного в номерной серии? То есть импортнуть код 0005004? |
|
24.12.2007, 22:33 | #14 |
Участник
|
Есть метод, который по коду выдает номер с учетом маски номерной серии.
Вот пример: X++: box::info(NumberSeq::numInsertFormat(4005, "######_162")); |
|
24.12.2007, 22:50 | #15 |
Участник
|
|
|
24.12.2007, 23:40 | #16 |
Участник
|
Конечно. Для получения маски номерной серии восьпользуйся любым подходящим способом.
|
|
25.12.2007, 10:25 | #17 |
Участник
|
Цитата:
Сообщение от fialka
А можно поинтересоватся .... а есть ли стандартные средства. вот для такого примера....
закачиваю файл из Execel. там кода поставщиков. причём в файле код клиента 5004, а в аксапте есть код клиента 0005004. вот как проверить,есть ли у нас нужный клиент и "дорастить " код клиента до кода указанного в номерной серии? То есть импортнуть код 0005004? В ЕКСЕЛЕ(!!!) в колонке Код установите формат Текст, а не число. "Дорастите" непосредственное в Экселе. И не программируйте. В следующий раз установите формат ДО того, как данные будут попадать в Эксель. Вот и не будут нули пропадать. |
|
25.12.2007, 10:30 | #18 |
Участник
|
так кабы я заполняла этот документ... всё же пользователи... то недоглядят, то переглядят.. а ты майся, как поставить дополнительную проверку, чтобы нормально закачивались данные....(
|
|
25.12.2007, 10:31 | #19 |
Участник
|
|
|
25.12.2007, 10:34 | #20 |
Участник
|
Цитата:
в ней напишите формулу =right("0000000"&[адрес_ячейки_с_усеченным_кодом];7) размножте для всех строк импортируйте эту колонку, а не колонку пользователей. |
|
Теги |
импорт, как правильно, справочник |
|
|