|
Как в управляемых формах хранить соединения? ftp и т.п. | ☑ | ||
---|---|---|---|---|
0
toypaul
гуру
07.11.13
✎
14:06
|
Есть функция в общем модуле. Выполняется на клиенте. Функция создает управляему форму и вызывает метод для создания FTPСоединение. Затем это соединение нужно использовать в остальных функция в этой форме.
Вопрос. Как сохранить подключение, чтобы не создавать его по 100 раз? Объявить через Перем не получается. После выхода из функции создающей подключение переменная становится неопределенной (хотя форма еще живая). В параметрах формы создать не получится - нет такого типа. Передать его в параметре метода не получается - не сериализуется. Задача несколько извращенная (пытаюсь сделать некое подобие ООП на упр формах), но решить как-то надо. |
|||
1
H A D G E H O G s
07.11.13
✎
14:12
|
Ничего не понял.
|
|||
2
ДенисЧ
07.11.13
✎
14:13
|
Временное хранилищие
|
|||
3
toypaul
гуру
07.11.13
✎
14:14
|
Когда говорят "ничего не понял" обычно и не пытаются понять. По себе знаю.
|
|||
4
H A D G E H O G s
07.11.13
✎
14:14
|
Передать его в форму, не в составе <Параметры>
НоваяФорма=ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) чтобы оно не пошло гулять на сервер, а уже потом. НоваяФорма.Соединение= |
|||
5
H A D G E H O G s
07.11.13
✎
14:14
|
Ну или временное хранилище
|
|||
6
H A D G E H O G s
07.11.13
✎
14:15
|
(3) Этим я обозначил щок и трепет от того, что ты ниосилил.
Ладно, кто то другой. |
|||
7
H A D G E H O G s
07.11.13
✎
14:16
|
&НаКлиенте
Перем Соединение Экспорт; |
|||
8
toypaul
гуру
07.11.13
✎
14:17
|
как интересно временное хранилище поможет мне сохранить ПОДКЛЮЧЕННОЕ соединение?
|
|||
9
toypaul
гуру
07.11.13
✎
14:17
|
(7) вот это я могу написать в создавемой форме? чтобы записать туда соединение?
|
|||
10
toypaul
гуру
07.11.13
✎
14:18
|
щя попробую ...
|
|||
11
toypaul
гуру
07.11.13
✎
14:23
|
если коротко
Подключение = ПолучитьФорму("Обработка.Подключение.Форма.Форма"); Подключение.СоздатьПодключение(); смотрим Подключение.Соединение равно Неопределено. хотя СоздатьПодключение было Соединение = Новый FTPСоединение() все это на клиенте |
|||
12
H A D G E H O G s
07.11.13
✎
14:23
|
Мы с Денисч. надавали советом.
Причем я уверен в 2 вариантах, но на практике не использовал и не один из них. |
|||
13
H A D G E H O G s
07.11.13
✎
14:24
|
щас проверим
|
|||
14
toypaul
гуру
07.11.13
✎
14:28
|
временное хранилище не вариант. даже если каким-то чудом 1С будет из хранилища брать соединение и восстанавливать его - это какая-то бредятина
|
|||
15
H A D G E H O G s
07.11.13
✎
14:28
|
Дайте адрес какого нибудь ftp-шника.
|
|||
16
dimm7310
07.11.13
✎
14:39
|
в модуле управляемого приложения создай экспортную переменную
Я так подключение к телефонии сохраняю Перем Телефония Экспорт; |
|||
17
toypaul
гуру
07.11.13
✎
14:41
|
(16) мысль. спасибо.
|
|||
18
toypaul
гуру
07.11.13
✎
14:41
|
а имеет значение если у меня у метода СоздатьПодключение не написано &НаКлиенте?
сейчас вот написал и метод перестал быть видимым |
|||
19
toypaul
гуру
07.11.13
✎
14:42
|
не понятно ...
|
|||
20
toypaul
гуру
07.11.13
✎
14:43
|
у меня вызов СоздатьПодключение идет в процедуре общего модуля. общий модуль с галкой только Клиент (упр приложение).
|
|||
21
dimm7310
07.11.13
✎
14:44
|
(18) если не указывать явно директиву то выполняется на сервере
|
|||
22
H A D G E H O G s
07.11.13
✎
14:45
|
(20) Ничего не мешает ему вызвать сервер.
|
|||
23
toypaul
гуру
07.11.13
✎
14:45
|
тьфу зараза ...
|
|||
24
H A D G E H O G s
07.11.13
✎
14:46
|
И получилось 2 переменные Соедиенние
|
|||
25
dimm7310
07.11.13
✎
14:51
|
(23) Оставь надежду всяк на УФ переходящий
|
|||
26
Зойч
07.11.13
✎
14:53
|
Реквизит формы произвольного типа
|
|||
27
Ksandr
07.11.13
✎
14:53
|
Если есть вариант делать это на сервере то нужно использовать модуль с повторным использованием
|
|||
28
toypaul
гуру
07.11.13
✎
14:54
|
(26) не уверен
(27) это что за штука? |
|||
29
Ksandr
07.11.13
✎
14:54
|
хотя без разницы, на сервере или клиенте. Делай модуль поторного использования (на время сеанса) и все - задача решена
|
|||
30
Зойч
07.11.13
✎
14:56
|
(28) Так тебя еще и уверить нужно
|
|||
31
toypaul
гуру
07.11.13
✎
14:57
|
ошибка была в том что метод создания подключения отрабатывал на сервере. ну и переменная была объявлена тоже на сервере. как поставил везде &НаКлиенет все заработало.
спасибо всем :) |
|||
32
H A D G E H O G s
07.11.13
✎
14:59
|
(31) Тотоже, МарьИвановна.
Респект, а то бы пошел по пути кондовых Волоходских погромистов через переменную модуля приложения. |
|||
33
H A D G E H O G s
07.11.13
✎
15:09
|
Мне, чтобы это проверить, пришлось идти в Германию за ftp-серваком.
toypaul, рекомендую тебе поэкспериментировать с временных хранилищем, настоятельно. Это тебе пригодиться. А то будешь в глобальные переменные пихать. |
|||
34
wPa
07.11.13
✎
15:29
|
(33) какая гадость эта ваша заливная форма )
|
|||
35
H A D G E H O G s
07.11.13
✎
15:30
|
(34) Она прекрасна.
Вот счаст у toypaul идет просветление и разделение сред Клиент-Сервер. |
|||
36
wPa
07.11.13
✎
15:46
|
(35) с сохранением локальных переменных в бинарики )
|
|||
37
dimm7310
07.11.13
✎
16:50
|
(32) Сам ты кондовый маасквич в первом поколении
|
|||
38
serffer
07.11.13
✎
17:07
|
во временное хранилище нельзя помещать несериализуемые объекты в 8.3. в 8.2 они могут вести себя непредсказуемо(убиваться через 2-6 минут например).
|
|||
39
Infsams654
07.11.13
✎
17:21
|
(38)+ и реквизит произвольного типа "Зойч" не сереализуешь
|
|||
40
wPa
07.11.13
✎
17:25
|
(38) красота. Сейчас просветление найдет уже на Ежова )
|
|||
41
Ksandr
07.11.13
✎
17:27
|
(35) Я с этим сталкивался, только хранить нужно было COM-соединение. Повторное использование единственный стабильный вариант.
|
|||
42
H A D G E H O G s
07.11.13
✎
17:35
|
(38) Может что то и поменялось, мне фиолетово, у меня обработчик обновления каждую минуту дергает хранилище на всякий пожарный. Раньше 20 минут хранилось.
В 8.3 - да, так уже по похранишь. Ежова без хрена не съешь, wPa |
|||
43
wPa
07.11.13
✎
17:37
|
(42) хитер
|
|||
44
serffer
07.11.13
✎
18:16
|
(42) в нашем тиражном решении тоже было "раз в минуту". Тоже нестабильно оказалось(когда мало памяти на сервере вроде). Обошли по другому, но в этом случае так не прокатит.
ЕМНИП: сервер не должен хранить состояния между 2мя вызовами клиента, ну или чтото типа того(типа религия веба что ли) Автору может попробовать через регл.задания организовать постоянное подключение. |
|||
45
H A D G E H O G s
07.11.13
✎
18:21
|
(44)
1. У нас работает. 2. Автор уже проблему решил. 3. 8.3 заставляет чаще биться наши сердца. |
|||
46
dimm7310
07.11.13
✎
21:10
|
(45) " 8.3 заставляет чаще биться наши сердца." - хорошо сказал. Но это не повод устраивать лишний геморрой ради спортивного интереса.
|
|||
47
dimm7310
07.11.13
✎
21:21
|
+(46) я понимаю что мой вариант - не лучшее решение. Ищу новые.
|
|||
48
banco
07.11.13
✎
21:25
|
(0) а зачем вообще хранить ftp соединение?
|
|||
49
toypaul
гуру
13.11.13
✎
11:40
|
Подниму тему ...
Подключени-то создается и подключается, но при передаче формы (которая хранит это подключение) как параметра функции в другой метод подключение теряется. Если вызывать затем метод формы, который обращается к созданному подключению, выдается ошибка. Сначала думал какая-то проблема с подключением. Оказалось нет. Если созданное подключение использовать сразу (не передавать в составе формы дальше), то все нормально отрабатывает. Вот и получается что "обернуть" такое подключение в какую-то обертку (которой у меня была форма) не выходит. Придется по другому изворачиваться ... |
|||
50
H A D G E H O G s
13.11.13
✎
11:42
|
(49) Покажи кодом! (как трудно ты объясняешь словами)
|
|||
51
toypaul
гуру
13.11.13
✎
11:43
|
Функция ПолучитьПодключение(ПараметрПодключения) Экспорт
ИмяФормы = РаботаСВнешнимиФайламиСервер.ИмяФормыПодключения(ПараметрПодключения); Подключение = ПолучитьФорму(ИмяФормы,Новый Структура("ПараметрПодключения",ПараметрПодключения)); Возврат Подключение; КонецФункции // ПолучитьПодключение() эта функция создает "мое" подключение в виде формы |
|||
52
toypaul
гуру
13.11.13
✎
11:44
|
внутри формы
&НаКлиенте Перем ftp Экспорт; ftp = Новый FTPСоединение(ПараметрыПодключения.Адрес,,ПараметрыПодключения.Логин,ПараметрыПодключения.Пароль,,Истина); |
|||
53
toypaul
гуру
13.11.13
✎
11:45
|
потом вызываю функцию формы из общего модуля
Если Подключение.СоздатьКаталогПодключения(Параметры) Тогда Подключение.СкопироватьФайл(ФайлНаКлиенте,Параметры); КонецЕсли; |
|||
54
toypaul
гуру
13.11.13
✎
11:45
|
функция в форме
&НаКлиенте Функция СоздатьКаталогПодключения(СтрокаФайла) Экспорт Ошибка = ""; Каталог = СтрЗаменить(СтрокаФайла.Путь,"\","/"); Массив = ftp.НайтиФайлы(Каталог); Если Массив.Количество() = 0 Тогда Попытка ftp.СоздатьКаталог(Каталог); Исключение Ошибка = ОписаниеОшибки(); Возврат Ложь; КонецПопытки; КонецЕсли; Возврат Истина; КонецФункции // СоздатьКаталог() |
|||
55
toypaul
гуру
13.11.13
✎
11:47
|
на этой строке
Массив = ftp.НайтиФайлы(Каталог); выдает ошибку, что нет доступа. смотрю параметры ftp - все установлено. написал обработку для проверки ftp = Новый FTPСоединение("****",,"****","****",,Истина); Файлы = ftp.НайтиФайлы("*.*"); Для каждого файл Из Файлы Цикл Сообщить(файл.Имя); КонецЦикла; она отрабатывает нормально |
|||
56
H A D G E H O G s
13.11.13
✎
11:48
|
ftp не может разрывать соединение по таймауту?
|
|||
57
toypaul
гуру
13.11.13
✎
11:48
|
отсюда сделал вывод, что ftp при передачи в составе формы что-то "внутри" такое теряет ...
да и хер с ним. надоело уже ковыряться. по другому буду делать - чтобы метод отрабатывал без передачи подключения. |
|||
58
toypaul
гуру
13.11.13
✎
11:49
|
(56) не понял. подключение создается без ошибок. может что-то там и отключается при передаче. сие мне не ведомо.
|
|||
59
olegves
13.11.13
✎
11:55
|
(0) Повторное использование (в свойствах модуля) тебе поможет
|
|||
60
H A D G E H O G s
13.11.13
✎
11:56
|
(58)
"потом вызываю функцию формы из общего модуля Если Подключение.СоздатьКаталогПодключения(Параметры) Тогда Подключение.СкопироватьФайл(ФайлНаКлиенте,Параметры); КонецЕсли;" Потом - это когда? Через сколько секунд? |
|||
61
toypaul
гуру
13.11.13
✎
11:57
|
сразу же
|
|||
62
toypaul
гуру
13.11.13
✎
12:02
|
(59) не помогло :)
|
|||
63
toypaul
гуру
13.11.13
✎
12:04
|
+ к (62) может если бы я фтп соединение создавал непосредственно в функции этого модуля, тогда бы помогло. но мне так не подходит.
на самом деле не хватает хотя бы минимума ООП в данном случае :) |
|||
64
toypaul
гуру
13.11.13
✎
13:39
|
и снова подниму. оказывается причина в другом была.
почему-то ftp.НайтиФайлы() выдает ошибку доступа при поиске каталога ftp.НайтиФайлы("2013/11/13") ftp.НайтиФайлы("/2013/11/13") оба вызова выдают ошибку |
|||
65
H A D G E H O G s
13.11.13
✎
13:41
|
А так?
ftp.НайтиФайлы("2013\11\13") ftp.НайтиФайлы("\2013\11\13") |
|||
66
zladenuw
13.11.13
✎
13:43
|
(65) в сп как раз как в (64)
|
|||
67
toypaul
гуру
13.11.13
✎
13:43
|
в документации написано "При использовании этой схемы в адресах необходимо указывать прямые слеши '/', а не обратные '\'.
" |
|||
68
toypaul
гуру
13.11.13
✎
13:43
|
не пойму как проверить существования каталога ...
|
|||
69
zladenuw
13.11.13
✎
13:45
|
(68) УстановитьТекущийКаталог ?
|
|||
70
Serginio1
13.11.13
✎
13:50
|
(64) Ну можно рекурсивно
Файлы=Фтп.НайтиФайлы(фтп.ТекущийКаталог(),"*.*"); |
|||
71
toypaul
гуру
13.11.13
✎
13:54
|
(70) файлов дофига может быть. зачем мне все выгребать?
|
|||
72
Serginio1
13.11.13
✎
13:56
|
(71) Ну во первых проверить написание Файл.ПолноеИмя
|
|||
73
Serginio1
13.11.13
✎
13:57
|
или рекурсивно Файлы=Фтп.НайтиФайлы(фтп.ТекущийКаталог(),"2013");
|
|||
74
toypaul
гуру
13.11.13
✎
13:58
|
(72) не понял. что проверить?
какой-то фтп странный создал папку Файлы = ftp.НайтиФайлы("2013/11/12"); - ее находить если папки нет Файлы = ftp.НайтиФайлы("2013/11/13"); выдает ошибку доступа. вместо того чтобы просто ничего не возвращать ... |
|||
75
Serginio1
13.11.13
✎
14:00
|
Файлы=Фтп.НайтиФайлы("2013/11","12");
|
|||
76
toypaul
гуру
13.11.13
✎
14:02
|
(75) с папкой, которая существует, проблем нет. проблема с папкой которой нет ...
|
|||
77
Serginio1
13.11.13
✎
14:03
|
(76) Ну тогда Попытка исключение
|
|||
78
toypaul
гуру
13.11.13
✎
15:05
|
Пришлось рекурсивно устанавливать каталог и создавать новый если не вышло. Для оптимизации сначала устанавливается каталог по полному пути.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |