Имя: Пароль:
1C
 
Открыть обработку из двоичных данных на клиенте
0 Fuas4
 
30.09.14
10:43
Господа. добрый день. Ай нид хелп. БП 3.0 (такси), перевожу обработку  с обычных форм на УФ. Такая трабла: В обработке есть макет (двоичные данные), в котором лежит другая маленькая обработка. Мне надо это обработку положить во временный файл и открыть ее форму. Я делаю так:
ИмяФайла = СоздатьФайлНАКлиенте(ИмяВстроеннойОбработки);
ВнешнийОтчет = ВнешниеОбработки.Создать(ИмяФайла);
&НаКлиенте
Функция СоздатьФайлНАКлиенте(ИмяВстроеннойОбработки)
       ИмяФайла = ПолучитьИмяВременногоФайла("erf");
    ДвоичныеДанные = ВернутьМакет(ИмяВстроеннойОбработки);
        ДвоичныеДанные.Записать(ИмяФайла);
        Возврат ИмяФайла;
КонецФункции

&НаСервере
Функция ВернутьМакет(ИмяВстроеннойОбработки)
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");

    ДвоичныеДанные = ОбработкаОбъект.ПолучитьМакет(ИмяВстроеннойОбработки);
Возврат ДвоичныеДанные;    
КонецФункции

Валится у меня все на "ВнешнийОтчет = ВнешниеОбработки.Создать(ИмяФайла);", т.к. на клиенте ВнешниеОбработки недоступны. В тоже время создать ее на сервере я не могу, т.к. временный файл на сервере будет недоступен на клиенте. Как быть? Я понимаю, что надо как-то по другому совсем к этому процессу подойти, но что-то сам дойти не могу
1 Maxus43
 
30.09.14
10:47
получи на сервере двоичные данные, передай их на клиент, сохрани в темп винды, открой
2 Fuas4
 
30.09.14
10:47
(1) дык я так и делаю же
3 Maxus43
 
30.09.14
10:48
(2) Тип там точно ДвоичныеДанные?
4 Maxus43
 
30.09.14
10:48
з.ы. обработка epf
5 Рэйв
 
30.09.14
10:48
(2)Получи  обработку на сервере. передай ее на клиент, получи форму, открой.
6 Fuas4
 
30.09.14
10:49
(3) точно. Тоже сейчас обратил внимание, но обработка создается и с таким форматом
7 Maxus43
 
30.09.14
10:49
а, ВнешниеОбработки  не доступен, не дочитал видимо
8 Fuas4
 
30.09.14
10:50
(5) Отсутствует отображение для типа 'ВнешняяОбработкаОбъект.ВнешняяОбработка'
9 DmitrO
 
30.09.14
10:50
(1) ну-ну, неее..
надо как-то так: получить двоичные на сервере, сохранить их во врем файл (на сервере)..
потом надо подключить внешнюю обработку (это тоже на сервере) именно для упр. режима
потом уже на клиенте ее открывать
10 Рэйв
 
30.09.14
10:54
Глобальный контекст (Global context)
ОткрытьФорму (OpenForm)
Вариант синтаксиса: По названию

Синтаксис:

ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)


......
Для внешних отчетов и обработок имя формы задается следующим образом:
ВнешнийОтчет.<имя отчета>.Форма.<имя формы>;
ВнешнийОтчет.<имя отчета>.<имя стандартной формы>;
ВнешняяОбработка.<имя обработки>.Форма.<имя формы>;
ВнешняяОбработка.<имя обработки>.<имя стандартной формы>.


(!!!)При этом внешний отчет или обработка должны быть предварительно зарегистрированы в системе с помощью метода Подключить или Подключить соответственно. <Имя отчета> и <имя обработки> - это имена, под которыми зарегистрированы внешний отчет или обработка.
11 DmitrO
 
30.09.14
10:55
ВнешниеОбработкиМенеджер (ExternalDataProcessorsManager)
Подключить (Connect)
Синтаксис:

