Пример устранения ошибки RTC клиента NAV 2009 SP1 (RU) с использованием Visual Studio
Немного в свободном стиле. Извиняюсь сразу…
С получением нового 22 дюймового монитора отторжение, испытываемое ранее мной при работе с 17 дюймовым монитором на RTC клиенте, сошло на нет…
Решил ‘потыкать’ свежий русский релиз именно через RTC клиента.
Вчера смотрел новую русскую зарплату.
Почти сразу же наткнулся на странную вещь.
Report 17353 (Карточка сотрудника T-2) выдает ошибку, если пытаться получить эту Excel форму с RTC клиента.
Показывает ошибку:
“Сообщение для программистов C/AL. Не удалось вызвать член Range: Exception from HRESULT: 0x800A03EC.”
При этом другие формы (так же 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
https://msdn.microsoft.com/en-us/library/dd568715.aspx
В результате, сразу после запуска с RTC клиента проблемного отчета Visual Studio debugger вылетает на заполнении ячейки EducationInstitutionName1
Запускаю классического клиента, ищу report 17353 и нахожу где этот EducationInstitutionName… да есть такой.
Далее выгружаю шаблон и смотрю что это за проблемная ячейка.
Это оказывается диапазон ячеек в шаблоне обзывается по сложному: 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 клиенте все работает):
P.S.
Не забудьте в файле CustomSettings.config вернуть параметр "EnableDebugging" в false.
Comments
Anonymous
October 19, 2010
А что значит "сложно"?Именами вообще нельзя пользоваться или это просто какие-то ограничения на длину имени?А если обозвать EducationInstitution1 будет работать? А то как-то совсем неудобно..Да и может это FORMAT(RowNo) во всём виноват..Anonymous
October 19, 2010
Корень в чем и лимит не знаю. FORMAT(RowNo) думаю не причем. Даже если просто без этого формата передавать EducationInstitutionName1 система вылетает. А поменяешь вроде как на простой адрес ячейки и прокатывает. При чем в шаблоне то не меняешь ничего. Просто не именовано (EducationInstitutionName бла-бла-) “адресуешся” из кода а по простому A41 и прокатывает. Глубже не копал. Нашел обходной путь и забыл. Говорят в NAV 2009 R2 нет искомой проблемы. Но сам не проверял…Anonymous
October 20, 2010
Наводит на размышления что какой-то лимит всё-таки есть.В коде есть ещё EducationQualification-но короче на два символа и в примере не выводится туда ничего.Изменится шаблон-поменяется адрес ячейки-ищи потом где что было изменено,эх..