NAV4U (онлайн-журнал) » Blog Archive » Пример использования Navision Developer Toolkit

Пример использования Navision Developer Toolkit

Для профессиональных разработчиков вендор поставляет специальный инструментарий – Navision Developer Toolkit. Обычным разработчикам он не доступен. Точнее скачать можно, но для него потребуется лицензия со специальными гранулами, а она есть не у каждого.
В комплекте к NDT идет документация. На английском. Ее можно использовать для ознакомления.

В данной статье я поделюсь опытом использования данного инструментария для выполнения обновлений.

Вы наверное в курсе, что после того как вышел Microsoft Dynamics NAV 5.0 SP1 было сделано два обновления: JobFix для W1 и FP1 для Microsoft Dynamics NAV 5.0 SP1 RU.

Одновременно их использовать у меня не получилось. Зато появился повод испытать NDT 2.0 SP3, который ранее мной использовался только для поиска ссылок на функции и объекты.

В The Jobs Update for Microsoft Dynamics NAV 5.0 Service Pack 1 включены следующие объекты:
1. Table 39 Purchase Line
2. Table 169 Job Ledger Entry
3. Table 210 Job Journal Line
4. Table 5902 Service Line
5. Form 54 Purchase Order Subform
6. Form 5905 Service Lines
7. Codeunit 90 Purch.-Post
8. Codeunit 1001 Job Post-Line
9. Codeunit 1004 Job Transfer Line
10. Codeunit 5987 Serv-Posting Journals Mgt.

Их и будем объединять с имеющимися объектами. Для этого надо выполнить следующие шаги.

1. Открыть базу данных Microsoft Dynamics NAV 5.0 SP1 RU FP1. В Object Designer выбрать указанные десять объектов.

Object Designer

Затем щелкнуть Сервис, Языковой Модуль, Экспорт. И сохранить языковой модуль для Русского языка.

Далее нужно щелкнуть Файл, Экспорт и сохранить объекты в текстовый файл RUOld.txt

2. Открыть базу данных Microsoft Dynamics NAV 5.0 SP1 W1.

В Object Designer выбрать указанные десять объектов.

Затем щелкнуть Сервис, Языковой Модуль, Импорт. И загрузить языковой модуль для Русского языка, сохраненный ранее.

Далее нужно щелкнуть Файл, Export и сохранить объекты в текстовый файл W1JobOld.txt

3. Теперь нужно загрузить в базу Microsoft Dynamics NAV 5.0 SP1 W1 новые объекты из The Jobs Update for Microsoft Dynamics NAV 5.0 Service Pack 1.

Для этого требуется щелкнуть Файл, Import и выбрать скаченный с PartnerSource fob-файл.

В окне импорта для всех объектов нужно установить Action – Replace.

Для обновленных объектов также нужно загрузить языковой модуль, а затем выгрузить их в текстовый файл W1JobNew.txt

Примечание. В таблице 39 достаточно много полей, а обновление коснулось единиц. При сравнении объектов, все поля будут подсвечены цветом, словно они отличаются, а дело лишь в недостающем переводе (свойство CaptionML). Мы загрузили языковой слой чтобы «Сосредоточится на Главном».

4. Открыть Navision Developer Toolkit. Щелкнуть Tools, Merge Setup. Заполнить поля как показано на рисунке:

Navision Developer Toolkit окно Merge Setup

Все четыре поля Version заполнить вручную (они ведь пока не загружены в базу).

Указать пути к текстовым файлам с объектами (выгружены на предыдущих этапах).

Щелкнуть кнопку ОК.

5. Будет выполнен импорт объектов, затем произведено их сравнение.

Система сообщила о количестве объединенных объектов, количестве возникших конфликтов, а также об элементах управления, перекрывающих друг друга.

 Navision Developer Toolkit результат выполнения Merge

6. В нашем случае, изменения касающиеся модуля работы и локальная функциональность практически не пересекались, поэтому обнаружено всего два конфликта.

В функциях кодеюнита 1001 и 1004 изменилось количество параметров.

Navision Developer Toolkit окно Compare

В результирующую версию JOB_RU_NEW были перенесены функции из версии JOB_NEW, что нас устраивает, т.к. это правильные функции. В противном случае, нам пришлось бы перетянуть требуемые функции мышью. Также окно Merge & Compare позволяет перетянуть мышью как весь объект, так и некоторые его части, например, локальные переменные.

Примечание: Здесь мы пойдем более длинным путем, но зато продемонстрируем возможные сложности, возникающие при работе с NDT и пути их решения.

7. Открыть базу данных Microsoft Dynamics NAV 5.0 SP1 RU FP1.

