воскресенье, 23 сентября 2018 г.
AX2012: Работа с текстовыми файлами
TextIo
TextIo сохраняет текст в
кодировки Unicode.
Экспорт данных в текстовый файл с
помощью TextIo:
Чтение данных из текстового файла
с помощью TextIo:
TextBuffer
Помимо нативных средств для
работы с текстовыми файлами Dynamics AX предоставляет возможность вызывать
классы .NET для чтения/записи файлов, TextBuffer – один из таких классов.
Экспорт данных в текстовый файл с
помощью TextBuffer:
Чтение данных из текстового файла с помощью TextBuffer:
Happy DAXing!
понедельник, 17 сентября 2018 г.
AX2012: работа со складскими аналитиками
Попробуем разобраться с механизмом работы со складскими аналитиками в Dynamics AX2012.
В Dynamics AX доступны разные складские аналитики: сайт, склад, ячейка, паллет, партия, серийный номер и т.п. Эти характеристики применяются к номенклатурам.
Рассмотрим пример: у нас есть номенклатура с ItemId «ITEM001» для которой активны аналитики сайт, склад, ячейка, паллет, совершим складскую проводку на Сайт «S1», Склад «WHS01», Ячейку «LOC001», Паллет «PLT001». Для хранения проводки потребуется таблица с полями складских аналитик:
Попробуем все это упростить, создав новое поле ID, которое будет ссылаться на комбинацию этих значений. Например, «IDIM001» относится к Сайту «S1», Складу «WHS01», Ячейке «LOC001» и Паллету «PLT001». Кроме того, создадим отдельную таблицу для хранения значений всех этих 10 полей вместе с новым ID полем и добавим наше новое поле в таблицу проводок. Теперь все эти 100 записей мы можем сохранить лишь в одном ID поле.
Теперь больше не требуется хранить данные о 10 складских аналитиках в 100 записях, вместо этого нам нужно сохранить лишь одно поле, указывающее на определенную комбинацию этих складских аналитик. Пример таких таблиц можно увидеть ниже:
Такое поле ID в Dynamics AX называется InventDimId и таблица, в которой хранятся комбинации складских аналитик, а также это поле InventDimId называется InventDim:
Эта таблица играет крайне важную роль в Dynamics AX - каждая таблица, связанная со складскими аналитиками, как SalesLine, PurchLine, InventTrans - все имеют связь с InventDim.
Существуют уже готовые функции для создания и поиска InventDimId для различных комбинаций складских аналитик. Наиболее часто используется findOrCreate() для поиска складской аналитики - если InventDimId уже существует для заданной комбинации, тогда система вернет значение, если нет, то создаст новое значение и вернет его.
Если необходимо создать новые таблицы для хранения складских аналитик, то пользуйтесь уже готовым решением.
Happy DAXing!
Подсчет времени в X++
При выполнении некоторых времязатратных операций, например, чтение данных из Excel, выполнение запроса, выгрузка данных и т.п., бывает нужно знать длительность каждой операции – порой это помогает оптимизировать логику или запрос.
Для этой цели можно использовать функцию WinAPI::getTickCount():
WinAPI::getTickCount() возвращает значение в миллисекундах, данные необходимо приводить к необходимому виду – секунды, минуты.
Happy DAXing!
update_recordSet, insert_recordset и delete_from
update_recordSet, insert_recordset и delete_from
В Dynamics AX2012 уделено много внимания повышению производительности и система предоставляет инструменты для доступа (вставка, удаление, обновление) к базе данных с меньшими затратами (меньшим количеством обращений к БД), используя функционал SQL Server.
В AX 2012 есть несколько способов обновления записей в БД, один из них - последовательный перебор, используя while select. Но есть более эффективный способ - update_recordSet позволяет обновить совокупность записей за одно обращение к серверу.
Например, следующий запрос SQL:
можно в AX выполнить следующим образом:
update_recordSet позволяет использовать join:
Для вставки новых записей и удаления записей из таблиц без использования циклов используются функции delete_from:
и insert_recordset:
Happy DAXing!
Подписаться на:
Сообщения (Atom)