|
Вопрос к Гуру. Передать данные с Сервера к клиенту | ☑ | ||
---|---|---|---|---|
0
Zender911
25.04.14
✎
17:01
|
Приветствую. Никак не получается решить следующую задачу. Работа через веб интерфейс в браузере. Т.е. есть сервак находится в одном городе. Есть клиент, который находится
в другом городе и через веб интерфейс коннектится к 1С. Есть Процедура выполняется на сервере, примерный код ниже: &НаСервере Процедура СосНаСервере() Соединение = Новый COMОбъект("ADODB.Connection"); ConnectionString ="DRIVER={MySQL ODBC 5.3 ANSI Driver};Server=http://www.ttt-ppp.com; |Port=3306;Database=test;User=****; Password=*******; |Option=3;" ; Попытка Соединение.Open(ConnectionString); Сообщить("Соединение осуществлено в "+ТекущаяДата()); Исключение сообщить("Невозможно установить соединение"); Возврат; КонецПопытки; ТекстЗапроса = "select login,suma,kolvo,name,price from oldzakaz where numberzak='"+сокрЛП(Объект.НомерЗаказа)+"' "; тзсайт= новый таблицазначений; тзсайт.Колонки.Добавить("Логин"); тзсайт.Колонки.Добавить("сумма"); тзсайт.Колонки.Добавить("Колво"); тзсайт.Колонки.Добавить("Наим"); тзсайт.Колонки.Добавить("Цена"); ТЗдок= новый таблицазначений ; ТзДок.Колонки.Добавить("Логин"); НаборЗаписей = Новый COMОбъект("ADODB.RecordSet"); Сет2 = Новый COMОбъект("ADODB.RecordSet"); Сет3 = Новый COMОбъект("ADODB.RecordSet"); НаборЗаписей.ActiveConnection = Соединение; НаборЗаписей.Open(ТекстЗапроса); Пока не НаборЗаписей.Eof() Цикл Попытка Текст = Новый ТекстовыйДокумент; Текст.Прочитать("C:\temp.txt"); текст.Очистить(); Исключение Текст = Новый ТекстовыйДокумент; Текст.Записать("C:\temp.txt"); КонецПопытки; Для каждого СТТ ИЗ ТзСайт ЦИКЛ СН=справочники.Номенклатура; Нс=СН.НайтиПоРеквизиту("НаимДляСайта",СТТ.Наим); если Нс=СН.ПустаяСсылка() тогда сообщить("Товар не найден "+ строка(СТТ.Наим)); Попытка текст.ДобавитьСтроку("Товар не найден "+ строка(СТТ.Наим)); Исключение КонецПопытки; конецЕсли; Попытка текст.Записать("С:\temp.txt"); Исключение КонецПопытки; Как-то так, привел только основной код. Вообщем файлик temp.txt Создается на сервере. А мне нужно чтобы он создавался на клиентской машине. Как это можно реализовать ? |
|||
1
Wobland
25.04.14
✎
17:05
|
поместить файл во временное хранилище, получить файл из временного хранилища
|
|||
2
Aswed
25.04.14
✎
17:06
|
(0) Как и при подборе только в обратную сторону.
Временное хранилище. |
|||
3
Wobland
25.04.14
✎
17:06
|
гыыы
&НаКлиенте Процедура Показать(Команда) #Если ВебКлиент Тогда Предупреждение("Не доделано, не додумано"); #Иначе Если НЕ ЭтоАдресВременногоХранилища(АдресФайла) Тогда Возврат; КонецЕсли; ВременноеИмя=ПолучитьИмяВременногоФайла(РасширениеФайла); ПолучитьФайл(АдресФайла, ВременноеИмя, Ложь); ЗапуститьПриложение(ВременноеИмя); #КонецЕсли КонецПроцедуры |
|||
4
H A D G E H O G s
25.04.14
✎
17:09
|
(3) Зачем Веб-клиента обидел?
|
|||
5
Zender911
25.04.14
✎
17:11
|
Не совсем понял как это реализовать. Есть кнопка при нажатии на которую срабатывает эта процедура. Т.е. если я напишу, что-то типа
ПоместитьВоВременноеХранилище(текст, УникальныйИдентификатор); А дальше, что ? как заставить в этой же процедуре отдать файл клиенту ? |
|||
6
ДенисЧ
25.04.14
✎
17:12
|
(5) Отдать клиенту результат этой функции, а на клиенте ПолучитьИзВременногоХРанилища()
|
|||
7
Wobland
25.04.14
✎
17:13
|
(4) хм.. а чо это я действительно?
Доступность: Тонкий клиент, веб-клиент |
|||
8
Zender911
25.04.14
✎
17:18
|
Отдать клиенту результат этой функции, а на клиенте ПолучитьИзВременногоХРанилища()
У меня не функция, а процедура, которую я привел. И все нужно реализовать в ней. Или это невозможно ? |
|||
9
ДенисЧ
25.04.14
✎
17:19
|
(8) Синтаксис:
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>) ..... Возвращаемое значение: Тип: Строка. ЗЫ. И эти люди обижаются, когда их назывют тупыми.... |
|||
10
Zender911
25.04.14
✎
17:23
|
&НаСервере
Процедура Сос() ------+--------------------- Попытка текст.ДобавитьСтроку("Товар не найден "+ строка(СТТ.Наим)); Исключение КонецПопытки; конецЕсли; Попытка текст.Записать("С:\temp.txt"); Исключение КонецПопытки; ПоместитьВоВременноеХранилище(текст, уникальныйИдентификатор); Конецпроцедуры ну поместил а дальше, что о, кладезь мудрости ? |
|||
11
H A D G E H O G s
25.04.14
✎
17:26
|
АдресВХ=ПоместитьВоВременноеХранилище(текст, уникальныйИдентификатор);
Возврат АдресВХ; |
|||
13
ДенисЧ
25.04.14
✎
17:26
|
&НаСервере
Процедура Сос(ать) ... ать=ПоместитьВоВременноеХранилище(текст, уникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура Сделать() ать = ""; Сос(ать); файл = ПолучиьтИзВременногоХранилища(ать); |
|||
14
H A D G E H O G s
25.04.14
✎
17:27
|
&НаКлиенте
Процедура Показать(Команда) АдресВХ=Сос(); ПолучитьФайл(АдресВХ,, ИСТИНА); Все. |
|||
15
H A D G E H O G s
25.04.14
✎
17:27
|
(13) Еще один аленистый.
|
|||
16
H A D G E H O G s
25.04.14
✎
17:29
|
ДенисЧ, тыбы на курсы сходил штоле.
Потом после тебя наплачуться погроммисты и понапрокленают тебя. Оно вроде и работает, но чуется стиль. |
|||
17
ДенисЧ
25.04.14
✎
17:32
|
(16) Стиль. Единственный. Неповторимый. Мой.
Что могут дать курсы, на которых преподают люди, которые пешком под стол ходили, когда я в первый раз взял в руки клаву? |
|||
18
H A D G E H O G s
25.04.14
✎
17:32
|
(17) Твой код кстати, бесполезен автору.
|
|||
19
H A D G E H O G s
25.04.14
✎
17:35
|
Попытка
текст.Записать("С:\temp.txt"); Двоичное=Новый ДвоичныеДанные("С:\temp.txt"); Исключение КонецПопытки; АдресВХ=ПоместитьВоВременноеХранилище(Двоичное, уникальныйИдентификатор); Возврат АдресВХ; |
|||
20
ДенисЧ
25.04.14
✎
17:42
|
(19) Это тем более, если он на сервере выполняется
|
|||
21
Zender911
25.04.14
✎
17:47
|
Возврат АдресВХ; У меня процедура, а не функция. Возврат не прокатит.
Да туплю малость, конец дня... Вроде что-то вырисовывается, спасибо за советы... |
|||
22
H A D G E H O G s
25.04.14
✎
17:51
|
(21) Какая разница, переделай на функцию.
Вообще у тебя идеальней сделать внеконтекстный вызов, а имя временного файла на сервере доверить формировать 1С через ПолучитьИмяВременногоФайла() и Двоичные помещать на 1 вызов, через АдресВХ=ПоместитьВоВременноеХранилище(Двоичное); чтобы потом он зачистился, если тебе не нужен. |
|||
23
DexterMorgan
25.04.14
✎
17:56
|
Мда..про ПоместитьФайл никто и не слышал походу
|
|||
24
H A D G E H O G s
25.04.14
✎
17:58
|
(23) Еще один из лесу вышел.
|
|||
25
Зойч
25.04.14
✎
18:03
|
По задаче из (0) нужно лог создавать на сервере а потом по окончании передать на клиента файл
|
|||
26
Fragster
гуру
25.04.14
✎
19:52
|
вы все такие милые тут :)
|
|||
27
Torquader
25.04.14
✎
20:10
|
Вопрос - а что мешает с сервера на клиента просто передать строку - ведь текстовый файл - это набор строк.
Если целый файл не пролазит, то массив строк пролезет на ура без всяких временных файлов и хранилищ. P.S. у меня несколько листов Excel превращаются в массив и улетают на клиента, где впихиваются по OLE в Excel и никаких "танцев с бубнами". |
|||
28
H A D G E H O G s
25.04.14
✎
21:16
|
(27) Иногда не пролазит :-)
(26) Ооо, привет, ты вернулся! |
|||
29
Torquader
25.04.14
✎
22:33
|
(28) Верю, что одна строка большой длины не пролезет, а вот почему может не пролезть массив коротких строк ? (Если, конечно, общее число символов в них за 1 миллион не перевалит).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |