powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / 1С 8.1 СОМ взаимодействие и программирование на встроенном языке
29 сообщений из 29, показаны все 2 страниц
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37396449
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправьте если не туда написал.

Ситуация такая : Имеется я 1С версии 8.1, необходимо взаимодействие с ней из нашего приложения. Подключение, работа с формами, конфигуратор на чтение доступны. Проблема с поиском активного экземляра окна. Решение моей задачи возможно 2-мя путями

1) Если сможете подсказать как в 8.1 получить объект текущего окна. Тобишь где то в коде открывается окно и мне необходимо получить его экземляр. В 8.2 есть удобная функция АктвиноеОкно() возращающая его, но в 8.1 она отствует. Так же не подходит вариант с поиском формы по уникальному идентификаотору. Форма открывается просто заданием имени и владельца. Документы.Документ1.ПолучитьФорму("НУЖНАЯФОРМА", ЭтаФорма) без 3-го аргумента по которому можно было бы получить это окошко. Вариант с добавлением 3-го параметка данной функции не подходит, база должна быть без изменений.

2) Переписать процедуру обработки кнопки открывающей окно чтобы в момнет ПолучитьФорму() иметь её экземляр. Но здесь хранится камень, все бы было хорошо но в коде процедуры вызов варификации входных данных в нескольких процедурах с глубиной вызова 30% кода модуля, что пока переписывать не хочется. И процедуры НЕ Экспортные... Тобишь если сможете дать вариант вызова не экспортной процедуры то этого будет за глаза...

Поэтому инструментарий которым можно его выцыпить :
1) конфигуратор на чтение (можно найти что нада)
2) Hwnd окна появляющегося
3) Title заголовок окна пояляющегося
4) Экземляр формы Главного окна. (Можно дёргать методы и работать с её контекстом)
5) Можно дёргать любые методы ГлобальногоКонтекста.

И еще вариант с вызовом метода "Выполнить" не пройдёт..

Заранее Спасибо за помощь..
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397366
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно как то можно получить список Открытых форм ? Либо получить форму открытую по какому либо параметру. Гугл сказал что можно по какому то "Общему аттрибуту" найти форму... Но ничего не вышло
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397381
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДобрыйКот,
Не очень понятно зачем вам это нужно. Может обрисуете проблему и задачу.
Малоли кто что открывает, зачем нужно это отслеживать?
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397406
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dinamo,
В режиме предприятие речь идет о сеансе. Насколько мне известно возможностей подключения к сеансу и отслеживания событий конкретного сеанса во встроенном языке программирования 1С8 - нет.
Соединение COM происходит в отдельном сеансе и о других сеансах "ничего не знает".
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397539
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно для досточно тревиальной задачи.

В Окне нашего приложения "хостится" окно 1С-ки, тоесть на одной из вкладок нашего приложения находится главная форма 1С-ки. Так вот, требуется в одну из форм открывающихся после нескольких окошек задать значения полей. Доступ к актибутам имеется но доступен если я буду иметь экземпляр формы. Тоесть что то типо :

Форма = Документ.ДокументКакойто.ПолучитьФорму("ФормаКакаяТо");

Тут "Форма" - это объект типо форма который мне нада получить... Просто открыть форму без проблем таким образом, но в момнет отрытия не только поялвяется форма но и проходит валидация данных на форме ИЗ под которой отрывается нужное окно. И валедацию переписать сложновато будет ((

И результат данных мучений : Кнопчка какя то в нашем приложении при нажатии на котороую я заполню значния атрибутов...
Подумываю чтобы через WinAPI заполнить значнеия формы но в одной из предыыдущих форм точно нада рабоать с атрибутами, для заполнения, поэтому пока с WinAPI не берусь работать...
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397547
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DinamoСоединение COM происходит в отдельном сеансе и о других сеансах "ничего не знает".

Возможно не правильно называю и соединение взаимодейсвтия как по другому назвается, но из под СОМ объекта стартующейся 1С-ки доступен весь Глобальный контекст её..
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397608
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DinamoDinamo,
о сеанса во встроенном языке программирования 1С8 - нет.

Код типо того получается

dynamic _MW = _type1c.InvokeMember("АктивноеОкно", BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod, null, _instance1c, new object[] { });

dynamic _content = _MW.ПолучитьСодержимое();

object str = _content.Объект.НаименованиеАкции;

_content.Объект.НаименованиеАкции = "123";

Код типо того будет, для заполнения атрибута НоименованиеАкции в 8.2. Нада провернуть что то подобное для 8.1
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397617
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДобрыйКот,
И так если я правильно понял у вас стоит задача передать в систему 1С некоторые данные, которые впоследствии системой 1С каким то образом должны быть сохранены и отработаны.
Подход работы через непосредственное использование форм вы создать не сможете.
Рекомендую данную задачу решать другим способом.
В своей системы вы делаете формы для ввода определенных данных, часть которых должна отобразиться в режиме онлайн в систему 1С. При записи данных в свою систему вы запускаете через COM (OLE) сеанс приложения и используя объектную модель и возможности языка программирования создаете в системе 1С соответствующие объекты, производите заполнение значений реквизитов и табличных частей этих объектов, выполняете процедуры данных объектов.
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397631
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за Ответы ! Но, по конфиденциальной причине не могу показать наскока много там данных в одной тока Главной форме (самописной) поэтому переписать внутренние события формы главной, чтобы потом знать что заполнять в последующей это сложновастая идея... Но все равно спасибо за попытку направить в нужное русло...

Возможно как то можно получить список всех активных окон ? Тогда я бы по значение родителя мог бы идетифицировать её.
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397633
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДобрыйКотDinamoСоединение COM происходит в отдельном сеансе и о других сеансах "ничего не знает".

Возможно не правильно называю и соединение взаимодейсвтия как по другому назвается, но из под СОМ объекта стартующейся 1С-ки доступен весь Глобальный контекст её..

Не весь. Во первых, не доступны никакие объекты пользовательского интерфейса.Но можно вызывать 1С не как Com-объект, а как OLE-Automation, интерфейсные объекты в этом случае есть.
А во-вторых - никакой сеанс ничего про другие сеансы все равно не знает. Хоть родной 1с-клиент, хоть подключение из сторонней программы - это еще один клиентский сеанс, полностью изолированный от других.
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397652
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pailА во-вторых - никакой сеанс ничего про другие сеансы все равно не знает. Хоть родной 1с-клиент, хоть подключение из сторонней программы - это еще один клиентский сеанс, полностью изолированный от других.

Если честно не знаю почему нельзя в пределах сеанса СОМ соедиения (А может и правльно назвал OLE-Automation) дергать методы, но весь глобальный контекст дёргается удачно...
Форма открывается в сеансе СОМ (OLE-Automation) Соединения, и доступны вызываемые методы...
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397662
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И приэтом имеется экземпляр формы Главного окна, типа "Форма", у которой можно дёргать любые методы...
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397671
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДобрыйКотЕсли честно не знаю почему нельзя в пределах сеанса СОМ соедиения (А может и правльно назвал OLE-Automation) дергать методы, но весь глобальный контекст дёргается удачно...
Форма открывается в сеансе СОМ (OLE-Automation) Соединения, и доступны вызываемые методы...

Вы уж определитесь, что именно используете:
СОМ - это CreateObject("V82.COMConnector"), невидимый и без форм.
А OLE со всеми формами - это CreateObject("V82.Application"), да еще свойство Visible для управления видимостью пользовательского интерфейса.
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397673
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pailДобрыйКотЕсли честно не знаю почему нельзя в пределах сеанса СОМ соедиения (А может и правльно назвал OLE-Automation) дергать методы, но весь глобальный контекст дёргается удачно...
Форма открывается в сеансе СОМ (OLE-Automation) Соединения, и доступны вызываемые методы...

Вы уж определитесь, что именно используете:
СОМ - это CreateObject("V82.COMConnector"), невидимый и без форм.
А OLE со всеми формами - это CreateObject("V82.Application"), да еще свойство Visible для управления видимостью пользовательского интерфейса.

CreateObject("V82.Application") - Оно..
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397717
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДобрыйКотCreateObject("V82.Application") - Оно..

а то недоумение появляется от использования слов COM и Формы в одном контексте.

С формами в режиме Управляемого Приложения 8.2 можно сделать много, больше, чем в режиме Обычного (который в 8.1; в режиме Обычного Приложения платформы 8.2 метод АктивноеОкно() тоже бесполезен).
А если задача ставится именно как
- платформа 8.1
- конфигурация не изменяется
- и работать можно только с видимыми элементами форм,
... тут уж непонятно, что посоветовать.

"база должна быть без изменений" - но можно свой внешний модуль сделать, который будет работать с нужными данными нужной конфигурации, но при этом выглядеть максимально похоже на существующую в конфигурации форму, и иметь закладки для взаимодействия с вашим приложением
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397743
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pailА если задача ставится именно как
- платформа 8.1
- конфигурация не изменяется
- и работать можно только с видимыми элементами форм,
... тут уж непонятно, что посоветовать.


Все так...

pail"база должна быть без изменений" - но можно свой внешний модуль сделать, который будет работать с нужными данными нужной конфигурации, но при этом выглядеть максимально похоже на существующую в конфигурации форму, и иметь закладки для взаимодействия с вашим приложением

Опять же получается переписывание очень большого объема кода 1С-ки... АктивноеОкно() спасло бы... Но все равно Спасибо Большое Всем откликнувшимся...

Но предложения решения данной проблемы еще актуальны...
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397825
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДобрыйКот
Опять же получается переписывание очень большого объема кода 1С-ки... АктивноеОкно() спасло бы... Но все равно Спасибо Большое Всем откликнувшимся...

Но предложения решения данной проблемы еще актуальны...

Ну от чего же - "большого объема"?
Если хотя бы минимальные вмешательства в конфигурацию возможны, то:
- перевести базу с движка 8.1 на движок 8.2
- снять у конфигурации режим совместимости с 8.1. Интерфейс пользователей при этом останется прежним, "обычным"
...и если проблем при этом не выявится, то можно,не трогая существующие "обычные" формы, делать свои дополнительные, уже управляемые - со всеми нужными вкусностями. Которые смогут работать одновременно с "обычными"
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397865
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pailНу от чего же - "большого объема"?
Если хотя бы минимальные вмешательства в конфигурацию возможны, то:
- перевести базу с движка 8.1 на движок 8.2
- снять у конфигурации режим совместимости с 8.1. Интерфейс пользователей при этом останется прежним, "обычным"
...и если проблем при этом не выявится, то можно,не трогая существующие "обычные" формы, делать свои дополнительные, уже управляемые - со всеми нужными вкусностями. Которые смогут работать одновременно с "обычными"

Заказщик с неохотой доступ к конфигуратору то дал, а о том чтобы ему перенести все на 8.2 и речи не идёт :) Эта организация очень крупная и у всех на слуху и тратить лишние лимоны не будет.

Пока что рассматриваю вариант такой :
Ловлю момнет открытия окна "Окно1", тут же посылаю ему событие "Закройся" после чего стартую новую форму уже из своего кода и имея полный доступ к её реквизитам. Но придётся плясать с кодом кторый идёт после её открытия
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397912
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДобрыйКот
Заказщик с неохотой доступ к конфигуратору то дал, а о том чтобы ему перенести все на 8.2 и речи не идёт :) Эта организация очень крупная и у всех на слуху и тратить лишние лимоны не будет.



ни о каком переносе, да еще дорогостоящем, речи нет. Здесь - о попытке запустить существующую конфигурацию без всяких изменений на новой платформе (которая в том числе и для этого предназначена). Заработает - отлично, не заработает - значит, нет такого варианта; Поставить тогда ей "совместимость с 8.1", и пусть работает дальше. На более современном движке, чем 8.1.15.14
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397945
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДобрыйКот,
Еще раз повторю свой совет, не изобретайте велосипед.
Если вы знаете какие объекты в системе 1С каким образом должны измениться при работе вашего приложения используйте предложенный ваше механизм работы с сущностями 1С8 через OLE.
При нормальном проектировании В 1С8 ничего переписывать не придется, всю логику передачи данных в 1С и выполнения операций над объектами вы реализуете в своем приложении. Главное четко понимать как данные в вашей системе ложатся на сущности и реквизиты той конфигурации (приложения) в которое вам нужно данные передать.
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397951
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dinamo,

Еще раз благодарю за идеи, этот вариант буду иметь ввиду !
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37397998
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форма это лишь интерфейс представления и манипуляции данными.
Её алгоритмы могут обладать очень сложной логикой, реквизиты на форме не всегда могут однозначно быть сопоставимы с реквизитами прикладных объектов.
Куда проще обращаться "напрямую" с объектной моделью, минуя формы.
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37398112
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Впринцепе согласен насчет изменения объектной модели напрямую, но проанализировав понял 2 вещи

1) Как создать объект типа "запрос" не понятно. Или как вообще создать какой то новый объект через оператор "Новый" не понятна... На примере модели взаимосвязи ОЛЕ.

2) В Одной из форм необходимо ввести результат и ждать дополнительных действий пользователя... Перепилить форму опять же придётся с пониманием уже её внутренней логики :) А я в 1С программирвоании 0,5 и сложно даётся код на русском. Плюс не знаю как, имея доступ к конфигуратору поглядеть значения данных, тоесть там есть таблицы и не ясно как бы их прочитать. Что нить встроенного SQLManager-а нету там ? Там есть "Табличные части" Но как из прочитать хз...

В 3-х словах 2-й пункт если бы подсказал был бы Благодарен. Хотябы слово которое в гугл вбивать
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37398158
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДобрыйКотВпринцепе согласен насчет изменения объектной модели напрямую, но проанализировав понял 2 вещи

1) Как создать объект типа "запрос" не понятно. Или как вообще создать какой то новый объект через оператор "Новый" не понятна... На примере модели взаимосвязи ОЛЕ.

2) В Одной из форм необходимо ввести результат и ждать дополнительных действий пользователя... Перепилить форму опять же придётся с пониманием уже её внутренней логики :) А я в 1С программирвоании 0,5 и сложно даётся код на русском. Плюс не знаю как, имея доступ к конфигуратору поглядеть значения данных, тоесть там есть таблицы и не ясно как бы их прочитать. Что нить встроенного SQLManager-а нету там ? Там есть "Табличные части" Но как из прочитать хз...

В 3-х словах 2-й пункт если бы подсказал был бы Благодарен. Хотябы слово которое в гугл вбивать

1.
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim connector As Object
Set connector=CreateObject("V81.Application")
db=connector.Connect("File=c:\InfoBases\Trade;Usr=Director;")
request=db.newObject("Запрос","выбрать ссылка,номер,дата из Документ.РеализацияТоваровУслуг где Дата между &дат1 и &дат2")
request.УстановитьПараметр("дат1",data1)


ну, и так далее.
2. Можно и не перепиливать существующую форму - а назначать ей свои обработчики событий(в том числе и программно, во время исполнения),в которых и ловить нужные изменения.
Посмотреть на данные можно:
- при отладке, через просмотр значений в точке останова (если интересуют именно свойства объектов, как данных, так и любых других объектов и значений)
- запросы можно писать и исполнять хотя бы в КонсолиЗапросов с ИТС - чтобы как минимум на данные взглянуть
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37398162
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДобрыйКот
В 3-х словах 2-й пункт если бы подсказал был бы Благодарен. Хотябы слово которое в гугл вбивать

Гугл не нужен. Достаточно спокойно и внимательно почитать описание языка - хоть в книжке, хоть в синтаксис-помощнике. Поставив в "параметры--Справка" "Использовать оба языка" - чтобы не смущаться программированием "на русском".
Хотя книжки уровня от "простых приемов разработки" до "Профессиональная разработка в 1С:Предприятие" - будут весьма полезны
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37398178
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для помощи в 1С позовите специалиста, быстрее сможете решить нужную задачу.
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37398246
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Информации досточно. Всем еще раз Спасибо !
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37403960
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, не стану создавть тему, но как узнать тип контрола ?

Тоесть я имею "Форма1" и обхожу по списку её контролов (Кнопки списки и тд), пседокод 1С 8.1 :

Для каждого элемент в Форма1.ЭлементыФормы делать
элемент.Доступность = false;
конеццикла

Но это досточно весомо тормозит форму изза обилия элементов. Вариант - Деквтивировать тока кнопки... Но как по "элемент" понять что это кнопка ? Пока в голове методо : пробовать обратиться к методу который есть тока у кнопок и если получаю исключение то это не кнопка и элемент не трогать.. Но это глупо как то
...
Рейтинг: 0 / 0
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
    #37403963
ДобрыйКот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тормоза в момент перерисовки...
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / [игнор отключен] [закрыт для гостей] / 1С 8.1 СОМ взаимодействие и программирование на встроенном языке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]