Пример устранения ошибки RTC клиента NAV 2009 SP1 (RU) с использованием Visual Studio

Пример устранения ошибки RTC клиента NAV 2009 SP1 (RU) с использованием Visual Studio

  • Comments 3
  • Likes


Немного в свободном стиле. Извиняюсь сразу…

С получением нового 22 дюймового монитора отторжение, испытываемое ранее мной при работе с 17 дюймовым монитором на RTC клиенте, сошло на нет…
Решил ‘потыкать’ свежий русский релиз именно через RTC клиента.

Вчера смотрел новую русскую зарплату.

Почти сразу же наткнулся на странную вещь.

Report 17353 (Карточка сотрудника T-2) выдает ошибку, если пытаться получить эту Excel форму с RTC клиента.
Показывает ошибку:
“Сообщение для программистов C/AL. Не удалось вызвать член Range: Exception from HRESULT: 0x800A03EC.”

NAV2009DebugExample01

При этом другие формы (так же Excel): Лицевой счет, Общий кадровый отчет проходят c RTC клиента без проблем.
Классический же клиент спокойно выдает T-2 карточку в Excel.

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

Сегодня с утра начинаю копать.

  • Компилирую объект – не помогает.
  • Рестартую сервис MicrosoftDynamicsNavServer – не помогает.
  • Тестирую на последнем (build 31671) опубликованном hotfix NAV 2009 SP1 – не помогает.
            (
              Ссылка для поиска платформен��ых hotfix, PartnerSource (доступен авторизованным партнерам):
              Overview of Released Platform Hotfixes for Microsoft Dynamics NAV 2009 SP1
              
    https://mbs.microsoft.com/partnersource/support/selfsupport/hottopics/NAV2009SP1PlatformHotfixOverview
             )
  • Ищу по тулам службы поддержки (старые сервисные запросы, зарегистрированные ошибки) – нет данных
  • Кратенько ищу поиском по Web-у (google,   :) bing) – не нахожу схожей ситуации ни в разрезе NAV/Excel, не в разрезе Excel.

Что за <…..>.

Надо дебагить RTC клиента.
Никогда этого не делал.

Обращаюсь в справку.
Оказывается все прописано просто в статье Walkthrough: Debugging an Action on a Page
http://msdn.microsoft.com/en-us/library/dd568715.aspx

В результате, сразу после запуска с RTC клиента проблемного отчета Visual Studio debugger вылетает на заполнении ячейки EducationInstitutionName1

NAV2009DebugExample03

NAV2009DebugExample04

Запускаю классического клиента, ищу report 17353 и нахожу где этот EducationInstitutionName… да есть такой.

NAV2009DebugExample05

Далее выгружаю шаблон и смотрю что это за проблемная ячейка.

NAV2009DebugExample06

NAV2009DebugExample07

 

 

Это оказывается диапазон ячеек в шаблоне обзывается по сложному: EducationInstitutionName1.

После некоторого количества попыток прихожу к выводу, что если адрес диапазона ячеек в C/AL коде обзывать по сложному, то RTC клиент их не цепляет.

А если просто сослаться на EducationInstitutionName1 как на A41 все Okay.

Вношу маленькое исправление в C/AL коде:

Report 17353 Employee Card T-2

FillEducationCells(RowNo : Integer;VAR EmployeeQualification : Record "Employee Qualification")
WITH EmployeeQualification DO BEGIN
  //ExcelMgt.FillCell('EducationInstitutionName' + FORMAT(RowNo),"Institution/Company"); // comment line
  ExcelMgt.FillCell('A41',"Institution/Company"); // new line

И вуаля (теперь и в RTC клиенте все работает):

NAV2009DebugExample08

P.S.
Не забудьте в файле CustomSettings.config вернуть параметр "EnableDebugging" в false.

Comments
  • А что значит "сложно"?Именами вообще нельзя пользоваться или это просто какие-то ограничения на длину имени?А если обозвать EducationInstitution1 будет работать?

    А то как-то совсем неудобно..Да и может это FORMAT(RowNo) во всём виноват..

  • Корень в чем и лимит не знаю. FORMAT(RowNo) думаю не причем. Даже если просто без этого формата передавать EducationInstitutionName1 система вылетает.

    А поменяешь вроде как на простой адрес ячейки и прокатывает. При чем в шаблоне то не меняешь ничего. Просто не именовано (EducationInstitutionName бла-бла-) “адресуешся” из кода а по простому A41 и прокатывает. Глубже не копал. Нашел обходной путь и забыл. Говорят в NAV 2009 R2 нет искомой проблемы. Но сам не проверял…

  • Наводит на размышления что какой-то лимит всё-таки есть.В коде есть ещё EducationQualification-но короче на два символа и в примере не выводится туда ничего.Изменится шаблон-поменяется адрес ячейки-ищи потом где что было изменено,эх..

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment