|
Использование синхронных методов на клиенте запрещено | ☑ | ||
---|---|---|---|---|
0
LivingStar
04.10.19
✎
07:36
|
В вэб клиенте при нажатии на кнопку сохранить выходит окно.
Не получается сохранить файл как в режиме предприятия на ПК. Как можно решить этот вопрос? http://joxi.ru/KAx3R4VTZ9x5Y2 |
|||
1
LivingStar
04.10.19
✎
07:47
|
Там вот такой код сохранения файла, как его изменить на асинхронный вызов ?
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); ДиалогВыбораФайла.Расширение = ".xls"; СтрокаДатаОтчета = Формат(ДатаОтчета,"ДФ=dd.MM.yyyy"); ПолноеИмяФайла = Форма.НаименованиеОтчета + "_" + СтрокаДатаОтчета; ДиалогВыбораФайла.ПолноеИмяФайла = ПолноеИмяФайла; ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Истина; ТабДок = Новый ТабличныйДокумент; Если ДиалогВыбораФайла.Выбрать() Тогда СформироватьНаСервереТабДок(ТабДок); КонецЕсли; Попытка ТабДок.Записать(ДиалогВыбораФайла.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLS); Сообщить("Отчет сохранен " + ДиалогВыбораФайла.Каталог); Исключение КонецПопытки; КонецЕсли; |
|||
2
Dmitry1c
04.10.19
✎
07:50
|
(1) что-то типа "показатьДиалогВыбораФайла"
|
|||
3
Dmitry1c
04.10.19
✎
07:52
|
||||
4
LivingStar
04.10.19
✎
07:59
|
А как вот этот код (1) поправить на асинхронный вызов?
|
|||
5
LivingStar
04.10.19
✎
08:33
|
подскажите пожалуйста по коду?
|
|||
6
Тихий омут
04.10.19
✎
08:44
|
&НаСервере
Функция ПоместитьФайлВоВременноеХранилище(Ссылка) Результат = ПоместитьВоВременноеХранилище(Ссылка.Файл.Получить(),ЭтаФОрма.УникальныйИдентификатор); Возврат Результат; КонецФункции &НаСервереБезКонтекста Функция ПолучитьФайлИзХранилища(Файл) АдресВременногоХранилища=""; АдресВременногоХранилища=ПоместитьВоВременноеХранилище(Файл.Файл.Получить()); Возврат АдресВременногоХранилища; КонецФункции // ПолучитьФайлИзХранилища(НомерФайла) &НаКлиенте Процедура СохранитьФайлНаДиск(Команда) #Если ВебКлиент Тогда Если ЭтаФорма.Элементы.Файлы.ТекущиеДанные=Неопределено Тогда Возврат; КонецЕсли; // [ЭтаФорма.Элементы.Файлы.ТекущиеДанные=Неопределено] СсылкаНаФайл=ЭтаФорма.Элементы.Файлы.ТекущиеДанные.Файл; ПолучитьФайл(ПоместитьФайлВоВременноеХранилище(СсылкаНаФайл), ПолучитьИмяФайла(СсылкаНаФайл), Истина); #Иначе Если ЭтаФорма.Элементы.Файлы.ТекущиеДанные=Неопределено Тогда Возврат; КонецЕсли; // [ЭтаФорма.Элементы.Файлы.ТекущиеДанные=Неопределено] СсылкаНаФайл=ЭтаФорма.Элементы.Файлы.ТекущиеДанные.Файл; Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); Диалог.ПолноеИмяФайла=ПолучитьИмяФайла(СсылкаНаФайл); Диалог.Фильтр="*.*"; Диалог.МножественныйВыбор=Ложь; Диалог.Заголовок="Укажите путь и имя файла для сохранения на локальный диск"; Если Диалог.Выбрать() Тогда АдресВременногоХранилища=ПолучитьФайлИзХранилища(СсылкаНаФайл); ДвоичныеДанные=ПолучитьИзВременногоХранилища(АдресВременногоХранилища); ДвоичныеДанные.Записать(Диалог.ПолноеИмяФайла); КонецЕсли; // [Диалог.Выбрать()] #КонецЕсли // [ВебКлиент] КонецПроцедуры |
|||
7
Тихий омут
04.10.19
✎
08:44
|
внимательно покури в СП метод глоб. контекста ПолучитьФайл()
|
|||
8
Тихий омут
04.10.19
✎
08:47
|
Разжевывать всё не буду, мой пример у тебя сразу не заработает. Думай, пробуй. Направление есть.
|
|||
9
ДенисЧ
04.10.19
✎
08:51
|
правой кнопкой клацни и рефакторинг - нерекомендуемые синхронные вызовы - преобразовать...
|
|||
10
Василий Алибабаевич
04.10.19
✎
08:51
|
(6) А у тебя тоже "Диалог.Выбрать()". А именно на это у ЖивойЗвезды и ругается.
Нужно переделывать на "Диалог.Показать()". Но это же ЖиваяЗвезда... А значит - тут нужно только вместо него сделать. |
|||
11
LivingStar
04.10.19
✎
08:55
|
Вот код который работает как синхронный вызов (1)
как его переделать на асинхронный ? |
|||
12
LivingStar
04.10.19
✎
08:56
|
(6) ничего не понятно, у меня вот кусок кода (1) который работает, как его преобразовать на асинхронный вызов?
|
|||
13
Тихий омут
04.10.19
✎
08:58
|
(10) ты совет из (7) тоже проигнорировал, да?
|
|||
14
Василий Алибабаевич
04.10.19
✎
08:58
|
(13) Да.
|
|||
15
Василий Алибабаевич
04.10.19
✎
08:59
|
+ (14) У ДиалогВыбораФайла есть вполне себе асинхронный метод. ПРичем он никак не связан с ПолучитьФайл.
|
|||
16
Тихий омут
04.10.19
✎
09:02
|
(15) А я не спорю с этим. Но если есть желание налюбиться вдоволь с установкой в браузере расширения для работы с файлами - дело ваше.
|
|||
17
LivingStar
04.10.19
✎
09:03
|
(13) посомтрел
|
|||
18
LivingStar
04.10.19
✎
09:05
|
мне не понятно что делать
|
|||
19
Василий Алибабаевич
04.10.19
✎
09:06
|
(16) Ага. Точно. Как раз у ТС проблема - его программа уже везде работает, осталось только в браузере наладить )))
|
|||
20
LivingStar
04.10.19
✎
09:07
|
(19) Работает, на веб браузере хочу понять как сделать это асинхронно, пересмотрел массу статей, но как именно это сделать пока не понял ((((( Странно что не понятно. Вроде все очевидно. Полумается таб документ и сохраняется в эксель файл.
Все прозрачно!!!!! Как это сделать с аснхронным вызовом? |
|||
21
Василий Алибабаевич
04.10.19
✎
09:09
|
(18) Так все же просто. Как предлагает Тихий омут нужно на 1С написать свой НортонКомандир, который даст возможность выбрать файл и ... Та-да-дам... подставить его в метод ПолутьФайл() ))) Занавес.
|
|||
22
LivingStar
04.10.19
✎
09:15
|
(21) Я по делу спрашиваю, из кода в (1) как его переделать на асинхронный вызов?
|
|||
23
Тихий омут
04.10.19
✎
09:21
|
(21) Узбагоинчика примите-с :)
(22) Тебе принципиально именно на асинхронный вызов переделать или чтобы в браузере работало без лишней любви? Поверь, предложенный метод работает _на всех_ браузерах,безо всяких расширений для работы с файлами. Но если принципиально, то... разбирайся сам. А если непринципиально - то ещё одна подсказка. Ты формируешь таб. док. на сервере. Сохрани его там же во временный файл в нужном формате, загрузи полученное во временное хоронилище, верни полученную хоронилещную ссылку на клиента - и код из моего примера внезапно окажется прозрачным и работающим. |
|||
24
LivingStar
04.10.19
✎
09:26
|
(23) что бы в браузере ошибки не было что в (0)
и код в (1) что бы работал как в предприятии мне просто не понятно что и как делать. |
|||
25
GROOVY
04.10.19
✎
09:28
|
https://its.1c.ru/db/v8315doc#bookmark:dev:TI000001507 вот очень подробно с рисунками.
|
|||
26
seevkik
04.10.19
✎
09:29
|
Он ожил!
|
|||
27
Тихий омут
04.10.19
✎
09:31
|
(24) Тогда прошу прощения за отвлечение внимания на ненужное. Засим позвольте удалиться.
|
|||
28
LivingStar
04.10.19
✎
09:32
|
как из всех этих подсказок переделать код в (1) на работающий в браузере?
|
|||
29
Василий Алибабаевич
04.10.19
✎
09:42
|
(28) ГЫ. Эта музыка будет вечной.
Я вчера говорил - ливингостар не читает документацию. Не читает советы на форуме, в которых нет готового кода. И вот этого вот (25) он читать тоже не будет. Ему не нужны советы. Ему нужен готовый код. |
|||
30
Василий Алибабаевич
04.10.19
✎
09:55
|
(0) Проверяй :
Твоя процедура : ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); ДиалогВыбораФайла.Расширение = ".xls"; СтрокаДатаОтчета = Формат(ДатаОтчета,"ДФ=dd.MM.yyyy"); ПолноеИмяФайла = Форма.НаименованиеОтчета + "_" + СтрокаДатаОтчета; ДиалогВыбораФайла.ПолноеИмяФайла = ПолноеИмяФайла; ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Истина; //отсюда изменилось : Обработчик = Новый ОписаниеОповещения("ПослеВыбораФайла", ЭтотОбъект); ДиалогВыбораФайла.Показать(Обработчик); //здесь закончилась твоя процедура //Это добавленная процедура. В ней часть кода из старой. &НаКлиенте Процедура ПослеВыбораФайла(Результат, П) Экспорт Если Результат = Неопределено Тогда Возврат; КонецЕсли; ИмяФайла = Результат[0]; ТабДок = Новый ТабличныйДокумент; СформироватьНаСервереТабДок(ТабДок); Попытка ТабДок.Записать(ДиалогВыбораФайла.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLS); Сообщить("Отчет сохранен " + ДиалогВыбораФайла.Каталог); Исключение КонецПопытки; КонецПроцедуры |
|||
31
LivingStar
04.10.19
✎
09:57
|
(25) Я не вижу там примера ((((
(30) Смотрю. |
|||
32
Василий Алибабаевич
04.10.19
✎
10:03
|
(30) Вот здесь косяк :
ТабДок.Записать(ДиалогВыбораФайла.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLS); Нужно : ТабДок.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS); или ТабДок.Записать(Результат[0],ТипФайлаТабличногоДокумента.XLS); |
|||
33
LivingStar
04.10.19
✎
10:14
|
&НаКлиенте
Процедура ПослеВыбораФайла(Результат, П) Экспорт Если Результат = Неопределено Тогда Возврат; КонецЕсли; // ИмяФайла = Результат[0]; ТабДок = Новый ТабличныйДокумент; СформироватьНаСервереТабДок(ТабДок); Попытка ТабДок.Записать(ДиалогВыбораФайла.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS); Сообщить("Отчет сохранен " + ДиалогВыбораФайла.Каталог); Исключение КонецПопытки; КонецПроцедуры {Отчет.интРеестрОбъектовЗащиты.Форма.ФормаОтчета.Форма(182,19)}: Переменная не определена (ДиалогВыбораФайла) ТабДок.Записать(<<?>>ДиалогВыбораФайла.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS); (Проверка: Тонкий клиент) {Отчет.интРеестрОбъектовЗащиты.Форма.ФормаОтчета.Форма(183,32)}: Переменная не определена (ДиалогВыбораФайла) Сообщить("Отчет сохранен " + <<?>>ДиалогВыбораФайла.Каталог); (Проверка: Тонкий клиент) |
|||
34
Василий Алибабаевич
04.10.19
✎
10:16
|
(33) Птля... см. (32)
|
|||
35
Василий Алибабаевич
04.10.19
✎
10:17
|
А-а-а-а... В Сообщить() тоже косяк.
Нужно Сообщить("Отчет сохранен " + ИмяФайла); или Сообщить("Отчет сохранен " + Результат[0]); |
|||
36
LivingStar
04.10.19
✎
11:01
|
(35) Спасибо. Первое тестирование прошло. Ошибки в (0) не было.
Утром с установкой дополнений и расширений для браузера прозанимался. Установил как получилось. Незнакомые технологии мне всегда с трудом даются. Теряюсь в описаниях. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |