Взаимодействие с запущенным 1С-приложением

1. robix 23.05.17 11:29 Сейчас в теме
Здравствуйте. В windows существует возможность взаимодействовать с запущенным приложением. Например с Outlook, Excel и.т.д.
Как я понял с 1С тоже можно взаимодействовать таким образом. Но как именно пока не понятно. Собрав некоторую информацию и почитав эту статью https://its.1c.ru/db/metod8dev/content/1902/hdoc пришел к выводу, что по умолчанию 1С не дает такой возможности, и нужно писать для нее внешнюю компоненту, которая должна попасть в список активных com-объектов и через нее взаимодействовать с запущенным 1С приложением.
Например, нужно заполнить определенные реквизиты на форме в 1С из другой программы.
Кто вкурсе, подскажите такой ли принцип? Или это как-то по-другому работает.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spe1c 5 23.05.17 11:48 Сейчас в теме
Через СОМ объект 1С предприятия (он и так есть, без внешних компонент) можно в него данные загонять, но потребуется программировать на стороне 1С
3. spe1c 5 23.05.17 11:54 Сейчас в теме
Собрав некоторую информацию

Мало собрали информации, вот тут всё подробно написано:
http://streletzcoder.ru/rabota-s-1s-v-c-sposob-1-rabota-s-obektnoy-modelyu-1s/

Внешние компоненты конечно тоже можно использовать,но их отдельно нужно писать.
4. robix 23.05.17 12:32 Сейчас в теме
Спасибо. Но это не та ситуация. Я говорю про Automation Client/Server, но с той разницей, что когда выполняется CreateObject("V82.Application"), то создается новое соединение. А есть еще в windows подключение к существующему соединению и взаимодействие с существующим процессом.
8. blackhole321 1305 24.05.17 11:13 Сейчас в теме
9. robix 24.05.17 18:01 Сейчас в теме
(8)
Спасибо. Принцип понятен.
Посмотрел. Там ряд фалов. Если вы в курсе напишите пожалуйста, ка ее загрузить в 1С, и потом после загрузки где в 1С принимать от нее переданные извне get запросы.
10. blackhole321 1305 24.05.17 19:18 Сейчас в теме
(9)Вы имеете ввиду в архиве? Если да - то это и есть внешняя компонента. Помещаете ее в макет типа двоичные данные, затем вызываете УстановитьВнешнююКомпоненту и ПодключитьВнешнююКомпоненту.
5. spe1c 5 23.05.17 20:36 Сейчас в теме
Если, например, по аналогии со сканерами штрихкода, писать данные в открытую форму, то да - писать внешнюю компоненту, чтобы через неё посылать форме данные, вызывая обработчик внешнего события.

Но, как я уже писал, можно сделать обходной маневр, если внешнюю компоненту писать неохота и при этом есть возможность вносить изменения в конфигурацию 1С. Смысл в том, что через COM вы пишете данные в какой-то служебный объект в базе, например в регистр сведений, а на открытую форму вешаете обработчик ожидания. Форма периодически опрашивает этот регистр на предмет появившихся данных и при их появлении заполняет себя. Это конечно костыль тот еще, но если очень нужно - можно попробовать. А правильно через внешнюю компоненту.
6. quick 583 23.05.17 22:29 Сейчас в теме
Вот недавно заделал для себя, может подойдет https://github.com/WorldException/v7SimpleAddIn
7. robix 24.05.17 10:54 Сейчас в теме
Спасибо за советы.
Евгений, как я понял в этой процедуре 1С постоянной опрашивает сообщения от вашей программы.
Процедура ОбработкаВнешнегоСобытия(а,п,в)
Сообщить("ОБРАБОТКА:"+а+" "+п+" "+в);
КонецПроцедуры


Если это так, то напишите пожалуйста можно ли передавать вашему процессу текстовой параметр, для того, чтобы он отправил его в 1С.
По идее с запуском 1С ваш процесс уже работает. И чтобы передать в него параметр его не нужно запускать из командной строки заново?
Объясните пожалуйста как именно происходит обращение к этому процессу.
11. robix 29.05.17 12:39 Сейчас в теме
Ok. Просто никогда не делал этого. Можете поправить код, если что-то не так.
Сделал по аналогии с типовым. Вот так:


Процедура КнопкаВыполнитьНажатие(Кнопка)
	
	МакетВК = ПолучитьМакет("МакетКомпоненты");
	АдресВнешнейКомпоненты = ПоместитьВоВременноеХранилище(МакетВК, Новый УникальныйИдентификатор);
	УстановитьВнешнююКомпоненту(АдресВнешнейКомпоненты);	
	
	ВнешняяКомпонентаПодключена = ПодключитьВнешнююКомпоненту(АдресВнешнейКомпоненты, "WebExtEvent", ТипВнешнейКомпоненты.Native);
	
	ПодключаемыйМодуль = Новый("AddIn.MyComp.WebExtEvent");
	
	Сообщить("Готово");
	
КонецПроцедуры

Показать


ВнешняяКомпонентаПодключена возвращает истину.

А тут ошибка "Тип не определен (AddIn.MyComp.WebExtEvent)"
ПодключаемыйМодуль = Новый("AddIn.MyComp.WebExtEvent");

В чем тут дело?

p.s.
После подключения этой компоненты в 1С есть процедура, которая будет принимать сообщения, отправленные на этот веб-сервер ?

Цель такая, чтобы когда пользователь запустил 1С, то автоматически запустился этот веб-сервер и принимал сообщения, которые были ему отправлены по сети. И через процедуру обработки сообщения уже получить доступ к форме открытой форме пользователя.
12. spe1c 5 30.05.17 21:26 Сейчас в теме
(11)Внешние компоненты бывают созданы по технологии или СОМ или Native, если у вас первый случай то нужно регистрировать ее в системе (regsvr32). В 1С для таких случаев предусмотрена процедура ВнешнееСобытие()
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот