Вход | Регистрация


1С:Предприятие ::

Метки: 

Как передать переменную запрос с сервера на клиент?

Я
   Elf56
 
09.11.17 - 08:22
Всем доброго времени суток.

Имеется 1С:Предприятие 8.3 (8.3.9.2170)

Есть у меня такая обработка с экспортной процедурой внутри которая автоматом подставляет текст запроса и параметры запроса в консоль запросов и открывает ее очень удобно.

Но скажем в Управляемых формах на сервере такое не получается так, как эта обработка использует функцию ПолучитьФорму() (или открытьФорму() не важно главное что происходит работа с формой на сервере)   для того, чтобы открывать консоль запросов. Если не открывать ее от туда то параметры и текст не подставятся автоматом, а в некоторых задачах просто не реально подставлять в консоль запросов большие таблицы значений как параметры руками. Так вот решил ее переделать, а вернее переменную "запрос" где хранится текст запроса, параметры и МенеджерВременныхТаблиц каким то образом отсылать с сервера на клиент, а потом уже на клиенте открывать консоль с заданным запросом. Но вот как это сделать ума не приложу.

Пробовал через ПоместитьВоВременноеХранилище(Запрос) выдает ошибку. Пробовал этот запрос сначало в соответствие а потом в ПоместитьВоВременноеХранилище не проканывает.

Так собственно вопрос, как можно передать переменную запрос с сервера на клиент?
Всем заранее спасибо за ответы.
 
 
   Филиал-msk
 
1 - 09.11.17 - 08:25
Никак.
   VladZ
 
2 - 09.11.17 - 08:26
Зачем?
   1dvd
 
3 - 09.11.17 - 08:28
На клиенте от запроса толку ноль
   Elf56
 
4 - 09.11.17 - 08:31
(3) читай внимательнее зачем я это делаю
   Elf56
 
5 - 09.11.17 - 08:32
Была другая мысля скажем записывать этот запрос в файл а потом его открывать на клиенте, но как правильно это сделать ?
   Elf56
 
6 - 09.11.17 - 08:33
(3) выполняться то он будет все равно на сервере только интерактивно
   Feunoir
 
7 - 09.11.17 - 08:33
(0) Не передавай запрос. Передавай текст запроса и параметры.
   1dvd
 
8 - 09.11.17 - 08:33
(4) похрен зачем. Читай СП

Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
   Elf56
 
9 - 09.11.17 - 08:35
(8) так я и работаю в толстом клиенте на обычных формах, только вот в модуле объекта и общих модулях с директивой сервер не работает
   Elf56
 
10 - 09.11.17 - 08:35
не работает получитьформу()
 
 Рекламное место пустует
   Elf56
 
11 - 09.11.17 - 08:36
может его можно как то привести к двоичным данным сохранить ссылку на них а потом на сервере когда нужно опять восстановить ?
   Feunoir
 
12 - 09.11.17 - 08:37
(9) Ты что-то в показаниях путаешься. В (0) ты пишешь про управляемые формы. Тут уже про обычные.
   Elf56
 
13 - 09.11.17 - 08:37
Простите ошибся
   Elf56
 
14 - 09.11.17 - 08:37
запутался
   Филиал-msk
 
15 - 09.11.17 - 08:38
(4) Ты делаешь совсем не то, что описываешь. Твоя хотелка - открыть форму и установить ей реквизиты. Для этого совсем не нужно передавать переменную типа "запрос".

Ты традиционно пришел не с проблемой, а кривым и неработающим решением и топаешь тут ножками.
   Elf56
 
16 - 09.11.17 - 08:38
Так я вот и спрашиваю у вас как мне правильно логику реализовать ?
   Elf56
 
17 - 09.11.17 - 08:40
Хорошо наверное вопрос не правильный был попробую переформулировать.
Как передать переменную запрос с одного серверного вызова в другой абсолютно в другой объект метаданных конфигурации?
   Elf56
 
18 - 09.11.17 - 08:41
конкретно с модуля объекта документа в модуль обработки?
   Филиал-msk
 
19 - 09.11.17 - 08:41
(16) Перейти ~(7);
   Elf56
 
20 - 09.11.17 - 08:42
(19) да это понятно. Тут соль в том, что нужно передавать менеджер временных таблиц. Где хранится очень много таблиц уже сформированных как его конкретно передавать ?
   Филиал-msk
 
21 - 09.11.17 - 08:43
(17) Никак. Разные серверные вызовы могут быть переадресованы на разные сервера кластера. Для сохранения обьекта в различных хранилищах требуется его иммутабельность и возможность сериализации. Тип запрос под это определение не попадает.
   Elf56
 
22 - 09.11.17 - 08:44
как раз таки когда пробовал поместитьВоВременноеХранилище ругался на менеджер временных таблиц
   Рэйв
 
23 - 09.11.17 - 08:45
(0)да запускай ты в толстом клиенте когда надо и не мучайся
   wondkind
 
24 - 09.11.17 - 08:46
Я вот мисту читаю относительно недавно и не перестаю поражаться вопросам некоторых участников сообщества, которые тут сидят по 10 лет и задают такие глупые вопросы.

Объясните, чем тут можно заниматься такой срок, чтобы не знать ответы на простейшие вопросы?
   Рэйв
 
25 - 09.11.17 - 08:47
(24)За 10 лет бывает такой нюанс, что "знал, но забыл":-)
   Elf56
 
26 - 09.11.17 - 08:47
(24) хорошо если для тебя это простейший вопрос ответь мне на ~(20)???
   Филиал-msk
 
27 - 09.11.17 - 08:50
(26) Хочу делить на ноль, но проклятая 1С не даёт мне этого сделать! Кто знает как поделить на ноль?
... Пауза ...
Что, неужели никто не сталкивался?
... Пуаза ...
Я думал это форум специалистов!
   Elf56
 
28 - 09.11.17 - 08:51
(27) ты в курсе что делить на ноль можно если стремиться к бесконечности?
   VladZ
 
29 - 09.11.17 - 08:51
(26) Зачем передавать менеджер временных таблиц на клиента?
   Сияющий в темноте
 
30 - 09.11.17 - 08:51
менеджер временных таблиц не сериализуется,а вот его таблицы прекрасно сериализуются
   Филиал-msk
 
31 - 09.11.17 - 08:51
(28) Почему 1С мне это не позволяет? Мне! Надо!
   VladZ
 
32 - 09.11.17 - 08:53
(28) ты путаешь причину и следствие.
   Elf56
 
33 - 09.11.17 - 08:54
(29) да не на клиент а с одного серверного вызова на другой в заголовке темы опечатка.

(30) заранее ты же не знаешь их структуру, а их очень много и все они разные, как с этим быть ?

(31) поищи где то была обрабтка
 
 
   FIXXXL
 
34 - 09.11.17 - 08:55
(20) ну открой уже Запросник какой-нить да посмотри
если объяснения не понятны
   VladZ
 
35 - 09.11.17 - 08:56
(0) Запросы пытаешься отлаживать? Судя по объемам - скорей всего ЗУПовские запросы.
   Филиал-msk
 
36 - 09.11.17 - 08:56
(33) Мне надо здесь и сейчас, я специально за этим пришел на форум! Что, никто этого не делал, что-ли?
   Elf56
 
37 - 09.11.17 - 08:59
(36) хорош нести бред, а то забанят
   Филиал-msk
 
38 - 09.11.17 - 09:00
(37) Самокритично, уважаю.
   lodger
 
39 - 09.11.17 - 09:01
(37) себя забань )
а вообще открой для себя ХранилищеЗначения.
   Провинциальный 1сник
 
40 - 09.11.17 - 09:03
Суть в том, что на клиент с сервера и обратно можно передать только сериализуемые объекты и контекст формы. Ни менеджер ВТ, ни запрос к сериализуемым объектам не относятся.
   lodger
 
41 - 09.11.17 - 09:04
   Провинциальный 1сник
 
42 - 09.11.17 - 09:08
(33) "с одного серверного вызова на другой"
Всё не так просто как кажется. Серверных процессов может быть много, и не факт что они на одном сервере. И не факт что второй вызов будет обрабатывать тот же процесс, который обрабатывал первый. Соответственно, передавать можно лишь такие данные, которые могут быть сериализованы (представлены в виде файла).
   Elf56
 
43 - 09.11.17 - 09:13
(42) а если думать логически в какой тип данных можно преобразовать не сериализованные значения?
   Филиал-msk
 
44 - 09.11.17 - 09:16
(43) Зависит от смысла, который ты вкладываешь в "преобразовать".
   Провинциальный 1сник
 
45 - 09.11.17 - 09:18
(43) Сериализовать можно что-то, что хранится в памяти сервера, а не то, к чему обращается сервер. Открытые курсоры на сервере баз данных никак не сериализуешь. Или запущенную через ole внешнюю программу. Или tcp-соединение с сервером в интернете.
   Elf56
 
46 - 09.11.17 - 09:18
Как я понял записать в файл либо поместить в хранилище значений не получится ?
   Elf56
 
47 - 09.11.17 - 09:20
(45) понял смысл т.е. менеджер временных таблиц это ссылка на данные в памяти сервера для каждого серверного вызова и если соответственно будет другой серверный вызов то и данных по этой ссылке там уже не будет ?
   rudnitskij
 
48 - 09.11.17 - 09:20
(44) еще важно, что автор понимает под словом "логически"
   Сияющий в темноте
 
49 - 09.11.17 - 09:21
вообще,вопрос интересный
времегные таблицв должны жить в скл сервере,а он на все сеансы один
так что тут вопрос с кластером просто глупость
их вообще с скл сервера не нужно доставать
 
 Рекламное место пустует
   lodger
 
50 - 09.11.17 - 09:22
(47) не совсем правильная цепочка мыслей, но вывод верный.
МВТ это список ссылок на таблицы(в 1с), которые держит СУБД(это уже не 1с) в памяти или кеше.
   lodger
 
51 - 09.11.17 - 09:24
(49) в (41) по ссылке ругалово на ограничение платформой передавать МВТ куда ни попадя.
   Филиал-msk
 
52 - 09.11.17 - 09:24
(49) ты ещё предложи их между разными соединениями с sql сервером общими сделать.
   Провинциальный 1сник
 
53 - 09.11.17 - 09:31
(49) Я так понимаю, что МВТ это как некая общая часть уникального идентификатора временной таблицы на sql-сервере. В результате разные запросы могут использовать одни и те же ВТ. А впоследствии, при автоматическом вызове деструктора объекта МВТ, все временные таблицы, которые к нему прицеплены, с sql-сервера удаляются. А поскольку глобальных переменных на сервере нет, то деструктор вызовется в любом случае при завершении серверного вызова. И сериализовать тут бесполезно - данные уже потеряны.
   Провинциальный 1сник
 
54 - 09.11.17 - 09:34
+(53) Если только вытаскивать значения этих временных таблиц в какие-то хранилища, а потом их обратно засовывать.. Ну это для серьезных баз вообще неприменимо. Вот и не сделали такую возможность. Но вручную сериализуйте - флаг вам в руки.
   Филиал-msk
 
55 - 09.11.17 - 09:38
(53) Верно.
Даже больше - следующий серверный вызов может прийти на другую машину кластера, он будет выполнен в другом соединении с sql сервером. Что делает удержание временных таблиц после ухода с сервера бессмысленным.
   MM
 
56 - 09.11.17 - 09:39
(55) А разве временные таблицы СКЛ не бывают глобальными, тогда их можно использовать из других соединений?
   Филиал-msk
 
57 - 09.11.17 - 09:43
(56) Бывают. Ты хочешь получать испорченные данные и портить данные соседям?
   Филиал-msk
 
58 - 09.11.17 - 09:44
В контексте трехзвенки 1С
   АНДР
 
59 - 09.11.17 - 09:44
(56) а в не клиент-серверном варианте что делать?
   novichok79
 
60 - 09.11.17 - 09:52
(0) сохраняй запрос во временный файл, потом открывай на клиенте из файла.
   Филиал-msk
 
61 - 09.11.17 - 09:54
(60) Краткое содержание предыдущих серий:

Изаура - молодая, красивая девушка, но, к несчастью, она - рабыня, принадлежащая властному и суровому командору Алмейде и его семье. Жена командора забрала Изауру в свой дом еще маленькой крошкой и воспитала девочку, она очень любит Изауру, она дала ей светское образование, научила манерам, наукам. Изаура прекрасно поет и играет на рояле. Она могла бы сравниться с любой сеньоритой из высшего общества, самая большая ее мечта - стать свободной, получить вольную. Донья не раз просила мужа сделать это, но командор Алмейда все время откладывает освобождение Изауры. Сын командора, Леонсио, давно заглядывается на Изауру, не дает ей прохода, несмотря на то, что женат на чудесной девушке по имени Малвина, которая тоже прекрасно относится к Изауре. Леонсио - челове суровый, властный, Желающий только развлекаться и красиво жить. Много лет назад командор добивался матери Изауры, но она отвергла его и предпочла стать женой управляющего фазендой, дона Мигела. Поэтому командор не слишком то привязан к Изауре - она напоминает ему свою мать. которая умерла сразу после ее рождения...
   Провинциальный 1сник
 
62 - 09.11.17 - 10:00
(57) В принципе и с глобальными ВТ можно обеспечить локальную видимость, например добавлением идентификатора сеанса к имени ВТ. Временные файлы разных экземпляров 1с в одном каталоге нормально уживаются.
   VladZ
 
63 - 09.11.17 - 12:45
(61) гы-гы-гы...  По памяти писал? Или скопипастил?
   Elf56
 
64 - 09.11.17 - 12:53
(60) это как я его сохраню в файл если он не сериализуемый?
   Ц_У
 
65 - 09.11.17 - 12:56
(64) текст запроса храни в макете обработки
   ejikbeznojek
 
66 - 09.11.17 - 13:15
(63) Он из 1С выгрузил)
   Elf56
 
67 - 09.11.17 - 13:29
(65) да с текстом запроса и параметрами вобще нет не каких проблем тут проблема в менеджере временных таблиц что его нельзя передать
   Провинциальный 1сник
 
68 - 09.11.17 - 15:28
(67) Как вариант, можно несериализуемый МВТ возвращать из модуля с повторным использованием значений. Только осторожнее надо быть, нужно проверять наличие таблиц в МВТ. Ибо кэш повторного использования прокисает рано или поздно, и МВТ при очередном возврате будет создан заново - пустой. Или если серверный вызов перенаправится на другой серверный процесс.



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует