08.11.2014, 20:59 | #1 |
Участник
|
Выбор столбцов при импорте\экспорте Excel add-in
Добрый вечер, уважаемые коллеги.
Вопрос состоит в следующем: Имею dax 2012 r3, excel 2013 с установленным Excel add-in for Dynamics Ax. Какую группу полей этот аддон берёт, когда добавляешь таблицу (Add Data - Add Tables) ? Хочу в этот список включить некоторые поля дополнительно, которые есть в узле Fields, но их нет в списке полей в экселе. Все Fields Groups пересмотрел -ничего не подходит. Гуглил , никаких мануалов по данной теме не нашёл. Не понятно вообще, по какому принципу он берёт поля для отображения Буду признателен, если Вы подскажете, куда смотреть нужно. |
|
|
За это сообщение автора поблагодарили: Aquarius (1). |
09.11.2014, 09:59 | #2 |
Administrator
|
Инкрементный / полный CIL давно создавали? Нонче это надо делать так же часто, как компиляцию кода
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: Aquarius (1). |
09.11.2014, 23:59 | #4 |
Участник
|
Цитата:
S.Kuskov, спасибо за ссылку, судя по всему, там ответ. Вот только где этот путь искать-то ?) |
|
10.11.2014, 00:31 | #5 |
Administrator
|
Честно скажу, на новой таблице я и так и сяк пробовал - пришел к выводу - что запуск полного CIL вполне себя оправдывает, если Вы в Excel добавляете именно таблицу.
В Excel можно выбрать таблицу или источник данных. Если источник данных Query из АОТа или пользовательский запрос (по сути - тот же Query) - то такой источник предоставляет данные только на чтение. Однако, если источник - это веб служба (листочек с карандашиком в Excel), то данный источник может данные писать в AX (само собой - должны быть определены соответствующие методы изменения данных - create, update и т.д.). В этом случае именно эту веб-службу Вы и должны обновить из АХ (чтобы в Ax-классах создались соответствующие parm-методы, плюс был бы обновлен соответствующий Axd-класс).
__________________
Возможно сделать все. Вопрос времени |
|
10.11.2014, 13:12 | #6 |
Участник
|
Цитата:
Сообщение от sukhanchik
Честно скажу, на новой таблице я и так и сяк пробовал - пришел к выводу - что запуск полного CIL вполне себя оправдывает, если Вы в Excel добавляете именно таблицу.
В Excel можно выбрать таблицу или источник данных. Если источник данных Query из АОТа или пользовательский запрос (по сути - тот же Query) - то такой источник предоставляет данные только на чтение. Однако, если источник - это веб служба (листочек с карандашиком в Excel), то данный источник может данные писать в AX (само собой - должны быть определены соответствующие методы изменения данных - create, update и т.д.). В этом случае именно эту веб-службу Вы и должны обновить из АХ (чтобы в Ax-классах создались соответствующие parm-методы, плюс был бы обновлен соответствующий Axd-класс). Делал полный сил несколько раз - поле так и не появилось, собственно, поэтому и спрашиваю. На другой таблице такое же поле отображается, проверил их свойства - иднетичны. Может всё-таки нужно пнуть этот AIF? Это из-под Аксы делается? Последний раз редактировалось user_ax; 10.11.2014 в 13:17. |
|
10.11.2014, 13:31 | #7 |
Administrator
|
__________________
Возможно сделать все. Вопрос времени |
|
10.11.2014, 14:13 | #8 |
Участник
|
|
|
10.11.2014, 14:22 | #9 |
Administrator
|
Я про это и писал, что если у Вас источник данных веб-служба, то Вы заведомо знаете, какую службу выбирать. По приведенной выше ссылке также отсылка идет в эту форму с указанием, что надо выбрать соответствующую службу.
Именно поэтому логичным достаточным действием будет генерация полного CIL-а. Ну и вроде как у меня на новой таблице так и получилось
__________________
Возможно сделать все. Вопрос времени |
|
10.11.2014, 14:36 | #10 |
Участник
|
Цитата:
Сообщение от sukhanchik
Я про это и писал, что если у Вас источник данных веб-служба, то Вы заведомо знаете, какую службу выбирать. По приведенной выше ссылке также отсылка идет в эту форму с указанием, что надо выбрать соответствующую службу.
Именно поэтому логичным достаточным действием будет генерация полного CIL-а. Ну и вроде как у меня на новой таблице так и получилось + как я понимаю, для новых таблиц нужно и такие классы создавать, только вот такой класс нужен ли? Ещё интересная проблема в том, что на 2-х таблицах добавлен релейшен по новому полю на таблицу ProjTable, и на одной таблице в списке полей есть несколько полей вида Project.ProjectId ... а на другой нет. Собственно, поэтому и пытаюсь решить эту проблему. |
|
10.11.2014, 15:01 | #11 |
Участник
|
Ещё бы хотелось понять , почему релейшн на таблице Items(строки) видел в экселе, а на таблице Table (шапка) - нет.
Хотел выбрать любой из классов НЕстрандартных, мне выдаёт ворнинг: Цитата:
Class SubmittalImportExcel is not a valid document service class.
Последний раз редактировалось user_ax; 10.11.2014 в 15:04. |
|
11.11.2014, 07:42 | #12 |
Участник
|
На просторах интернета пишут http://daxdude.blogspot.ru/2010/12/u...-new-data.html
Цитата:
The class name will end with '…Service'. Any other class will give an error saying that the class is not a valid service class
P.S.: AIF Class Naming Conventions Последний раз редактировалось S.Kuskov; 11.11.2014 в 07:47. |
|
11.11.2014, 12:52 | #13 |
Участник
|
Цитата:
Сообщение от S.Kuskov
На просторах интернета пишут http://daxdude.blogspot.ru/2010/12/u...-new-data.html
P.S.: AIF Class Naming Conventions Интересная ссылка на блог, благодарю! Попробую по аналогии с SalesSalesOrderService классом создать для своей таблицы и его выбрать в кач-ве источника Update Document Service. Посмотрим, получиться или нет. |
|
11.11.2014, 16:35 | #14 |
Administrator
|
Цитата:
В системе существует 3 типа служб (тренинг по AIF): Document Services - это классы-наследники AifDocumentService. Это службы, обеспечивающие экспорт / импорт данных по целому документу (заказ на продажу, заказ на возврат, заказ на покупку и т.д.). Эти классы используют Axd-классы (одна служба - один Axd-Класс) для хранения логики экспорта / импорта данных. Custom Services - это классы, которые мы сами можем опубликовать, как службы в узле Services в АОТ. Document Services - это по сути частный случай Custom Services, только с определенными правилами (т.е. определенными методами, принципами программирования и т.д.). Как создать такие классы (Custom Services) я писал здесь: AX 2012 Создание сервиса по шагам System Services - это служба с названием MetaDataService, при помощи которой можно получить данные об АОТ (т.е. это аналог Dict*-классов в Х++). В форме обновления нигде нет упоминания о том, что названия классов должны заканчиваться на "Service"
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 11.11.2014 в 17:42. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
11.11.2014, 16:52 | #15 |
Участник
|
sukhanchik, спасибо за подробный ответ!!
А как тогда объяснить такое поведение: Есть 2 таблицы : родитель(табл1), ребёнок(табл2). Таблица ребёнок связана с таблицей родителем по refrecid(так исторически сложилось). В табл1 есть связь с ProjTable по table1.projtableRef == ProjTable.recid И в табл2 есть такая же связь. Если добавить в Эксель табл2 - видим там следующую группу полей: Вот я и хочу добавить такую же группу в табл1, это всё что мне нужно Свойства таблиц почти идентичны..Собственно, поэтому и мучаюсь. |
|
11.11.2014, 17:41 | #16 |
Administrator
|
Итак, давайте "сверим часы". А точнее наши понимания чего не работает.
Я создаю таблицу MyTableTable с полями projtableRef, которое связано с ProjTable.RecId и каким-нибудь полем Name. Я создаю таблицу MyTableTrans с полями refRecId, которое связано с MyTableTable.RecId и каким-нибудь полем Name. Что теперь я должен сделать в Excel ? Добавить туда просто вторую табличку? А какие релейшны будут в АОТе? Даст ли мне система добавить "строки без шапок"? Это тоже зависит от релейшна. Я хочу смоделировать Вашу ситуацию и хочу понять, что мне для этого нужно сделать.
__________________
Возможно сделать все. Вопрос времени |
|
12.11.2014, 00:13 | #17 |
Участник
|
Цитата:
Добавить MyTableTable в эксель через Add Tables и чтобы в списке полей было поле Projtableref хотя бы или же чтобы было так, как на скриншоте снизу, тобиж, как я понимаю - поля беруться по релейшену. Добавлять вторую табличку не нужно, данные берутся только из MyTableTable. Строки без шапки не даст добавить, а шапку без строк - даст. |
|
12.11.2014, 01:13 | #18 |
Administrator
|
Ок, начинаю по порядку.
1. Создал проект с табличками. EDT не создавал, все откомпилировал и создал инкрементный CIL 2. Открыл Excel и добавил табличку в Excel 3. Открылся список полей 4. Закрыл список полей, через кнопку AddRow добавил строки. Поле RecId заполнил хоть чем-то - главное, чтобы были уникальные значения (АХ все равно их перетрет) 5. Нажал кнопку Publish All. 6. Пошел в АХ, убедился что действительно Excel не врет 7. Пошел снова в проект, добавил поле Description. CIL не создавал 8. Открыл Excel. Как и следовало ожидать - Excel о новом поле не узнал 9. Сделал инкрементный CIL. Открыл снова Excel (Excel нужно переоткрывать, иначе он ругается, если чего-то там изменилось, а их светлость не переоткрыли). Ожидаемо увидел новое поле 10. В Excel на лист добавил новое поле, нажал Refresh, чтобы получить данные. Через AddRow добавил новую запись и заодно заполнил новое поле. Нажал Publish All Оппа.... Бага! (Эх... не заснял на скриншот). Отработал Update по существующим записям по новому полю, отработал Insert по новой записи, но в новой записи поле Description не заполнилось. Ну ладно... мы ж упрямые. 11. Заполнил у новой записи поле Description в Excel, нажал Publish All. Все отработало. 12. Пошел в АХ, убедился, что Excel не врет А вот когда я удалил табличку из АОТ, то инкрементный CIL мне уже не помог - Excel ее не вычеркнул из своего списка таблиц. Пришлось создавать полный CIL, только тогда табличка "вычеркнулась". Ну и XPO прилагаю SharedProject_MyProjectTable.xpo AX 2012 R3 (виртуалка от МС) Ядро и приложение 6.3.164.0
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 12.11.2014 в 01:19. |
|
|
За это сообщение автора поблагодарили: DmitryK (1). |
12.11.2014, 13:28 | #19 |
Участник
|
sukhanchik, спасибо Вам большое за проделанный эксперимент.
Мои таблицы уже созданы, пересоздать их я не могу , увы. А по поводу релейшенов интересно.. У вас в mytableTrans нет релейшена на ProjTable, а он должен быть(по ТЗ). У меня и на tablttable и на tabletrans есть релейшен к ProjTable. Может быть из-за этого? Если убрать релейшн в строках, то эта группа полей появится в шапке.. хм. После просмотра Ваших скриншотов подумал, что у нас энва глючная, однако версии совпадают с Вашей : Ядро и приложение 6.3.164.0 Попробую сделать импорт Вашего проекта и провести полный сил. Ещё я грешил и грешу на свойства таблиц, их индексы. Влияют ли они? У Вас ведь нет индексов, а какие свойства таблиц ?? Последний раз редактировалось user_ax; 12.11.2014 в 13:50. |
|
12.11.2014, 14:23 | #20 |
Administrator
|
Цитата:
Сообщение от user_ax
sukhanchik, спасибо Вам большое за проделанный эксперимент.
Мои таблицы уже созданы, пересоздать их я не могу , увы. А по поводу релейшенов интересно.. У вас в mytableTrans нет релейшена на ProjTable, а он должен быть(по ТЗ). У меня и на tablttable и на tabletrans есть релейшен к ProjTable. Может быть из-за этого? Если убрать релейшн в строках, то эта группа полей появится в шапке.. хм. После просмотра Ваших скриншотов подумал, что у нас энва глючная, однако версии совпадают с Вашей : Ядро и приложение 6.3.164.0 Попробую сделать импорт Вашего проекта и провести полный сил. Ещё я грешил и грешу на свойства таблиц, их индексы. Влияют ли они? У Вас ведь нет индексов, а какие свойства таблиц ??
__________________
Возможно сделать все. Вопрос времени |
|
Теги |
addin, excel, fields, поля |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|