Dynamics NAV + Office Excel = Платформа Microsoft

Почитывая по утрам свежие маркетинговые материалы, неоднократно встречал упоминание про некую «Платформу Microsoft». С точки зрения автора данных листовок – это нечто очень крутое и напрочь отсутствует у других вендоров.
Охотно верю, что «Платформа Microsoft» может продаваться только Microsoft. А в чем фишка неподготовленному покупателю уловить трудно.
Сегодня я планирую несколько необычный выпуск. Он будет посвящен использованию Microsoft Excel. Да-да, именно Microsoft Excel на мой взгляд довольно точно демонстрирует понятие «Платформа Microsoft».
Конечно, можно было бы рассказать про Microsoft SQL Server с его возможностями анализа и отчетности. А оттуда перейти к IIS и SharePoint, на которых эту отчетность можно публиковать. Кстати, к SharePoint можно перейти непосредственно из Dynamics NAV (слышали про Employee Portal?), а в самом SharePoint есть Excel Services.
Но нет, я удержусь и расскажу насколько Microsoft Excel может быть полезен обычному пользователю Dynamics NAV.
Начнем с простого – с кнопочки “Отправить в Microsoft Office Excel”, уютно расположившейся на панели инструментов.

Export в Excel из Dynamics NAV

Кроме этой кнопочки, можно пользоваться меню Файл -> Отправить -> Из формы в Microsoft Excel или комбинацией клавиш Ctrl+E.
Все это будет работать, если запущена какая-либо форма (неважно карточка, список, документ или Навигатор). Система запустит Microsoft Excel и перенесет в него видимые поля/записи.
Детали про данную возможность появившуюся еще в версии Dynamics NAV 5.0 можно почитать в книге «Руководство пользователя Dynamics NAV 5.0».
Позволю проинформировать читателя о поддержке данной функции также в ролеоринтированном клиенте.

RTC и выгрузка в Excel

Обратите внимание, что в ролеориентированном клиенте вместо меню Файл используется меню Действия -> Отправить -> Microsoft Excel. Горячие клавиши не изменились.

Особенности функции Отправить в Excel – ограниченное количество записей (обычно 5000).

  1. Чтобы победить в классическом клиенте нужно выбрать меню Инструменты -> Настройка и изменить значение параметра Макс. кол-во отправляемых. XML-записей.
  2.  Чтобы победить в ролеориентированном клиенте нужно использовать билд 32146, а в файле ClientUsersSettings.config добавить ключ . Детали см. в https://mbs2.microsoft.com/Knowledgebase/KBDisplay.aspx?scid=kb$EN-US$2492490

И для читателей старой закалки – копирование через буфер обмена (например с помощью клавиш Ctrl+C и Ctrl+V ) по-прежнему работает для списков. К сожалению, только в классическом клиенте.
Что надо знать про копирование через буфер.
1. Кодировка.

Проблемы с кодировкой при копировании из Dynamics NAV в Excel

Те символы, которые были в Dynamics NAV на русском, при вставке в Microsoft Excel оказались написаны кракозябрами.
Эта проблема решается довольно легко, нужно перед копированием изменить язык ввода на Русский.

Выбор языка ввода

2. Ведущие нули.

Пропали ведущие нули при вставке в Excel

Если использовать копирование через буфер обмена (кнопки выделены серым), то можно легко лишиться ведущих нулей.
Проблема в излишнем интеллекте Microsoft Excel, который преобразовывает текст в число.
Победить просто - достаточно указать, что для данного столбца используется текстовый формат. Только делать это надо ДО вставки данных, а не после.

Устанавливаем принудительно текстовый формат

Теперь вставка данных будет выглядеть так:

Корректно вставленные данные - нули спасены

Как видим на рисунке – данные вставились корректно – нули на месте.
Однако если посмотреть внимательнее, то теперь кроме ведущего нуля в данных ячейках появились зеленые уголки, информирующие пользователя об ошибке (с точки зрения интеллекта Microsoft Excel). Если выделить любую ячейку с зеленым уголком, то появляется иконка с символом вопроса. Если нажать на данную иконку, то система сообщит о проблеме и предложит варианты решения. В данном случае проблема звучит как: «Число сохранено как текст», а решением может быть «Преобразовать в число».
В нашем случае можем смело это игнорировать – потому как в результате преобразования будут отрезаны ведущие нули, а мы добивались обратного.

Лирическое отступление «Принципы нумерации».
Чтобы обеспечить правильную сортировку чисел в полях типа code или text, независимо от варианта используемого сервера, следует использовать следующие принципы:

  • Всегда использовать серии номеров фиксированной длины, например, 100-399.
  • Никогда не использовать в полях типа code или text такие серии номеров как 1-999.
  • Никогда не использовать в полях типа code или text такие серии номеров как 001-999.

Возможные проблемы:
Если вы не будете следовать принципам нумерации, то возможно возникновение проблем при наложении фильтров в Dynamics NAV.
Примеры:

  • Если не использовать серию номеров фиксированной длины, то при наложении фильтра 10..20, результатом может стать 10,100……20.
  • Если не следовать принципам нумерации, то при наложении фильтра 2..10, не будет выбрано ни одной записи, т.к. 2 идет после 10.
  • Если вы следуете принципам нумерации и используете серии номеров из трех разрядов и установите фильтр 10..20, результатом будет 100,101,102……199.

Рекомендации по использованию серии номеров фиксированной длины:

  • Использовать числовую серию номеров, которая начинается не с нуля, например, 100-399 (300 элементов). Если серия номеров окажется слишком короткой, то можно начать новую, например 40000 – 69999 (30000 элементов). Пользователи довольно быстро привыкают к вводу номеров имеющих фиксированную длину.
    1001
    1002
    1003

    9999
  • Использовать серию номеров, содержащую буквы в качестве префикса, например, A001-A999.
    A001
    A002
    A003

    A999
    Если номера закончатся, можно создать новую серию номеров с другим префиксом. Важно: префикс в новой серии должен быть «больше» чем в старой. Т.е. если старая серия начиналась с буквы I, то следующую серию лучше делать с буквы K. В противном случае (например, если решено использовать букву F, новые записи окажутся выше/раньше старых, что не удобно).

3. Кавычки.
Начнем с интриги – в чем различие в двух выборках?

Два набора данных

Подсказка – посчитайте количество записей (для больших таблиц я бы пользовался меню Файл -> База данных -> Информация, кнопка Таблицы)

База данных - Информация - Таблицы

Данный очень мерзкий эффект происходит, если в поле таблицы есть открывающая двойная кавычка, но нет закрывающей.
Обычно такое происходит при миграции данных из других систем. В старой системе поле было 200 символов, а в Dynamics NAV, как известно меньше. Чтобы решить такую проблему – часто принимают волевое решение – резать, что не влазит (про такую функцию расскажу чуть позже). Импорт проходит корректно, все данные есть в базе. Но чтобы в этом убедиться – консультанты пытаются скопировать загруженные данные из Dynamics NAV снова в Excel, и сравнить ее с файлом, который предоставил заказчик.
Неоднократно видел седых молодых людей, которые копировали и импортировали, импортировали и копировали, не понимая, что происходит и почему данные не сходятся.
Я побеждаю проблему через правку данных в Dynamics NAV. Обычно делаю это через Object Designer (меню Инструменты). Если мне повезло и кавычка не в первичном ключе, то помогает функция Заменить (меню Правка -> Заменить или комбинация клавиш Ctrl+H).
Заменить данные в базе

Если же кавычка в первичном ключе, тогда фильтрация и нудная процедура переименования. Можно вручную, можно кодом.

Итак, я рассказал про копирование данных из форм. А как же отчеты?

С отчетами ситуация спорная. Для тех, кто уже перешел на ролеориентированный клиент - все легко и приятно - есть специальная кнопка.

Сохранить отчет в Excel

С классическими отчетами все несколько сложнее. Такой кнопки нет. Зато есть меню Файл - Сохранить в формате HTML.