Подключить(<Путь>, <Имя>, <БезопасныйРежим>)
12 Fuas4
 
30.09.14
11:11
(9) (10) (11) да, это то, что надо спасибо большое. Только я подключить не могу.
ИмяФайла = ПолучитьИмяВременногоФайла("erf");
    ДвоичныеДанные = ВернутьМакет(ИмяВстроеннойОбработки);
        ДвоичныеДанные.Записать(ИмяФайла);
        ВнешнийОтчет = ВнешниеОбработки.Создать(ИмяФайла);
        ВнешОтчет = ВнешниеОбработки.Подключить(ВнешнийОтчет.ИспользуемоеИмяФайла,"ОтчетОлоло");
Неправильный путь к файлу 'c:\Temp\v8_BEC1_5.erf'
СП пишет: В качестве пути может использоваться только путь к данным в конфигурации и базе данных.
Это какой у меня путь должен быть?
13 hhhh
 
30.09.14
11:15
(12) это на сервере или на клиенте происходит?
14 Fuas4
 
30.09.14
11:15
(13) на сервере
15 DmitrO
 
30.09.14
11:16
точна ведь :)
значит этот файл с двоичными данными надо сначала пихнуть во временное хранилище, при этом получишь адрес это и будет навигационная ссылка
16 DmitrO
 
30.09.14
11:16
вот это:
ВнешнийОтчет = ВнешниеОбработки.Создать(ИмяФайла);
вообще не надо делать
17 hhhh
 
30.09.14
11:19
(14) и точно на диске C: сервера есть такая папка temp и на нее даны все разрешения пользователям компьютера клиента?
18 Fuas4
 
30.09.14
11:20
(17) я пока на своем код пишу. у меня все права, естественно, есть. и клиент и сервер пока - один коспьютер
19 DmitrO
 
30.09.14
11:20
(17)вылазь из танка, это на сервере происходит :)
20 Fuas4
 
30.09.14
11:21
(16)     ДвоичныеДанные.Записать(ИмяФайла);
         АдресХранилища = "";
    Результат = ПоместитьФайл(АдресХранилища, ИмяФайла, , Ложь);
ПоместитьФАйл доступен только на клиенте)))
21 DmitrO
 
30.09.14
11:22
(20)ПоместитьВоВременноеХранилище
22 Fuas4
 
30.09.14
11:26
(21) Ога уже нашел.
   ИмяФайла = ПолучитьИмяВременногоФайла("erf");
    ДвоичныеДанные = ВернутьМакет(ИмяВстроеннойОбработки);
        ДвоичныеДанные.Записать(ИмяФайла);
         АдресХранилища = "";
         Путь = ПоместитьВоВременноеХранилище(ИмяФайла,АдресХранилища);
        ВнешОтчет = Внешниеотчеты.Подключить(Путь,"ОтчетОлоло");

Теперь вот так вот:         ВнешОтчет = Внешниеотчеты.Подключить(Путь,"ОтчетОлоло");
по причине:
Ошибка подключения внешних метаданных
по причине:
Ошибка при выполнении файловой операции  'e1cib/tempstorage/d201ae08-8e1e-4655-aa05-6797008c5a25'
по причине:
Неверный формат хранилища данных 'e1cib/tempstorage/d201ae08-8e1e-4655-aa05-6797008c5a25'
23 Fuas4
 
30.09.14
11:37
Все, спасибо всем большое. Все заработало. Пихать во временное хранилище надо было прям двоичные данные, а не файл:
ИмяФайла = ПолучитьИмяВременногоФайла("erf");
    ДвоичныеДанные = ВернутьМакет(ИмяВстроеннойОбработки);
         Путь = ПоместитьВоВременноеХранилище(ДвоичныеДанные);

        ВнешОтчет = Внешниеотчеты.Подключить(Путь,"ОтчетОлоло");
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн