Имя: Пароль:
1C
 
1с83 ошибка отображения типов.
0 buketovav
 
23.05.20
22:52
Добрый день, Дорогие Форумчане!
web клиент, платформа - 1С:Предприятие 8.3 (8.3.16.1359)


На форму документа программно добавляется кнопка "Печать". По этой кнопке вызывается обработка, где и формируются печатные формы.
Ранее в коде использовалось УстановитьРасширениеРаботыСФайлами(), это вызывало ошибку в web клиенте, что модальные окна запрещены в этом режиме, посмотрел методическую информацию и обнаружил - "Не рекомендуется использовать, начиная с версии 8.3.16".
Рекомендуется теперь использовать - НачатьУстановкуРасширенияРаботыСФайлами()
Сделал.

Теперь получаю ошибку - ошибка отображения типов отсутствует отображение для типа.

скриншот ошибки   - https://prnt.sc/smhyau

Скажите, как с этим бороться?
1 Мимохожий Однако
 
23.05.20
23:00
код показывай. Не стесняйся.
2 buketovav
 
23.05.20
23:02
#Если ВебКлиент Тогда    
        Если СтрНайти(Команда.Имя,"PDF") Тогда
            Расширение = ".pdf";
        Иначе
            Расширение = ".doc";
        КонецЕсли;  
        
        // Попробуем подключить расширение работы с файлами
        РасширениеПодключено = НачатьПодключениеРасширенияРаботыСФайлами(); //ПодключитьРасширениеРаботыСФайлами();
        Если НЕ РасширениеПодключено Тогда
        // Расширение не установлено, пробуем установить
        НачатьУстановкуРасширенияРаботыСФайлами();
        //    УстановитьРасширениеРаботыСФайлами();
        КонецЕсли;
        
        РасширениеПодключено =  ПодключитьРасширениеРаботыСФайлами();
        Если Не РасширениеПодключено Тогда
            // Расширение не удалось установить, сообщаем об этом пользователю
            ПоказатьПредупреждение( , НСтр("ru = 'Для выполнения данной операции вам нужно установить расширение работы с файлами.'"));
            Возврат;
        КонецЕсли;
        АдресХранилища = ПоместитьДокументВоВременноеХранилищеНаСервере(Расширение, Команда);
    
        Если АдресХранилища = Неопределено Тогда
            ПоказатьПредупреждение( , НСтр("ru = 'Что-то пошло не так :('"));
            Возврат;
        КонецЕсли;
        
        ИмяФайла = "Сохраняемый файл" + Расширение;
    
        Попытка
            // Сам момент сохранения
            ПолучитьФайл(АдресХранилища, ИмяФайла, Истина);
        Исключение                
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "ru='Не удалось записать файл. Возможно, недостаточно места на диске, диск защищен от записи или не подключено расширение для работы с файлами.'";
            Сообщение.Сообщить();
        КонецПопытки;
    #Иначе
        
        НазваниеФайла = цдо_СформироватьПечатнуюФормуНовое(Команда.Имя);

        ПутьДоФайла = "";
        Если СтрНайти(Команда.Имя,"PDF") Тогда
            //ПутьДоФайла = ПолучитьИмяВременногоФайла("pdf");
            Выполнить("ПутьДоФайла = ПолучитьИмяВременногоФайла(""pdf"")");
        Иначе
            //ПутьДоФайла = ПолучитьИмяВременногоФайла("doc");
            Выполнить("ПутьДоФайла = ПолучитьИмяВременногоФайла(""doc"")");
        КонецЕсли;    
        ПолучитьИзВременногоХранилища(НазваниеФайла).Записать(ПутьДоФайла);
        ЗапуститьПриложение(ПутьДоФайла);     
    #КонецЕсли
3 buketovav
 
23.05.20
23:07
код не мой, писалось до меня
я опубликовал базу и столкнулся с проблемкой
4 novichok79
 
23.05.20
23:49
дичь какая-то.
все что начинается с "Начать" используется на клиенте и должно через callback'и работать.
надо объявить оповещение, передать его в Начать... и уже в callback'е продолжать описывать логику.
5 novichok79
 
23.05.20
23:52
и ошибка отображения типов обычно бывает, когда ты пытаешься передать с сервера на клиент (или наоборот) значение неподдерживаемого типа.
6 buketovav
 
23.05.20
23:53
(4) с таким ранее не сталкивался просто
(5) на тонком и толстом клиенте все работает исправно
7 buketovav
 
23.05.20
23:54
(4) может быть у Вас есть пример реализации?
8 novichok79
 
23.05.20
23:59
(6) в веб-клиенте бывают необычные ошибки. поищите отладчиком.
(7) любая свежая типовая - глобальный поиск - НачатьУстановкуРасширенияРаботыСФайлами
9 buketovav
 
24.05.20
00:00
ок, спасибо (8) поищу
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший