В начало

ТипВсеСсылки() не содержит типы из расширений

 

            Ошибка проявляется в модуле «ОбщегоНазначения» в функции «МенеджерОбъектаПоСсылке», когда с помощью нее пытаются определить принадлежность объекта из расширения.

 

Листинг. Глючная функция «МенеджерОбъектаПоСсылке»
из модуля «ОбщегоНазначения»

Функция МенеджерОбъектаПоСсылке(Ссылка) Экспорт

           

            ИмяОбъекта = Ссылка.Метаданные().Имя;

            ТипСсылки = ТипЗнч(Ссылка);

           

            Если Справочники.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда

                        Возврат Справочники[ИмяОбъекта];

                       

            ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда

                        Возврат Документы[ИмяОбъекта];

                       

            ИначеЕсли БизнесПроцессы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда

                        Возврат БизнесПроцессы[ИмяОбъекта];

                       

            ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда

                        Возврат ПланыВидовХарактеристик[ИмяОбъекта];

                       

            ИначеЕсли ПланыСчетов.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда

                        Возврат ПланыСчетов[ИмяОбъекта];

                       

            ИначеЕсли ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда

                        Возврат ПланыВидовРасчета[ИмяОбъекта];

                       

            ИначеЕсли Задачи.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда

                        Возврат Задачи[ИмяОбъекта];

                       

            ИначеЕсли ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда

                        Возврат ПланыОбмена[ИмяОбъекта];

                       

            ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда

                        Возврат Перечисления[ИмяОбъекта];

            Иначе

                        Возврат Неопределено;

            КонецЕсли;

           

КонецФункции

 

            В общем, с расширениями эта функция не работает, нужно фиксить ошибку.

 

Рис. Конфигуратор, вычисление проверки типа

 

Листинг. Некое решение данного глюка в модуле «ОбщегоНазначения»,
добавленного в «Расширение 2»

Функция ПолучитьМетаданныеТекущегоРасширения() Экспорт

            МассивРасширений = РасширенияКонфигурации.Получить();

            Для Каждого Расширение Из МассивРасширений Цикл

                        рМетаданные = Новый ОбъектМетаданныхКонфигурация(Расширение.ПолучитьДанные());

                        Если рМетаданные.Имя = "Расширение2" Тогда

                                   Возврат рМетаданные;

                        КонецЕсли;

            КонецЦикла;

            Возврат Неопределено;

КонецФункции

 

Функция ЭтоСправочникРасширения(ПроверяемыйТип) Экспорт

            МетаданныеРасширения = ПолучитьМетаданныеТекущегоРасширения();

            МетаданныеТипа = МетаданныеРасширения.НайтиПоТипу(ПроверяемыйТип);

            Если МетаданныеТипа <> Неопределено Тогда

                        Возврат МетаданныеРасширения.Справочники.Содержит(МетаданныеТипа);

            Иначе

                        Возврат Ложь;

            КонецЕсли;

КонецФункции

 

&Вместо("МенеджерОбъектаПоСсылке")

Функция Расш2_МенеджерОбъектаПоСсылке(Ссылка)

           

            ИмяОбъекта = Ссылка.Метаданные().Имя;

            ТипСсылки = ТипЗнч(Ссылка);

           

            //Проверяем тип справочника

            Если ЭтоСправочникРасширения(ТипСсылки) Тогда

                        Возврат Справочники[ИмяОбъекта];

            КонецЕсли;

           

            // Продолжаем вызов

            Результат = ПродолжитьВызов(Ссылка);

            Возврат Результат;

КонецФункции