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”, уютно расположившейся на панели инструментов.
Кроме этой кнопочки, можно пользоваться меню Файл -> Отправить -> Из формы в Microsoft Excel или комбинацией клавиш Ctrl+E.
Все это будет работать, если запущена какая-либо форма (неважно карточка, список, документ или Навигатор). Система запустит Microsoft Excel и перенесет в него видимые поля/записи.
Детали про данную возможность появившуюся еще в версии Dynamics NAV 5.0 можно почитать в книге «Руководство пользователя Dynamics NAV 5.0».
Позволю проинформировать читателя о поддержке данной функции также в ролеоринтированном клиенте.
Обратите внимание, что в ролеориентированном клиенте вместо меню Файл используется меню Действия -> Отправить -> Microsoft Excel. Горячие клавиши не изменились.
Особенности функции Отправить в Excel – ограниченное количество записей (обычно 5000).
- Чтобы победить в классическом клиенте нужно выбрать меню Инструменты -> Настройка и изменить значение параметра Макс. кол-во отправляемых. XML-записей.
- Чтобы победить в ролеориентированном клиенте нужно использовать билд 32146, а в файле ClientUsersSettings.config добавить ключ
. Детали см. в https://mbs2.microsoft.com/Knowledgebase/KBDisplay.aspx?scid=kb$EN-US$2492490
И для читателей старой закалки – копирование через буфер обмена (например с помощью клавиш Ctrl+C и Ctrl+V ) по-прежнему работает для списков. К сожалению, только в классическом клиенте.
Что надо знать про копирование через буфер.
1. Кодировка.
Те символы, которые были в Dynamics NAV на русском, при вставке в Microsoft Excel оказались написаны кракозябрами.
Эта проблема решается довольно легко, нужно перед копированием изменить язык ввода на Русский.
2. Ведущие нули.
Если использовать копирование через буфер обмена (кнопки выделены серым), то можно легко лишиться ведущих нулей.
Проблема в излишнем интеллекте 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).

Если же кавычка в первичном ключе, тогда фильтрация и нудная процедура переименования. Можно вручную, можно кодом.
Итак, я рассказал про копирование данных из форм. А как же отчеты?
С отчетами ситуация спорная. Для тех, кто уже перешел на ролеориентированный клиент - все легко и приятно - есть специальная кнопка.
С классическими отчетами все несколько сложнее. Такой кнопки нет. Зато есть меню Файл - Сохранить в формате HTML.
Не совсем то, что хотелось, но тоже неплохо, учитывая тот факт, что HTML очень неплохо открывается с помощью Microsoft Excel. Правда этот HTML имеет ряд недостатков, которые можно победить.
1. Кодировка. Если вы открыли файл, а кодировка там не та. Не нужно отчаиваться. Нужно изменить кодировку для веб документов в настройках Microsoft Excel.
Для этого открываем Файл - Параметры, Выбираем раздел Дополнительно, находим раздел Общее и нажимаем там кнопку Параметры Веб-документа. В открывшемся окне идем на закладку Кодировка и ставим кодировку Кириллица (Windows)
Вторая проблема - разделитель разрядов. По каким-то причинам, там стоит не то, что понимает Excel. Поэтому суммировать и выполнять другие арифметические действия над такими ячейкам он отказывается. Я побеждаю эту проблему так:
- Перехожу в ячейку, где есть число с “пробелом”
- Щелкаю по ячейке, чтобы перейти в режим редактирования
- Выделяю этот “пробел”
- Нажимаю Ctrl + C, чтобы скопировать его в буфер обмена
- Нажимаю Ctrl + H, чтобы открыть окно Найти и Заменить
- Вставляю этот “пробел” в поле Найти (с помощью Ctrl + V, потому как кнопки на панели инструментов ведут себя не так как нужно)
- Заменяю все вхождения этого “пробела”
Обычно сложности с такими отчетами на этом не заканчиваются - есть проблемы с форматированием, но они решабельны. Правило такое - чем проще макет отчета, тем проще он форматируется в Excel.
Итак, несколько простых способов перенести данные из Dynamics NAV в Excel я рассказал. Оставайтесь на связи.
Метки: Андрей Панько












6 Декабрь 2011 в 14:32
Проблема разделителя разрядов при копировании из NAV в Excel
решается указанием пробела, в явном виде, в качестве разделителя разрядов:
Пуск->Панель управления->Язык и региональные стандарты->Форматы->Дополнительные параметры->Разделитель групп разрядов
Необходимо удалить что там находиться и один раз нажать Пробел.
Закрыть окна нажатием ОК.
Эту операцию необходимо сделать для каждого пользователя на данном компьютере.
6 Декабрь 2011 в 14:37
Проблема с кодировкой при копировании из NAV в EXCEL.
В Excel можно выбрать “Специальная вставка” –> “Текст”
22 Декабрь 2011 в 9:37
Надо бы прояснить один момент:
Существует документ “Демонстрационный сценарий: Веб 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