В NDT выбрать версию JOB_RU_NEW, затем щелкнуть File, Update, To Microsoft Dynamics NAV Client,
появится окно выбора клиента.

Нужно выбрать требуемый Microsoft Dynamics NAV Client и щелкнуть ОК.

В окне Update To Microsoft Dynamics NAV Client щелкнуть ОК.

Система сообщит, что Update не удался.

Ошибка выполнения Update

Однако NDT не предоставляет расширенную диагностику проблемы, поэтому мы пойдем другим путем.

8. В NDT щелкнуть File, Export, Microsoft Dynamics NAV Text File or Client.

В окне Export Worksheet выделить все строки и щелкнуть кнопку Export, To Microsoft Dynamics NAV Text File.

Сохранить объединенные объекты в текстовый файл RuJobNew.txt

Теперь перейдем в Microsoft Dynamics NAV 5.0 SP1 RU FP1, откроем Object Designer и импортируем объекты из текстового файла RuJobNew.txt.

Теперь сообщение об ошибке стало понятнее.

Ошибка: Ваша программная лизенция не разрешает…

9. NDT пытается создать новые поля в таблицах в диапазоне, которые под текущей лицензией недоступен. И ему это естественно не удается.

Но если поля нельзя создавать это не значит, что их нельзя редактировать. Тем более создать поля можно простым импортом объектов, уже содержащих такие поля.

Загрузим в базу Microsoft Dynamics NAV 5.0 SP1 RU FP1 новые объекты из The Jobs Update for Microsoft Dynamics NAV 5.0 Service Pack 1.

Для этого требуется щелкнуть Файл, Import и выбрать скаченный с PartnerSource fob-файл.

В окне импорта для таблиц нужно установить Action – Merge: Existing<-New, а для остальных объектов – Skip.

Файл, Import. Установить Action – Merge: Existing<-New

10. Попробуем импортировать объекты из текстового файла RuJobNew.txt еще раз. На этот раз должно получиться.

Обновить объекты кстати можно и из Navision Developer Toolkit (мы пытались проделать это на шаге 7).

После того как объекты были загружены в Microsoft Dynamics NAV Client их нужно компилировать. Для это объекты нужно выделить и нажать F11.

Если вдруг импорт не удался. А такое может быть, например если на этапе 6 конфиктующие функции были перенесены мышью.

Тогда Microsoft Dynamics NAV Client отобразит следующее сообщение об ошибке.

 Сообщение об ошибке

NDT не контролирует чтобы идентификаторы переменных были уникальны. На предыдущем рисунке показана ситуация, когда в Codeunit 1001 Job Post-Line в функции TestSalesLine есть две локальные переменные с идентификатором 1002, это переменные Txt и JT.

Устранить эту ситуацию можно двумя способами:
1. Отредактировать файл RuJobNew.txt
2. Сравнить идентификаторы проблемных переменных версий JOB_RU_NEW и JOB_NEW с помощью Merge & Compare и перетянуть мышью правильные переменные в версию JOB_RU_NEW.

11. Помним, что в таблицы 169 и 210 было добавлено новое поле Posted Service Shipment No., не помешает добавить ему перевод на русский - Учт. Сервисная Накладная Но. (это если в традициях NAV 4.0 RU, в традициях NAV 5.0 это поле должно называться № учт. расх. накл. на оказание сервиса).

12. И конечно не нужно забывать о перекрывающихся элементах управления.

Метки:



Комментариев: 4

  1. del_negrozzz пишет:

    по мне проще для объеденения двух версий объекта использовать Araxis Merge (или любой сравниватель текста, именно текста!)
    сливается в текст одна версия объекта, потов в другой файл - другая версия, загрузив выгруженные файлы в программу, можно видеть отличия в коде. буквально одним кликом мыши можно синхронизировать различающиеся куски кода.
    NDK я использую в основном для поиска чегото (where used…). Например хочу найти где в коде всех объектов используется какое нить поле таблицы.

  2. apanko пишет:

    NDT использую для тех же целей. Для поиска.

    Араксис мне тоже рекомендовали, но попробовать не довелось.

  3. Fordewind пишет:

    Если только для сравнивания, то думаю Araxis получше будет хотя бы в плане цены ;)

  4. Дмитрий пишет:

    NDT не использую уже давно, потому как работаю с множеством компаний и не только я один, т.е. обновлять его постоянно не целесообразно. Если необходимо найти связь переменной, то проще выгрузить все необходимые объекты в текст и поиском найти.
    Для слития объектов использоваться Araxis Merge наиболее удобно, потому как при переносе относишься с пониманием какой код ты переносишь и знаешь заранее что он повлечёт за собой.

Оставьте свой отзыв!