7.7 Выполнить процедуру через OLE

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем evgPinsk, 16 ноя 2012.

  1. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    У меня есть 2 конфигурации. Обмен данными между ними осуществляю через OLE. В конфигурации №1 есть работающая процедура ИмпортДанных, которая вызывается из этой конфигурации. Мне хочется реализовать выполнение данной процедуры из конфигурации №2. Можно ли как-то запустить выполнение "внешней" процедуры через OLE ?
  2. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Через EvalExpr. Только процедура должна быть экспортной глобального модуля и с параметрами не всё так гладко.

    P.S. Есть ещё ExecuteBatch.
  3. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Т.е. если процедура описана в модуле формы документа, то к ней обратится не получится? Переносить её в глоабльный модуль не хочется. Получается выход только: копировать текст процедуры во вторую конфигурацию?
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Не получиться. Более того, даже без ОЛЕ (в пределах одной конфигурации) вы не сможете обратиться к процедуре формы не из контекста этой формы.
  5. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Жаль, обьектно-ориентированное программирование появилось раньше чем 1с :). Программисты 1с не могли о нём не знать )
  6. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    А если данную процедуру ИмпортДанных() убрать из модуля формы документа и поместить в обработку и запускать её из процедуры ПриОткрытии() данной обработки? Т.е. когда я хочу выполнить ИмпортДанных(), я должен открыть эту обработку и процедура выполнится.
    Точно также я могу и через ОЛЕ открывать эту обработку и ИмпортДанных() будет выполнятся?
    Мысль моя верная? Такое может работать?
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  8. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Что-то не получается через ОЛЕ открыть форму обработки. Делаю так:
    Код:
    Прог =СоздатьОбъект("v77.Application");
    Прог.Initialize(...);
    Прог.ОткрытьФорму("Обработка.ИмпортДокумента",параметр);
    последняя строка выдаёт ошибку: "Неверное число параметров"
    Если параметр убираю - ошибка "Типы не совпадают"
  9. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Пробую по другому:

    команда="ОткрытьФорму(""Обработка.ИмпортДокумента"",Параметр)";
    Прог.ExecuteBatch(команда);
    теперь действие проходит без ошибок, но чтото реакции никакой - передача управления форме не происходит
  10. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    и более упращённо, без передачи параметра в форму:
    Код:
    команда="ОткрытьФорму(""Обработка.ИмпортДокумента"")";
    Прог.ExecuteBatch(команда);
    передача управления обработке внешней конфигурации не происходит. Процедура внейшней обработки ПриОткрытии() не выполняется.
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    вас выше предупреждали, что с параметрами не все так просто....
    Что передаем в качестве параметра?
  12. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    А можно ли вообще открыть форму через ОЛЕ? Куда форма будет открываться?
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Теоретически да. Во всяком случае процедуры отрабатывают
  14. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Понимаю что неправильно:
    Код:
    Параметр=ТекущийДокумент().НомерДок;
    команда="ОткрытьФорму(""Обработка.ИмпортДокумента"",Параметр)";
    Прог.ExecuteBatch(команда);
    Подскажите, как передать параметр ?
  15. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    193
    Симпатии:
    0
    Баллы:
    26
    Дошёл:
    Код:
    Параметр=ТекущийДокумент().НомерДок;
    команда="ОткрытьФорму(""Обработка.ИмпортПрихНакл"","+Строка(Параметр)+")";
    
    Всё заработало, спасибо

Поделиться этой страницей