Имя: Пароль:
1C
1С v8
Ошибка при регистрации внешнего отчета "ХранилищеВариантов"
0 ffidelite
 
21.08.14
20:23
Добрый день!

Уже была тема v8: Ошибка при регистрации внешнего отчета "ХранилищеВариантов" УТ 11.1
но там нет решения.

1С:Предприятие 8.3 (8.3.5.1098)
Управление торговлей и взаимоотношениями с клиентами (CRM), редакция 2.0. Разработано совместно с "1С-Рарус" (2.0.6.2)


При попытке загрузить внешнюю обработку в Дополнительные отчеты и обработки, появляется ошибка:
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(2621)}: Поле объекта не обнаружено (ХранилищеВариантов)
Если ВнешнийОбъектМетаданные.ХранилищеВариантов <> Неопределено Тогда

Посмотрел, проблема в том, что в функции
в этой строке
ВнешнийОбъектМетаданные = ВнешнийОбъект.Метаданные();

не добавляется у объекта реквизит ХранилищеВариантов.



Функция ПолучитьРегистрационныеДанные(Знач Объект, Знач ПараметрыРегистрации, Знач ПараметрыОбработки)
    
    Результат = Новый Структура;
    
    СтандартнаяОбработка = Истина;
    
    ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия(
        "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки\ПриПолученииРегистрационныхДанных");
    
    Для каждого Обработчик Из ОбработчикиСобытия Цикл
        
        Обработчик.Модуль.ПриПолученииРегистрационныхДанных(Объект, Результат, СтандартнаяОбработка);
        
        Если Не СтандартнаяОбработка Тогда
            Возврат Результат;
        КонецЕсли;
        
    КонецЦикла;
    
    Если СтандартнаяОбработка Тогда
        
        // Подключение и получение имени, под которым объект будет подключаться
        Менеджер = ?(ПараметрыРегистрации.ЭтоОтчет, ВнешниеОтчеты, ВнешниеОбработки);
        
        #Если ТолстыйКлиентОбычноеПриложение Тогда
            ПараметрыОбработки.ИмяОбъекта = ПолучитьИмяВременногоФайла();
            ДвоичныеДанные = ПолучитьИзВременногоХранилища(ПараметрыРегистрации.АдресДанныхОбработки);
            ДвоичныеДанные.Записать(ПараметрыОбработки.ИмяОбъекта);
        #Иначе
            ПараметрыОбработки.ИмяОбъекта = СокрЛП(Менеджер.Подключить(ПараметрыРегистрации.АдресДанныхОбработки, , Истина));
        #КонецЕсли
        
        // Получение сведений о внешней обработке
        ВнешнийОбъект = Менеджер.Создать(ПараметрыОбработки.ИмяОбъекта);
        ВнешнийОбъектМетаданные = ВнешнийОбъект.Метаданные();
        
        Попытка
            РегистрационныеДанные = ВнешнийОбъект.СведенияОВнешнейОбработке();
        Исключение
            ТекстПредупреждения = НСтр("ru='Невозможно подключить дополнительный отчет/обработку из файла:
                                           |
                                           |%1.'");
            ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
            ВызватьИсключение ТекстПредупреждения;
        КонецПопытки;
        
        Если РегистрационныеДанные.Наименование = Неопределено ИЛИ РегистрационныеДанные.Информация = Неопределено Тогда
            Если РегистрационныеДанные.Наименование = Неопределено Тогда
                РегистрационныеДанные.Наименование = ВнешнийОбъектМетаданные.Представление();
            КонецЕсли;
            Если РегистрационныеДанные.Информация = Неопределено Тогда
                РегистрационныеДанные.Информация = ВнешнийОбъектМетаданные.Комментарий;
            КонецЕсли;
        КонецЕсли;
        
        Если ТипЗнч(РегистрационныеДанные.Вид) <> Тип("ПеречислениеСсылка.ВидыДополнительныхОтчетовИОбработок") Тогда
            РегистрационныеДанные.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок[РегистрационныеДанные.Вид];
        КонецЕсли;
        
        РегистрационныеДанные.Вставить("ХранилищеВариантов");
        Если РегистрационныеДанные.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда
            Если ВнешнийОбъектМетаданные.ХранилищеВариантов <> Неопределено Тогда
                РегистрационныеДанные.ХранилищеВариантов = ВнешнийОбъектМетаданные.ХранилищеВариантов.Имя;
            КонецЕсли;
        КонецЕсли;
        
        РегистрационныеДанные.Команды.Колонки.Добавить("ВариантЗапуска");
        
        Для Каждого КомандаОписание Из РегистрационныеДанные.Команды Цикл
            КомандаОписание.ВариантЗапуска = Перечисления.СпособыВызоваДополнительныхОбработок[КомандаОписание.Использование];
        КонецЦикла;
        
        #Если ТолстыйКлиентОбычноеПриложение Тогда
            ПараметрыОбработки.ИмяОбъекта = ВнешнийОбъектМетаданные.Имя;
        #КонецЕсли
        
        Возврат РегистрационныеДанные;
        
    КонецЕсли;
    
КонецФункции


Может, кто чего подскажет.
1 ffidelite
 
22.08.14
10:57
ап
2 ffidelite
 
22.08.14
21:22
тупил долго.
Подсказали

Файл имеет расширение epf, а в Функция СведенияОВнешнейОбработке() указано было:
РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОтчет");
а должно быть
РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.