Немного в свободном стиле. Извиняюсь сразу…
С получением нового 22 дюймового монитора отторжение, испытываемое ранее мной при работе с 17 дюймовым монитором на RTC клиенте, сошло на нет… Решил ‘потыкать’ свежий русский релиз именно через RTC клиента.
Вчера смотрел новую русскую зарплату.
Почти сразу же наткнулся на странную вещь.
Report 17353 (Карточка сотрудника T-2) выдает ошибку, если пытаться получить эту Excel форму с RTC клиента. Показывает ошибку: “Сообщение для программистов C/AL. Не удалось вызвать член Range: Exception from HRESULT: 0x800A03EC.”
При этом другие формы (так же Excel): Лицевой счет, Общий кадровый отчет проходят c RTC клиента без проблем. Классический же клиент спокойно выдает T-2 карточку в Excel.
Сразу закрадываются нехорошие мысли, что это RTC проблема.
Сегодня с утра начинаю копать.
Что за <…..>.
Надо дебагить RTC клиента. Никогда этого не делал.
Обращаюсь в справку. Оказывается все прописано просто в статье Walkthrough: Debugging an Action on a Page http://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.
А что значит "сложно"?Именами вообще нельзя пользоваться или это просто какие-то ограничения на длину имени?А если обозвать EducationInstitution1 будет работать?
А то как-то совсем неудобно..Да и может это FORMAT(RowNo) во всём виноват..
Корень в чем и лимит не знаю. FORMAT(RowNo) думаю не причем. Даже если просто без этого формата передавать EducationInstitutionName1 система вылетает.
А поменяешь вроде как на простой адрес ячейки и прокатывает. При чем в шаблоне то не меняешь ничего. Просто не именовано (EducationInstitutionName бла-бла-) “адресуешся” из кода а по простому A41 и прокатывает. Глубже не копал. Нашел обходной путь и забыл. Говорят в NAV 2009 R2 нет искомой проблемы. Но сам не проверял…
Наводит на размышления что какой-то лимит всё-таки есть.В коде есть ещё EducationQualification-но короче на два символа и в примере не выводится туда ничего.Изменится шаблон-поменяется адрес ячейки-ищи потом где что было изменено,эх..