|
Открыть обработку из двоичных данных на клиенте | ☑ | ||
---|---|---|---|---|
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"); ДвоичныеДанные = ВернутьМакет(ИмяВстроеннойОбработки); Путь = ПоместитьВоВременноеХранилище(ДвоичныеДанные); ВнешОтчет = Внешниеотчеты.Подключить(Путь,"ОтчетОлоло"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |