|
![]() |
#1 |
Участник
|
Цитата:
Я в своем коде (если быть полностью точным то он был написан не мной под четверку, я переносил его на пятерку) работаем только с классов GanttClient (ну и его подклассами). При инициализации нашей формы через load() методы классов GanttClient -> GanttData вызывается в итоге метод createWorkday. Далее пользователь в форме выбирает рабочий центр (WkrCtrId) и период планирования. Соответвенно эти новые данные передаются класс GanttClient, затем вызывается метод load(), который пересчитывает все внутренне содержимое. Значение "проблемной" переменной workdayName формируется внутри стандарного функционала и для некоторых работ (ProdRouteJob) формируется из наименований первичного (Primary) рабочего центра плюс последовательно все вторичные (secondary). В нашем случае для одной операции (или работы ProdRouteJob) сформированный идентификатор календаря (workdayName) превысил заданные 60 символов. В итоге получилось так, что вначале, при инициализации формы, GanttVcWorkday был создан, а при выборе в форме рабочего центра содержащего определеную операцию, метод findWorkdayName() не находил GanttVcWorkday. Далее система пыталась создать его заново, но при создании второго GanttVcWorkday с одинаковым именем COM объект живущий внутри GanttVcWorkday выдавал ошибку. Вообщем немного коряво получилось описать. На конкретном примере все будет более понятно. Попробую на днях более четко описать проблемы - хотя самое важное и так понятно - хотелось бы, чтобы функции были симметричными - или обо обрезали до 60 символов или обе не обрезали. Инече конструкция из кода, когда вызывается: If (! aa.findWorkdayName(x)) { aa.createWorkday(x); } Если переменная x имеет длину более 60 символов. |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
Теги |
bug report, баг, ошибка, dynamics |
|
|