Раздел: [[СредстваРасширенияСреды]]
----
== [[~AxCopyTableFieldListToClipboard]] ==
Инструмент для разработчиков DynamicsAX 3.0
Позволяет по выбранной таблице сформировать код для создания/изменения записи и скопировать его в буфер обмена для дальнейшей вставки в редактор кода.
Домашняя страница - [[http://www.axaptapedia.com/AxCopyTableFieldListToClipboard]]
* Version 1.1. [[http://www.axaptapedia.com/images/8/81/AxCopyTableFieldListToClipboard.zip]]
{{TOC}}
===Скриншот===
[[http://www.axaptapedia.com/images/2/23/AxCopyTableFieldListToClipboardDlg.PNG | ]]
===Описание возможностей инструмента===
====Version 1.1 ====
* Добавить объявление переменной перед кодом заполнения полей. После объявления будет добавлена точка с запятой. Этот код нужно будет перенести к остальным объявлениям, если изменения вставляются всередину метода.
* Добавить вызов метода clear() перед кодом заполнения полей. Этот метод необходим, к примеру, при циклической обработке набора записей.
* Возможно указать название переменной, отличное от названия таблицы. О недопустимые значениях имени переменной информация выводится значком справа от поля для ввода.
* Возможно выбрать поля, которые необходимо копировать в буфер. На данный момент есть 2 пред. настройки - Все поля, Ни одного поля. (очистка списка, то есть).
* Вставить вызов метода insert() или update() после строк присвоения значений полям таблицы.
* В верхней части диалога отображается Preview того, как на самом деле будет выглядеть код в редакторе.
===Установка===
Просто импортируйте проект (ссылка выше).
====Интеграция в Axapta====
В систему инструмент можно встроить несколькими способами:
* Пункт меню AxCopyTableFieldListToClipboard добавить в меню [[SysContextMenu | ]]. Текст "Copy Table FieldList" автоматически будет добавлен в контекстное меню всех [[АОТ | ]] объектов. Для того, чтобы ограничить список допустимых объектов только таблицами, добавьте нижеуказанный код в метод verifyItem класса [[SysContextMenu | ]]. (после case MenuItemType::Action:)
//--> AxCopyTableFieldListToClipboard_ikash date=2007-02-11 txt='Show in menu only for tables'
case menuItemActionStr(AxCopyTableFieldListToClipboard):
if (this.selectionCount() != 1 || firstNode.AOTIsOld())
return 0;
if (!docNode && firstNode.sysNodeType() == 204)
return 1;
return 0;
//<-- AxCopyTableFieldListToClipboard_ikash
* Добавить пункт меню в меню [[GlobalToolsMenu | ]] или [[DevelopmentTools | ]]. Далее выбираем таблицу в [[АОТ | ]] и выбираем в меню соответствующий пункт.
* Добавляем картинку (одну из двух) из архива в папку для плагинов к [[Tabax | ]]. Автоматически появится возможность запуска из панели инструментов [[Tabax | ]]. (прежде необходимо выбрать таблицу в [[АОТ | ]])
* Можно выбрать название таблицы непосредственно в редакторе и запустить скрипт из [[Класс/EditorScripts]]. Для того, чтобы это стало возможным, добавьте новый метод в [[Класс\EditorScripts | ]] и скопируйте в него нижеприведенный код.
void AOT_Copy_TableFieldList(Editor e)
{
Args args = new Args();
;
args.parmObject(e);
new MenuFunction(menuItemActionStr(AxCopyTableFieldListToClipboard), MenuItemType::Action).run(args);
}
* При невыполнении ни одного из перечисленных условий откроется список таблиц, из которого вы сможете выбрать ту, обработку которой необходимо провести.
===Планируемые улучшения (ToDo)===
* Добавить дополнительные опции быстрого выбора списка полей (AutoReport, AutoLookup, Только обязательные поля, т.д.)
* Добавить полную поддержку редактора - при выборе переменной в коде отыскивать ее определение (как это делает [[AxGoToDeclaration | ]]) и производить уже ее обработку.
* Добавить возможность вставки строки кода %%(xpp)if(tableVariable.validateWrite())%%
===См. Также===
* [[http://casperkamal.spaces.live.com/Blog/cns!9138ED475277CD63!221.entry]]
===Thanks===
* [[:AndyD]] - [[ListView | ]] setColumnWidth и обработка с использованием [[winApi | ]]
* /aidsua - подсказал по функции match