Сохранить как HTML

Не совсем то, что хотелось, но тоже неплохо, учитывая тот факт, что HTML очень неплохо открывается с помощью Microsoft Excel. Правда этот HTML имеет ряд недостатков, которые можно победить.

1. Кодировка. Если вы открыли файл, а кодировка там не та. Не нужно отчаиваться. Нужно изменить кодировку для веб документов в настройках Microsoft Excel.

Для этого открываем Файл - Параметры, Выбираем раздел Дополнительно, находим раздел Общее и нажимаем там кнопку Параметры Веб-документа. В открывшемся окне идем на закладку Кодировка и ставим кодировку Кириллица (Windows)

Кодировка для веб-документов

Вторая проблема - разделитель разрядов. По каким-то причинам, там стоит не то, что понимает Excel. Поэтому суммировать и выполнять другие арифметические действия над такими ячейкам он отказывается. Я побеждаю эту проблему так:

  1. Перехожу в ячейку, где есть число с “пробелом”
  2. Щелкаю по ячейке, чтобы перейти в режим редактирования
  3. Выделяю этот “пробел”
  4. Нажимаю Ctrl + C, чтобы скопировать его в буфер обмена
  5. Нажимаю Ctrl + H, чтобы открыть окно Найти и Заменить
  6. Вставляю этот “пробел” в поле Найти (с помощью Ctrl + V, потому как кнопки на панели инструментов ведут себя не так как нужно)
  7. Заменяю все вхождения этого “пробела”

Обычно сложности с такими отчетами на этом не заканчиваются - есть проблемы с форматированием, но они решабельны. Правило такое - чем проще макет отчета, тем проще он форматируется в Excel.

Итак, несколько простых способов перенести данные из Dynamics NAV в Excel я рассказал. Оставайтесь на связи.

Метки:



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

  1. Петр Котельников пишет:

    Проблема разделителя разрядов при копировании из NAV в Excel
    решается указанием пробела, в явном виде, в качестве разделителя разрядов:
    Пуск->Панель управления->Язык и региональные стандарты->Форматы->Дополнительные параметры->Разделитель групп разрядов
    Необходимо удалить что там находиться и один раз нажать Пробел.
    Закрыть окна нажатием ОК.
    Эту операцию необходимо сделать для каждого пользователя на данном компьютере.

  2. Петр Котельников пишет:

    Проблема с кодировкой при копировании из NAV в EXCEL.
    В Excel можно выбрать “Специальная вставка” –> “Текст”

  3. apanko пишет:

    Надо бы прояснить один момент:
    Существует документ “Демонстрационный сценарий: Веб Cервисы NAV 2009. Интеграция с InfoPath и Excel”.
    Вдохновившись прочтением, граждане пытаются воспроизвести описанные действия на своих локальных инсталляциях.
    И натыкаются на проблему, потому как документ говорит им “Выберите опцию редактирования в Excel – Редактировать в Excel.”, а такой опции нет.
    Проблема в том, что данная функциональность не является стандартной и не входит в поставку. Данная функция доступна только на виртуальной демо машине.
    Чтобы добавить такую функцию в свою инсталляцию рекомендую обратиться к блогу разработчика, где он пошагам описывает нужные действия:
    * http://blogs.msdn.com/b/freddyk/archive/2008/11/07/edit-in-excel-part-1-out-of-4.aspx
    * http://blogs.msdn.com/b/freddyk/archive/2008/11/07/edit-in-excel-part-2-out-of-4.aspx
    * http://blogs.msdn.com/b/freddyk/archive/2008/11/08/edit-in-excel-part-3-out-of-4.aspx
    * http://blogs.msdn.com/b/freddyk/archive/2008/11/09/edit-in-excel-part-4-out-of-4.aspx

  4. Зоя пишет:

    Добрый день! Столкнулись с проблемой отображения закрывающей даты при нажатии кнопки “Отправить в Microsoft Office Excel”. В Эксель закрывающая дата отображается как обычная. Можно ли это побороть?

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