Имя: Пароль:
1C
1С v8
Странная ошибка при сохранении конфигурации расширения.
0 Sevish
 
03.03.24
06:56
Добрый день!
Подскажите, как это исправить:

{ФинансыПланирование МодульУправляемогоПриложения(4,8)}: Переменная не определена (ДокументыСерверФП)
    Если (<<?>>ДокументыСерверФП.ДоступнаРольПользователяРабочихСтолов()) Тогда (Проверка: Мобильный клиент (автономная конфигурация). Клиент)
Мобильное приложение содержит синтаксические ошибки.

У меня стоит:
    #Если НЕ МобильноеПриложениеКлиент И НЕ МобильныйАвтономныйСервер  Тогда
    Если (ДокументыСерверФП.ДоступнаРольПользователяРабочихСтолов()) Тогда
        КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.ПолноэкранноеРабочееМесто);
    КонецЕсли;
    #КонецЕсли

Мне этот код в мобильном приложении вообще не нужен, но при сохранении конфигурации расширения ругается.
Благодарю!
1 Волшебник
 
03.03.24
08:54
общий модуль ДокументыСерверФП не найден
2 Chameleon1980
 
03.03.24
09:31
пусть ругается. проверьте есть ли такой модуль. он просто не добавлен в расширение, наверное, поэтому расширение его может не видеть - ерунда.
3 Sevish
 
03.03.24
10:00
Увы! Этот модуль и ЕСТЬ в расширении и более того, у него есть флажок "Внешнее подключение".
А ошибка просто бесит :(
В остальном все работает.
4 Волшебник
 
04.03.24
00:21
(3) Нет такого флажка
5 MaximSh
 
04.03.24
08:16
(3) можно снять проверку в конфигураторе на "Мобильный клиент (автономный режим)...". Обычно галочка там не стоит.
6 Sevish
 
05.03.24
08:39
(5) А где конкретно?
7 Галахад
 
05.03.24
09:00
(6) Параметры \ Модули \ Проверка

Но скорее всего не поможет...
8 DrZombi
 
05.03.24
14:14
(0) Обмани систему. Через БСП, к примеру.

МойМодуль = ОбщегоНазначения.ОбщийМодуль("ДокументыСерверФП");

Напиши свою функцию, если ругается и на "ОбщегоНазначения"

// Возвращает ссылку на общий модуль или модуль менеджера по имени.
//
// Параметры:
//  Имя - Строка - имя общего модуля.
//
// Возвращаемое значение:
//   ОбщийМодуль
//   МодульМенеджераОбъекта
//
// Пример:
//    Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда
//        МодульОбновлениеКонфигурации = ОбщегоНазначения.ОбщийМодуль("ОбновлениеКонфигурации");
//        МодульОбновлениеКонфигурации.<Имя метода>();
//    КонецЕсли;
//
//    Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолнотекстовыйПоиск") Тогда
//        МодульПолнотекстовыйПоискСервер = ОбщегоНазначения.ОбщийМодуль("ПолнотекстовыйПоискСервер");
//        МодульПолнотекстовыйПоискСервер.<Имя метода>();
//    КонецЕсли;
//
Функция ОбщийМодуль(Имя) Экспорт
    
    Если Метаданные.ОбщиеМодули.Найти(Имя) <> Неопределено Тогда
        // АПК:488-выкл ВычислитьВБезопасномРежиме не используется, чтобы избежать вызова ОбщийМодуль рекурсивно.
        УстановитьБезопасныйРежим(Истина);
        Модуль = Вычислить(Имя);
        // АПК:488-вкл
    ИначеЕсли СтрЧислоВхождений(Имя, ".") = 1 Тогда
        Возврат СерверныйМодульМенеджера(Имя);
    Иначе
        Модуль = Неопределено;
    КонецЕсли;
    
    Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда
        ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Общий модуль ""%1"" не существует.'"),
            Имя);
    КонецЕсли;
    
    Возврат Модуль;
    
КонецФункции


// Возвращает серверный модуль менеджера по имени объекта.
Функция СерверныйМодульМенеджера(Имя)
    ОбъектНайден = Ложь;
    
    ЧастиИмени = СтрРазделить(Имя, ".");
    Если ЧастиИмени.Количество() = 2 Тогда
        
        ИмяВида = ВРег(ЧастиИмени[0]);
        ИмяОбъекта = ЧастиИмени[1];
        
        Если ИмяВида = ВРег("Константы") Тогда
            Если Метаданные.Константы.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("РегистрыСведений") Тогда
            Если Метаданные.РегистрыСведений.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("РегистрыНакопления") Тогда
            Если Метаданные.РегистрыНакопления.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("РегистрыБухгалтерии") Тогда
            Если Метаданные.РегистрыБухгалтерии.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("РегистрыРасчета") Тогда
            Если Метаданные.РегистрыРасчета.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("Справочники") Тогда
            Если Метаданные.Справочники.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("Документы") Тогда
            Если Метаданные.Документы.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("Отчеты") Тогда
            Если Метаданные.Отчеты.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("Обработки") Тогда
            Если Метаданные.Обработки.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("БизнесПроцессы") Тогда
            Если Метаданные.БизнесПроцессы.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("ЖурналыДокументов") Тогда
            Если Метаданные.ЖурналыДокументов.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("Задачи") Тогда
            Если Метаданные.Задачи.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("ПланыСчетов") Тогда
            Если Метаданные.ПланыСчетов.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("ПланыОбмена") Тогда
            Если Метаданные.ПланыОбмена.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("ПланыВидовХарактеристик") Тогда
            Если Метаданные.ПланыВидовХарактеристик.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        ИначеЕсли ИмяВида = ВРег("ПланыВидовРасчета") Тогда
            Если Метаданные.ПланыВидовРасчета.Найти(ИмяОбъекта) <> Неопределено Тогда
                ОбъектНайден = Истина;
            КонецЕсли;
        КонецЕсли;
        
    КонецЕсли;
    
    Если Не ОбъектНайден Тогда
        ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Объект метаданных ""%1"" не существует.'"), Имя);
    КонецЕсли;
    
    // АПК:488-выкл ВычислитьВБезопасномРежиме не используется, чтобы избежать вызова ОбщийМодуль рекурсивно.
    УстановитьБезопасныйРежим(Истина);
    Модуль = Вычислить(Имя);
    // АПК:488-вкл
    
    Возврат Модуль;
КонецФункции