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


#0 by Elf56
Всем доброго времени суток. Имеется 1С:Предприятие 8.3 (8.3.9.2170) Есть у меня такая обработка с экспортной процедурой внутри которая автоматом подставляет текст запроса и параметры запроса в консоль запросов и открывает ее очень удобно. Но скажем в Управляемых формах на сервере такое не получается так, как эта обработка использует функцию ПолучитьФорму (или открытьФорму не важно главное что происходит работа с формой на сервере)   для того, чтобы открывать консоль запросов. Если не открывать ее от туда то параметры и текст не подставятся автоматом, а в некоторых задачах просто не реально подставлять в консоль запросов большие таблицы значений как параметры руками. Так вот решил ее переделать, а вернее переменную "запрос" где хранится текст запроса, параметры и МенеджерВременныхТаблиц каким то образом отсылать с сервера на клиент, а потом уже на клиенте открывать консоль с заданным запросом. Но вот как это сделать ума не приложу. Пробовал через ПоместитьВоВременноеХранилище(Запрос) выдает ошибку. Пробовал этот запрос сначало в соответствие а потом в ПоместитьВоВременноеХранилище не проканывает. Так собственно вопрос, как можно передать переменную запрос с сервера на клиент? Всем заранее спасибо за ответы.
#1 by Филиал-msk
Никак.
#2 by VladZ
Зачем?
#3 by 1dvd
На клиенте от запроса толку ноль
#4 by Elf56
читай внимательнее зачем я это делаю
#5 by Elf56
Была другая мысля скажем записывать этот запрос в файл а потом его открывать на клиенте, но как правильно это сделать ?
#6 by Elf56
выполняться то он будет все равно на сервере только интерактивно
#7 by Feunoir
Не передавай запрос. Передавай текст запроса и параметры.
#8 by 1dvd
похрен зачем. Читай СП Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
#9 by Elf56
так я и работаю в толстом клиенте на обычных формах, только вот в модуле объекта и общих модулях с директивой сервер не работает
#10 by Elf56
не работает получитьформу
#11 by Elf56
может его можно как то привести к двоичным данным сохранить ссылку на них а потом на сервере когда нужно опять восстановить ?
#12 by Feunoir
Ты что-то в показаниях путаешься. В ты пишешь про управляемые формы. Тут уже про обычные.
#13 by Elf56
Простите ошибся
#14 by Elf56
запутался
#15 by Филиал-msk
Ты делаешь совсем не то, что описываешь. Твоя хотелка - открыть форму и установить ей реквизиты. Для этого совсем не нужно передавать переменную типа "запрос". Ты традиционно пришел не с проблемой, а кривым и неработающим решением и топаешь тут ножками.
#16 by Elf56
Так я вот и спрашиваю у вас как мне правильно логику реализовать ?
#17 by Elf56
Хорошо наверное вопрос не правильный был попробую переформулировать. Как передать переменную запрос с одного серверного вызова в другой абсолютно в другой объект метаданных конфигурации?
#18 by Elf56
конкретно с модуля объекта документа в модуль обработки?
#19 by Филиал-msk
Перейти ~;
#20 by Elf56
да это понятно. Тут соль в том, что нужно передавать менеджер временных таблиц. Где хранится очень много таблиц уже сформированных как его конкретно передавать ?
#21 by Филиал-msk
Никак. Разные серверные вызовы могут быть переадресованы на разные сервера кластера. Для сохранения обьекта в различных хранилищах требуется его иммутабельность и возможность сериализации. Тип запрос под это определение не попадает.
#22 by Elf56
как раз таки когда пробовал поместитьВоВременноеХранилище ругался на менеджер временных таблиц
#23 by Рэйв
да запускай ты в толстом клиенте когда надо и не мучайся
#24 by wondkind
Я вот мисту читаю относительно недавно и не перестаю поражаться вопросам некоторых участников сообщества, которые тут сидят по 10 лет и задают такие глупые вопросы. Объясните, чем тут можно заниматься такой срок, чтобы не знать ответы на простейшие вопросы?
#25 by Рэйв
За 10 лет бывает такой нюанс, что "знал, но забыл":-)
#26 by Elf56
хорошо если для тебя это простейший вопрос ответь мне на ~???
#27 by Филиал-msk
Хочу делить на ноль, но проклятая 1С не даёт мне этого сделать! Кто знает как поделить на ноль? ... Пауза ... Что, неужели никто не сталкивался? ... Пуаза ... Я думал это форум специалистов!
#28 by Elf56
ты в курсе что делить на ноль можно если стремиться к бесконечности?
#29 by VladZ
Зачем передавать менеджер временных таблиц на клиента?
#30 by Сияющий в темноте
менеджер временных таблиц не сериализуется,а вот его таблицы прекрасно сериализуются
#31 by Филиал-msk
Почему 1С мне это не позволяет? Мне! Надо!
#32 by VladZ
ты путаешь причину и следствие.
#33 by Elf56
да не на клиент а с одного серверного вызова на другой в заголовке темы опечатка. заранее ты же не знаешь их структуру, а их очень много и все они разные, как с этим быть ? поищи где то была обрабтка
#34 by FIXXXL
ну открой уже Запросник какой-нить да посмотри если объяснения не понятны
#35 by VladZ
Запросы пытаешься отлаживать? Судя по объемам - скорей всего ЗУПовские запросы.
#36 by Филиал-msk
Мне надо здесь и сейчас, я специально за этим пришел на форум! Что, никто этого не делал, что-ли?
#37 by Elf56
хорош нести бред, а то забанят
#38 by Филиал-msk
Самокритично, уважаю.
#39 by lodger
себя забань ) а вообще открой для себя ХранилищеЗначения.
#40 by Провинциальный 1сник
Суть в том, что на клиент с сервера и обратно можно передать только сериализуемые объекты и контекст формы. Ни менеджер ВТ, ни запрос к сериализуемым объектам не относятся.
#41 by lodger
о. так МВТ же еще обладает бонусом.
#42 by Провинциальный 1сник
"с одного серверного вызова на другой" Всё не так просто как кажется. Серверных процессов может быть много, и не факт что они на одном сервере. И не факт что второй вызов будет обрабатывать тот же процесс, который обрабатывал первый. Соответственно, передавать можно лишь такие данные, которые могут быть сериализованы (представлены в виде файла).
#43 by Elf56
а если думать логически в какой тип данных можно преобразовать не сериализованные значения?
#44 by Филиал-msk
Зависит от смысла, который ты вкладываешь в "преобразовать".
#45 by Провинциальный 1сник
Сериализовать можно что-то, что хранится в памяти сервера, а не то, к чему обращается сервер. Открытые курсоры на сервере баз данных никак не сериализуешь. Или запущенную через ole внешнюю программу. Или tcp-соединение с сервером в интернете.
#46 by Elf56
Как я понял записать в файл либо поместить в хранилище значений не получится ?
#47 by Elf56
понял смысл т.е. менеджер временных таблиц это ссылка на данные в памяти сервера для каждого серверного вызова и если соответственно будет другой серверный вызов то и данных по этой ссылке там уже не будет ?
#48 by rudnitskij
еще важно, что автор понимает под словом "логически"
#49 by Сияющий в темноте
вообще,вопрос интересный времегные таблицв должны жить в скл сервере,а он на все сеансы один так что тут вопрос с кластером просто глупость их вообще с скл сервера не нужно доставать
#50 by lodger
не совсем правильная цепочка мыслей, но вывод верный. МВТ это список ссылок на таблицы(в 1с), которые держит СУБД(это уже не 1с) в памяти или кеше.
#51 by lodger
в по ссылке ругалово на ограничение платформой передавать МВТ куда ни попадя.
#52 by Филиал-msk
ты ещё предложи их между разными соединениями с sql сервером общими сделать.
#53 by Провинциальный 1сник
Я так понимаю, что МВТ это как некая общая часть уникального идентификатора временной таблицы на sql-сервере. В результате разные запросы могут использовать одни и те же ВТ. А впоследствии, при автоматическом вызове деструктора объекта МВТ, все временные таблицы, которые к нему прицеплены, с sql-сервера удаляются. А поскольку глобальных переменных на сервере нет, то деструктор вызовется в любом случае при завершении серверного вызова. И сериализовать тут бесполезно - данные уже потеряны.
#54 by Провинциальный 1сник
+ Если только вытаскивать значения этих временных таблиц в какие-то хранилища, а потом их обратно засовывать.. Ну это для серьезных баз вообще неприменимо. Вот и не сделали такую возможность. Но вручную сериализуйте - флаг вам в руки.
#55 by Филиал-msk
Верно. Даже больше - следующий серверный вызов может прийти на другую машину кластера, он будет выполнен в другом соединении с sql сервером. Что делает удержание временных таблиц после ухода с сервера бессмысленным.
#56 by MM
А разве временные таблицы СКЛ не бывают глобальными, тогда их можно использовать из других соединений?
#57 by Филиал-msk
Бывают. Ты хочешь получать испорченные данные и портить данные соседям?
#58 by Филиал-msk
В контексте трехзвенки 1С
#59 by АНДР
а в не клиент-серверном варианте что делать?
#60 by novichok79
сохраняй запрос во временный файл, потом открывай на клиенте из файла.
#61 by Филиал-msk
Краткое содержание предыдущих серий: Изаура - молодая, красивая девушка, но, к несчастью, она - рабыня, принадлежащая властному и суровому командору Алмейде и его семье. Жена командора забрала Изауру в свой дом еще маленькой крошкой и воспитала девочку, она очень любит Изауру, она дала ей светское образование, научила манерам, наукам. Изаура прекрасно поет и играет на рояле. Она могла бы сравниться с любой сеньоритой из высшего общества, самая большая ее мечта - стать свободной, получить вольную. Донья не раз просила мужа сделать это, но командор Алмейда все время откладывает освобождение Изауры. Сын командора, Леонсио, давно заглядывается на Изауру, не дает ей прохода, несмотря на то, что женат на чудесной девушке по имени Малвина, которая тоже прекрасно относится к Изауре. Леонсио - челове суровый, властный, Желающий только развлекаться и красиво жить. Много лет назад командор добивался матери Изауры, но она отвергла его и предпочла стать женой управляющего фазендой, дона Мигела. Поэтому командор не слишком то привязан к Изауре - она напоминает ему свою мать. которая умерла сразу после ее рождения...
#62 by Провинциальный 1сник
В принципе и с глобальными ВТ можно обеспечить локальную видимость, например добавлением идентификатора сеанса к имени ВТ. Временные файлы разных экземпляров 1с в одном каталоге нормально уживаются.
#63 by VladZ
гы-гы-гы...  По памяти писал? Или скопипастил?
#64 by Elf56
это как я его сохраню в файл если он не сериализуемый?
#65 by Ц_У
текст запроса храни в макете обработки
#66 by ejikbeznojek
Он из 1С выгрузил)
#67 by Elf56
да с текстом запроса и параметрами вобще нет не каких проблем тут проблема в менеджере временных таблиц что его нельзя передать
#68 by Провинциальный 1сник
Как вариант, можно несериализуемый МВТ возвращать из модуля с повторным использованием значений. Только осторожнее надо быть, нужно проверять наличие таблиц в МВТ. Ибо кэш повторного использования прокисает рано или поздно, и МВТ при очередном возврате будет создан заново - пустой. Или если серверный вызов перенаправится на другой серверный процесс.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С