Приконнектился из 8.2 в 8.1, ну, допустим, в режиме v81.Application, и надо мне выполнить некий код там, куда я приконнектился. И тут мне заявляют, что метод Выполнить, равно как и Execute, ему неизвестен.
Это я торможу или это багфича общеизвестная? И если второе, то как выходить из положения?
(2) Ага, в конфигурации, которая на поддержке без возможности изменения?
Или мне, извиняюсь, создать внешнюю обработку, где в модуле есть экспортируемая Выполнение(ТекстКода), которая собственно пинает Выполнить, загнать эту обработку в макет вызывающего модуля, сохранять из макета при запуске, запускать КомСоединение.ВнешниеОбработки.Создать(ИмяЭтойОбработки), и потом Обработка.Выполнение???
Согласись, изврат.
То есть как бы можно, но я искренне надеюсь на более прямые пути. Кроме того, это надо иметь права запуска внешних обработок, а сию дыру в последнее время стали затыкать.
(3) Проблемы вообще не вижу...если надо то измени конфу, сделай процедуру, поставь заново на поддержку. при сильном желании это процедуру можно автоматизировать.
(7) Нель-зя. Таково условие задачи. Иначе ёжику понятно решение. :)
(5) Для задач обмена. Вот смотри: есть две базы 8.1, и надо мне выполнить нечто такое, что подходящих процедур нету и средства встроенного языка не дают. Ну, допустим, те же ВнешниеОбработки.Создать (они ведь только в 8.2 стали доступны на внешнем соединении). Или просто тупо что-то поделать такое, что иначе не достать, а только через Выполнить.
И как я это сделаю?
На самом деле, есть несколько действий, которые выполнить из внешнего соединения нельзя, не экспортируются они у 1С никак. Но если ТипЗнч или Тип я ещё выкручусь, то с Выполнить - неясно.
Интерес, конечно, весьма спортивный, ибо задачу свою я решил ещё до заведения темы, но хочу понять - я тормоз или не совсем?
ага, ага. по-подробней, пожалуйста, как дошли до такой надобности.
конфа с поддержкой без изменений - понятно
подключиться к ней - понятно
что-то сделать в ней - понятно
а вот все вместе - нифига
(11) Коллеги, ну вы внимательно читать-то умеете? То, что нужно мне, НЕ РАБОТАЕТ через COM-соединение, и уж тем более мне ни к чему та примитивная лажа, которая по ссылке и которую любой за пару минут наваяет, потому что она выполняет код на стороне вызывающей ИБ, а не на стороне вызываемой.
Ещё раз, для невнимательных:
Конструкция ИмяКомСоединителя.Выполнить(ТекстКода) НЕ РАБОТАЕТ. Знает ли кто-то способ решения или умный способ обхода этой проблемы?
хочется выругатся и матюкнутся...(12) ты сам хоть читаешь, что умные люди пишут (8) - через коннектор и выполнять код на стороне вызываемой, если менять конфу не хочешь, и внешние обработки тебе не нравятся...а то странно как-то получается ты такой умный, и ежикам все понятно, а сказано четко, Выполнить не работает в глобальном контексте на стороне вызываемой...звони в 1С, что я могу еще сказать или дизасми dll-ки 1с-ские...вот мне надо чтобы встроенный язык запросов 1С подцеплял внешние таблицы и sql clr понимал, но только от моего хотения код 1С не поменяется...если получится обойти проблему скажи...
ЗЫ Я сталкивался с подобной проблемой, когда делал подключение из программы на c# и ничего лучше процедуры придумать не смог.
ЗЫ вообще как говорил один мой знакомый - вечер пятницы и суббота священны, их бог придумал для отдыха, так, что всем счастливых выходных.
(13) Набор эмоций. Цитата "8" - это моя реплика и есть.
Выполнять на стороне вызываемой нельзя. Вызывать внешние обработки в com-соединении 8.1 нельзя. Если ваш ответ в том, чтобы декомпилить dll типовой 1С, то спасибо, прервём дискуссию, шалом увраха вэшабат шалом.
(14) шабат шалом ;) без обид, не было дискуссии, я ошибся кстати -(9) цитата не 8, насчет dll это я неудачно пошутил...но насчет проблемы подумаю...может чего придумаю.
(16) Нет, никаких "защит" или их обходов. Это обычный обмен.
Пример кода, ну, допустим, такой:
ТипОбъектаВИсточникеСтрокой="Справочник.Контрагенты"; // определяется динамически, исходя из сложных условий
ТипОбъектаВИсточникеТипом=Неопределено;
COM_Источник.Выполнить("ТипОбъектаВИсточникеТипом=ТипЗнч("""+ТипОбъектаВИсточникеСтрокой+""")"); // это главное
Если ТипОбъектаВИсточникеТипом<>Неопределено Тогда
МетаОбъектВИсточнике=COM_Источник.Метаданные.НайтиПоТипу(ТипОбъектаВИсточникеТипом);
КонецЕсли;
Варианты иного способа найти метаданные не предлагайте, они и так очевидны. Я просто привёл один из случаев, которые мне нужны. Опять же, как определить ТипЗнч или Тип другими способами, тоже знаю, но пример, надеюсь, понятен.
(17) Какой-то извращенный способ поиска объекта метаданных, когда можно сделать и через объект "метаданные"... Можнов все таки привести тот случай, когда без "выполнить" сделать нельзя?