|
Затык с Передачей файла на &Клиент | ☑ | ||
---|---|---|---|---|
0
Федор Сумкин
01.12.11
✎
12:14
|
День добрый!
Господа, че-т не могу сходу сообразить... Есть у меня Обработка, а в ней реквзит "ДопСоглашение" - далее ДС. Если пытаюсь напечатать ДС из самой формы ДС - все норм, выглядит (условно) так: &НаСервере Функция ПечатьДС() Обж = РеквизитФормыВЗначение("Объект"); Возврат Обж.ПечатьДС(); КонецФункции &НаКлиенте Процедура Печать(Команда) Адрес = ПечатьДС(); Если Адрес = Неопределено Тогда Возврат; КонецЕсли; ВФайл = "D:\Temp\ДС " + СтрЗаменить(СтрЗаменить(Объект.Номер, "\", "_"), "/", "_") + ".doc"; ПолучитьФайл(Адрес, ВФайл); КонецПроцедуры Если пытаюсь из обработки (не внешней) вот так: &НаСервере Функция ПечатьДС_() Обж = ДопСоглашение.ПолучитьОбъект(); Возврат Обж.ПечатьДС(); КонецФункции &НаКлиенте Процедура ПечатьДС(Команда) Если Не ЗначениеЗаполнено(ДопСоглашение) Тогда Возврат; КонецЕсли; Адрес = ПечатьДС_(); Если Адрес = Неопределено Тогда Возврат; КонецЕсли; ВФайл = "D:\Temp\ДС " + СтрЗаменить(СтрЗаменить(РеквизитОбъекта(ДопСоглашение, "Номер"), "\", "_"), "/", "_") + ".doc"; ПолучитьФайл(Адрес, ВФайл); КонецПроцедуры Ошибка (до сохранения или открытия файла доходит, диалог появляется, но сохранить/открыть нельзя): Ошибка при выполнении файловой операции 'e1c://server/10.142.хх.ххх/ХххХхх/e1cib/tempstorage/8bb4514d-67ef-432c-adf2-932a86cf5ccf' Хотя, с сервера возвращается Адрес такой: "e1cib/tempstorage/f4fb467c-cdc4-46cc-9888-9897db351f74" |
|||
1
Федор Сумкин
01.12.11
✎
12:28
|
ап!
|
|||
2
Defender aka LINN
01.12.11
✎
12:31
|
Главное - до последнего не показывай, что в процедуре ПолучитьФайл(). Тяни, как можешь.
|
|||
3
Федор Сумкин
01.12.11
✎
12:34
|
(2)
Глобальный контекст (Global context) ПолучитьФайл (GetFile) Синтаксис: ПолучитьФайл(<Адрес>, <ИмяФайла>, <Интерактивно>) Параметры: <Адрес> (обязательный) Тип: Строка. Расположение данных во временном хранилище или в информационной базе. <ИмяФайла> (необязательный) Тип: Строка. Путь к файлу, в который будут сохранены данные из информационной базы. В не интерактивном режиме необходимо указать значение параметра, иначе будет вызвано исключение. В интерактивном режиме может быть не задан. Значение по умолчанию: Пустая строка <Интерактивно> (необязательный) Тип: Булево. Истина - режим, в котором пользователю показывается диалог, в котором он может выбрать действие с получаемым файлом: запустить его или сохранить по выбранному расположению. В веб-клиенте параметр должен быть равен Истина. В противном случае будет сгенерировано сообщение об ошибке. Значение по умолчанию: Истина Возвращаемое значение: Тип: Булево; Неопределено. Ложь - пользователь отменил операцию сохранения файлов (в интерактивном режиме). В режиме запуска "Веб-клиент" всегда возвращает Неопределено. Описание: Получает файл и сохраняет его в локальную файловую систему пользователя. По умолчанию, метод исполняется в интерактивном режиме, то есть когда будет выдано диалоговое окно, позволяющее указать действие с полученным файлом - запустить его или сохранить по указанному пользователем расположению. Доступность: Тонкий клиент, веб-клиент, толстый клиент. Вызов метода выполняет обращение к серверу. Примечание: Если используется интерактивный режим, а параметр <ИмяФайла> не указан, то операция открытия файла не доступна. В веб-клиенте код на встроенном языке продолжает выполнение, не дожидаясь окончания загрузки файла. Результат выполнения кэшируется в разрезе значений параметров метода. Если данные в файле были изменены, выполняется обращение к серверу. |
|||
4
Федор Сумкин
01.12.11
✎
12:34
|
(3)
Взято из встроенной справки... |
|||
5
Defender aka LINN
01.12.11
✎
12:38
|
Тогда надо в тайне оставлять процедуру ПечатьДС() :)
|
|||
6
Pasha_mix
01.12.11
✎
12:38
|
(2) Решил с умничать )
|
|||
7
Pasha_mix
01.12.11
✎
12:39
|
(5) Печать дс создает некий файл. Вопрос что с ним дальше делать?
(0) Я правильно понял? |
|||
8
Федор Сумкин
01.12.11
✎
12:41
|
(5)
ВФайл = ПолучитьИмяВременногоФайла("doc"); АДМакет = Справочники.нафтаЮА_ДопСоглашения.ПолучитьМакет("Макет"); АДМакет.Записать(ВФайл); Попытка КомОбж = ПолучитьCOMОбъект(ВФайл); Исключение Сообщить(ОписаниеОшибки()); Сообщить("Ошибка создания шаблона Д.С.!"); Возврат Неопределено; КонецПопытки; Док = КомОбж.Application.Documents(1); //........................................................................ Док.SaveAs(ВФайл); КомОбж.Application.Quit(); КомОбж = Неопределено; Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВФайл)); УдалитьФайлы(ВФайл); Возврат Адрес; |
|||
9
Федор Сумкин
01.12.11
✎
12:44
|
(7) Типа, да - но не совсем...
Я понимаю, что с ним делать... Просто мне его (файл) надо получить из формы обработки, а не из формы элементы справочника... Если напрямую из формы элемента справочника - все без проблем... Если из обработки, в которой есть реквизит - ссылка на элемент ДС - не пашет (не допахивает :) ) |
|||
10
Defender aka LINN
01.12.11
✎
12:49
|
(8) Ну и возвращай двоичные данные, а на клиенте записывай.
|
|||
11
Федор Сумкин
01.12.11
✎
12:52
|
(0) В первом сообщения адреса разные вставил... из разных сеансов отладки...
Они на самом деле одинаковые (почти): e1cib/tempstorage/d0e1a0bd-da53-4c2d-bdb6-21cd2a3fd4bf e1c://server/10.142.хх.ххх/ХххХхх/e1cib/tempstorage/d0e1a0bd-da53-4c2d-bdb6-21cd2a3fd4bf (10) Так я и возвращаю..... Но, как-то недополучаю.... )) Диалог сохранения/открытия появляется - но дальше ошибка, описанная в (0) |
|||
12
Федор Сумкин
01.12.11
✎
12:55
|
Повторюсь:
"Просто мне его (файл) надо получить из формы обработки, а НЕ из ФОРМЫ ЭЛЕМЕНТА справочника... Если НАПРЯМУЮ из формы элемента справочника - все БЕЗ ПРОБЛЕМ... получаю файл... Если ИЗ ОБРАБОТКИ, в которой есть реквизит - ссылка на элемент ДС - НЕ ПАШЕТ..." |
|||
13
Федор Сумкин
01.12.11
✎
12:56
|
Я уже подумываю (накрайняк) по-ламерски как-то сделать )))
Открывать форму элемента ДС, перед открытием (по параметру) "Отказ = Истина" и ПечататьДС() |
|||
14
Федор Сумкин
01.12.11
✎
12:59
|
Я так понимаю - глобальная разница в:
Обж = РеквизитФормыВЗначение("Объект"); И Обж = ДопСоглашение.ПолучитьОбъект(); Вот токо в чем? И то и то Объект получает....или я не прав? |
|||
15
Федор Сумкин
01.12.11
✎
13:15
|
Хелп!
|
|||
16
Федор Сумкин
01.12.11
✎
13:24
|
Лана. ((
Всем пасиба... Сделал (до лучших времен), как написал в (13). Для глаза незаметно... ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |