1. Yashazz 2889 16.02.11 22:42 Сейчас в теме

COM и встроенные функции

Приконнектился из 8.2 в 8.1, ну, допустим, в режиме v81.Application, и надо мне выполнить некий код там, куда я приконнектился. И тут мне заявляют, что метод Выполнить, равно как и Execute, ему неизвестен.
Это я торможу или это багфича общеизвестная? И если второе, то как выходить из положения?
Ответы
Избранное Подписка Сортировка: Древо
2. cool.vlad4 45 16.02.11 22:46 Сейчас в теме
(1) :D ну Яков...Да это так - создавай процедуру Выполнение(Код) --> Выполнить(Код)
3. Yashazz 2889 17.02.11 20:22 Сейчас в теме
(2) Ага, в конфигурации, которая на поддержке без возможности изменения?

Или мне, извиняюсь, создать внешнюю обработку, где в модуле есть экспортируемая Выполнение(ТекстКода), которая собственно пинает Выполнить, загнать эту обработку в макет вызывающего модуля, сохранять из макета при запуске, запускать КомСоединение.ВнешниеОбработки.Создать(ИмяЭтойОбработки), и потом Обработка.Выполнение???

Согласись, изврат.
То есть как бы можно, но я искренне надеюсь на более прямые пути. Кроме того, это надо иметь права запуска внешних обработок, а сию дыру в последнее время стали затыкать.
7. cool.vlad4 45 18.02.11 13:00 Сейчас в теме
(3) Проблемы вообще не вижу...если надо то измени конфу, сделай процедуру, поставь заново на поддержку. при сильном желании это процедуру можно автоматизировать.
8. Yashazz 2889 23.02.11 23:23 Сейчас в теме
(7) Нель-зя. Таково условие задачи. Иначе ёжику понятно решение. :)
(5) Для задач обмена. Вот смотри: есть две базы 8.1, и надо мне выполнить нечто такое, что подходящих процедур нету и средства встроенного языка не дают. Ну, допустим, те же ВнешниеОбработки.Создать (они ведь только в 8.2 стали доступны на внешнем соединении). Или просто тупо что-то поделать такое, что иначе не достать, а только через Выполнить.
И как я это сделаю?

На самом деле, есть несколько действий, которые выполнить из внешнего соединения нельзя, не экспортируются они у 1С никак. Но если ТипЗнч или Тип я ещё выкручусь, то с Выполнить - неясно.

Интерес, конечно, весьма спортивный, ибо задачу свою я решил ещё до заведения темы, но хочу понять - я тормоз или не совсем?
9. Душелов 3899 25.02.11 11:55 Сейчас в теме
(8) Тогда любой код можно выполнять через коннектор, создавая все нужные объекты и работая с ними.
10. Yashazz 2889 25.02.11 12:25 Сейчас в теме
(8) КАК? Пример можешь привести?
4. tango 484 17.02.11 22:12 Сейчас в теме
изврат заложен здесь: "мне выполнить некий код ... в конфигурации, которая на поддержке без возможности изменения"
cool.vlad4; Spartan; Душелов; +3 Ответить
5. Душелов 3899 18.02.11 01:25 Сейчас в теме
А для каких задач подобное надо?
6. tango 484 18.02.11 07:40 Сейчас в теме
ага, ага. по-подробней, пожалуйста, как дошли до такой надобности.
конфа с поддержкой без изменений - понятно
подключиться к ней - понятно
что-то сделать в ней - понятно
а вот все вместе - нифига
11. cool.vlad4 45 25.02.11 13:13 Сейчас в теме
Через Новый COMОбъект("v81.COMConnector"); Сдается мне, что здесь http://infostart.ru/public/16568/ как раз через comconnector.
12. Yashazz 2889 25.02.11 18:26 Сейчас в теме
(11) Коллеги, ну вы внимательно читать-то умеете? То, что нужно мне, НЕ РАБОТАЕТ через COM-соединение, и уж тем более мне ни к чему та примитивная лажа, которая по ссылке и которую любой за пару минут наваяет, потому что она выполняет код на стороне вызывающей ИБ, а не на стороне вызываемой.
Ещё раз, для невнимательных:
Конструкция ИмяКомСоединителя.Выполнить(ТекстКода) НЕ РАБОТАЕТ. Знает ли кто-то способ решения или умный способ обхода этой проблемы?
13. cool.vlad4 45 25.02.11 22:29 Сейчас в теме
хочется выругатся и матюкнутся...(12) ты сам хоть читаешь, что умные люди пишут (8) - через коннектор и выполнять код на стороне вызываемой, если менять конфу не хочешь, и внешние обработки тебе не нравятся...а то странно как-то получается ты такой умный, и ежикам все понятно, а сказано четко, Выполнить не работает в глобальном контексте на стороне вызываемой...звони в 1С, что я могу еще сказать или дизасми dll-ки 1с-ские...вот мне надо чтобы встроенный язык запросов 1С подцеплял внешние таблицы и sql clr понимал, но только от моего хотения код 1С не поменяется...если получится обойти проблему скажи...
ЗЫ Я сталкивался с подобной проблемой, когда делал подключение из программы на c# и ничего лучше процедуры придумать не смог.
ЗЫ вообще как говорил один мой знакомый - вечер пятницы и суббота священны, их бог придумал для отдыха, так, что всем счастливых выходных.
14. Yashazz 2889 25.02.11 22:40 Сейчас в теме
(13) Набор эмоций. Цитата "8" - это моя реплика и есть.
Выполнять на стороне вызываемой нельзя. Вызывать внешние обработки в com-соединении 8.1 нельзя. Если ваш ответ в том, чтобы декомпилить dll типовой 1С, то спасибо, прервём дискуссию, шалом увраха вэшабат шалом.
15. cool.vlad4 45 25.02.11 22:50 Сейчас в теме
(14) шабат шалом ;) без обид, не было дискуссии, я ошибся кстати -(9) цитата не 8, насчет dll это я неудачно пошутил...но насчет проблемы подумаю...может чего придумаю.
19. ups3 30.03.11 13:45 Сейчас в теме
20. Spartan 338 30.03.11 14:11 Сейчас в теме
(19) Бот? 2 содержательнейших сообщения за 2 дня...
21. cool.vlad4 45 30.03.11 14:13 Сейчас в теме
(20) Тоже обратил внимание :D ...(19) Сколько будет 2 + "" + 3? ;)
16. Душелов 3899 26.02.11 00:08 Сейчас в теме
(12) Можно пример кода?
Или это все идет к "типа защита" конфигурации?
17. Yashazz 2889 27.02.11 12:44 Сейчас в теме
(16) Нет, никаких "защит" или их обходов. Это обычный обмен.
Пример кода, ну, допустим, такой:

ТипОбъектаВИсточникеСтрокой="Справочник.Контрагенты"; // определяется динамически, исходя из сложных условий
ТипОбъектаВИсточникеТипом=Неопределено;
COM_Источник.Выполнить("ТипОбъектаВИсточникеТипом=ТипЗнч("""+ТипОбъектаВИсточникеСтрокой+""")"); // это главное
Если ТипОбъектаВИсточникеТипом<>Неопределено Тогда
МетаОбъектВИсточнике=COM_Источник.Метаданные.НайтиПоТипу(ТипОбъектаВИсточникеТипом);
КонецЕсли;

Варианты иного способа найти метаданные не предлагайте, они и так очевидны. Я просто привёл один из случаев, которые мне нужны. Опять же, как определить ТипЗнч или Тип другими способами, тоже знаю, но пример, надеюсь, понятен.
18. Душелов 3899 28.02.11 09:48 Сейчас в теме
(17) Какой-то извращенный способ поиска объекта метаданных, когда можно сделать и через объект "метаданные"... Можнов все таки привести тот случай, когда без "выполнить" сделать нельзя?
cool.vlad4; +1 Ответить
22. cool.vlad4 45 03.06.11 10:14 Сейчас в теме
вчера копался в обработке и выполнял код через xml
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Ведущий программист 1С
Омск
зарплата от 70 000 руб. до 110 000 руб.
Полный день

Программист 1С
Екатеринбург
зарплата до 120 000 руб.
Полный день

Консультант-аналитик 1С
Рязань
зарплата до 80 000 руб.
Полный день

Программист 1С
Рязань
зарплата от 90 000 руб.
Полный день