Раздел: [[СредстваРасширенияСреды]] ---- == [[~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