Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
Поправьте если не туда написал. Ситуация такая : Имеется я 1С версии 8.1, необходимо взаимодействие с ней из нашего приложения. Подключение, работа с формами, конфигуратор на чтение доступны. Проблема с поиском активного экземляра окна. Решение моей задачи возможно 2-мя путями 1) Если сможете подсказать как в 8.1 получить объект текущего окна. Тобишь где то в коде открывается окно и мне необходимо получить его экземляр. В 8.2 есть удобная функция АктвиноеОкно() возращающая его, но в 8.1 она отствует. Так же не подходит вариант с поиском формы по уникальному идентификаотору. Форма открывается просто заданием имени и владельца. Документы.Документ1.ПолучитьФорму("НУЖНАЯФОРМА", ЭтаФорма) без 3-го аргумента по которому можно было бы получить это окошко. Вариант с добавлением 3-го параметка данной функции не подходит, база должна быть без изменений. 2) Переписать процедуру обработки кнопки открывающей окно чтобы в момнет ПолучитьФорму() иметь её экземляр. Но здесь хранится камень, все бы было хорошо но в коде процедуры вызов варификации входных данных в нескольких процедурах с глубиной вызова 30% кода модуля, что пока переписывать не хочется. И процедуры НЕ Экспортные... Тобишь если сможете дать вариант вызова не экспортной процедуры то этого будет за глаза... Поэтому инструментарий которым можно его выцыпить : 1) конфигуратор на чтение (можно найти что нада) 2) Hwnd окна появляющегося 3) Title заголовок окна пояляющегося 4) Экземляр формы Главного окна. (Можно дёргать методы и работать с её контекстом) 5) Можно дёргать любые методы ГлобальногоКонтекста. И еще вариант с вызовом метода "Выполнить" не пройдёт.. Заранее Спасибо за помощь.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 18:24 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
Возможно как то можно получить список Открытых форм ? Либо получить форму открытую по какому либо параметру. Гугл сказал что можно по какому то "Общему аттрибуту" найти форму... Но ничего не вышло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 11:58 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
ДобрыйКот, Не очень понятно зачем вам это нужно. Может обрисуете проблему и задачу. Малоли кто что открывает, зачем нужно это отслеживать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 12:02 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
Dinamo, В режиме предприятие речь идет о сеансе. Насколько мне известно возможностей подключения к сеансу и отслеживания событий конкретного сеанса во встроенном языке программирования 1С8 - нет. Соединение COM происходит в отдельном сеансе и о других сеансах "ничего не знает". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 12:09 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
Нужно для досточно тревиальной задачи. В Окне нашего приложения "хостится" окно 1С-ки, тоесть на одной из вкладок нашего приложения находится главная форма 1С-ки. Так вот, требуется в одну из форм открывающихся после нескольких окошек задать значения полей. Доступ к актибутам имеется но доступен если я буду иметь экземпляр формы. Тоесть что то типо : Форма = Документ.ДокументКакойто.ПолучитьФорму("ФормаКакаяТо"); Тут "Форма" - это объект типо форма который мне нада получить... Просто открыть форму без проблем таким образом, но в момнет отрытия не только поялвяется форма но и проходит валидация данных на форме ИЗ под которой отрывается нужное окно. И валедацию переписать сложновато будет (( И результат данных мучений : Кнопчка какя то в нашем приложении при нажатии на котороую я заполню значния атрибутов... Подумываю чтобы через WinAPI заполнить значнеия формы но в одной из предыыдущих форм точно нада рабоать с атрибутами, для заполнения, поэтому пока с WinAPI не берусь работать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 13:04 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
DinamoСоединение COM происходит в отдельном сеансе и о других сеансах "ничего не знает". Возможно не правильно называю и соединение взаимодейсвтия как по другому назвается, но из под СОМ объекта стартующейся 1С-ки доступен весь Глобальный контекст её.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 13:07 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 13:29 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
ДобрыйКот, И так если я правильно понял у вас стоит задача передать в систему 1С некоторые данные, которые впоследствии системой 1С каким то образом должны быть сохранены и отработаны. Подход работы через непосредственное использование форм вы создать не сможете. Рекомендую данную задачу решать другим способом. В своей системы вы делаете формы для ввода определенных данных, часть которых должна отобразиться в режиме онлайн в систему 1С. При записи данных в свою систему вы запускаете через COM (OLE) сеанс приложения и используя объектную модель и возможности языка программирования создаете в системе 1С соответствующие объекты, производите заполнение значений реквизитов и табличных частей этих объектов, выполняете процедуры данных объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 13:33 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
Спасибо за Ответы ! Но, по конфиденциальной причине не могу показать наскока много там данных в одной тока Главной форме (самописной) поэтому переписать внутренние события формы главной, чтобы потом знать что заполнять в последующей это сложновастая идея... Но все равно спасибо за попытку направить в нужное русло... Возможно как то можно получить список всех активных окон ? Тогда я бы по значение родителя мог бы идетифицировать её. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 13:44 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
ДобрыйКотDinamoСоединение COM происходит в отдельном сеансе и о других сеансах "ничего не знает". Возможно не правильно называю и соединение взаимодейсвтия как по другому назвается, но из под СОМ объекта стартующейся 1С-ки доступен весь Глобальный контекст её.. Не весь. Во первых, не доступны никакие объекты пользовательского интерфейса.Но можно вызывать 1С не как Com-объект, а как OLE-Automation, интерфейсные объекты в этом случае есть. А во-вторых - никакой сеанс ничего про другие сеансы все равно не знает. Хоть родной 1с-клиент, хоть подключение из сторонней программы - это еще один клиентский сеанс, полностью изолированный от других. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 13:44 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
pailА во-вторых - никакой сеанс ничего про другие сеансы все равно не знает. Хоть родной 1с-клиент, хоть подключение из сторонней программы - это еще один клиентский сеанс, полностью изолированный от других. Если честно не знаю почему нельзя в пределах сеанса СОМ соедиения (А может и правльно назвал OLE-Automation) дергать методы, но весь глобальный контекст дёргается удачно... Форма открывается в сеансе СОМ (OLE-Automation) Соединения, и доступны вызываемые методы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 13:49 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
И приэтом имеется экземпляр формы Главного окна, типа "Форма", у которой можно дёргать любые методы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 13:51 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
ДобрыйКотЕсли честно не знаю почему нельзя в пределах сеанса СОМ соедиения (А может и правльно назвал OLE-Automation) дергать методы, но весь глобальный контекст дёргается удачно... Форма открывается в сеансе СОМ (OLE-Automation) Соединения, и доступны вызываемые методы... Вы уж определитесь, что именно используете: СОМ - это CreateObject("V82.COMConnector"), невидимый и без форм. А OLE со всеми формами - это CreateObject("V82.Application"), да еще свойство Visible для управления видимостью пользовательского интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 13:56 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
pailДобрыйКотЕсли честно не знаю почему нельзя в пределах сеанса СОМ соедиения (А может и правльно назвал OLE-Automation) дергать методы, но весь глобальный контекст дёргается удачно... Форма открывается в сеансе СОМ (OLE-Automation) Соединения, и доступны вызываемые методы... Вы уж определитесь, что именно используете: СОМ - это CreateObject("V82.COMConnector"), невидимый и без форм. А OLE со всеми формами - это CreateObject("V82.Application"), да еще свойство Visible для управления видимостью пользовательского интерфейса. CreateObject("V82.Application") - Оно.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 13:58 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
ДобрыйКотCreateObject("V82.Application") - Оно.. а то недоумение появляется от использования слов COM и Формы в одном контексте. С формами в режиме Управляемого Приложения 8.2 можно сделать много, больше, чем в режиме Обычного (который в 8.1; в режиме Обычного Приложения платформы 8.2 метод АктивноеОкно() тоже бесполезен). А если задача ставится именно как - платформа 8.1 - конфигурация не изменяется - и работать можно только с видимыми элементами форм, ... тут уж непонятно, что посоветовать. "база должна быть без изменений" - но можно свой внешний модуль сделать, который будет работать с нужными данными нужной конфигурации, но при этом выглядеть максимально похоже на существующую в конфигурации форму, и иметь закладки для взаимодействия с вашим приложением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 14:14 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
pailА если задача ставится именно как - платформа 8.1 - конфигурация не изменяется - и работать можно только с видимыми элементами форм, ... тут уж непонятно, что посоветовать. Все так... pail"база должна быть без изменений" - но можно свой внешний модуль сделать, который будет работать с нужными данными нужной конфигурации, но при этом выглядеть максимально похоже на существующую в конфигурации форму, и иметь закладки для взаимодействия с вашим приложением Опять же получается переписывание очень большого объема кода 1С-ки... АктивноеОкно() спасло бы... Но все равно Спасибо Большое Всем откликнувшимся... Но предложения решения данной проблемы еще актуальны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 14:23 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
ДобрыйКот Опять же получается переписывание очень большого объема кода 1С-ки... АктивноеОкно() спасло бы... Но все равно Спасибо Большое Всем откликнувшимся... Но предложения решения данной проблемы еще актуальны... Ну от чего же - "большого объема"? Если хотя бы минимальные вмешательства в конфигурацию возможны, то: - перевести базу с движка 8.1 на движок 8.2 - снять у конфигурации режим совместимости с 8.1. Интерфейс пользователей при этом останется прежним, "обычным" ...и если проблем при этом не выявится, то можно,не трогая существующие "обычные" формы, делать свои дополнительные, уже управляемые - со всеми нужными вкусностями. Которые смогут работать одновременно с "обычными" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 14:52 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
pailНу от чего же - "большого объема"? Если хотя бы минимальные вмешательства в конфигурацию возможны, то: - перевести базу с движка 8.1 на движок 8.2 - снять у конфигурации режим совместимости с 8.1. Интерфейс пользователей при этом останется прежним, "обычным" ...и если проблем при этом не выявится, то можно,не трогая существующие "обычные" формы, делать свои дополнительные, уже управляемые - со всеми нужными вкусностями. Которые смогут работать одновременно с "обычными" Заказщик с неохотой доступ к конфигуратору то дал, а о том чтобы ему перенести все на 8.2 и речи не идёт :) Эта организация очень крупная и у всех на слуху и тратить лишние лимоны не будет. Пока что рассматриваю вариант такой : Ловлю момнет открытия окна "Окно1", тут же посылаю ему событие "Закройся" после чего стартую новую форму уже из своего кода и имея полный доступ к её реквизитам. Но придётся плясать с кодом кторый идёт после её открытия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 15:06 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
ДобрыйКот Заказщик с неохотой доступ к конфигуратору то дал, а о том чтобы ему перенести все на 8.2 и речи не идёт :) Эта организация очень крупная и у всех на слуху и тратить лишние лимоны не будет. ни о каком переносе, да еще дорогостоящем, речи нет. Здесь - о попытке запустить существующую конфигурацию без всяких изменений на новой платформе (которая в том числе и для этого предназначена). Заработает - отлично, не заработает - значит, нет такого варианта; Поставить тогда ей "совместимость с 8.1", и пусть работает дальше. На более современном движке, чем 8.1.15.14 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 15:19 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
ДобрыйКот, Еще раз повторю свой совет, не изобретайте велосипед. Если вы знаете какие объекты в системе 1С каким образом должны измениться при работе вашего приложения используйте предложенный ваше механизм работы с сущностями 1С8 через OLE. При нормальном проектировании В 1С8 ничего переписывать не придется, всю логику передачи данных в 1С и выполнения операций над объектами вы реализуете в своем приложении. Главное четко понимать как данные в вашей системе ложатся на сущности и реквизиты той конфигурации (приложения) в которое вам нужно данные передать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 15:32 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
Dinamo, Еще раз благодарю за идеи, этот вариант буду иметь ввиду ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 15:36 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
Форма это лишь интерфейс представления и манипуляции данными. Её алгоритмы могут обладать очень сложной логикой, реквизиты на форме не всегда могут однозначно быть сопоставимы с реквизитами прикладных объектов. Куда проще обращаться "напрямую" с объектной моделью, минуя формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 15:51 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
Впринцепе согласен насчет изменения объектной модели напрямую, но проанализировав понял 2 вещи 1) Как создать объект типа "запрос" не понятно. Или как вообще создать какой то новый объект через оператор "Новый" не понятна... На примере модели взаимосвязи ОЛЕ. 2) В Одной из форм необходимо ввести результат и ждать дополнительных действий пользователя... Перепилить форму опять же придётся с пониманием уже её внутренней логики :) А я в 1С программирвоании 0,5 и сложно даётся код на русском. Плюс не знаю как, имея доступ к конфигуратору поглядеть значения данных, тоесть там есть таблицы и не ясно как бы их прочитать. Что нить встроенного SQLManager-а нету там ? Там есть "Табличные части" Но как из прочитать хз... В 3-х словах 2-й пункт если бы подсказал был бы Благодарен. Хотябы слово которое в гугл вбивать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 16:36 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
ДобрыйКотВпринцепе согласен насчет изменения объектной модели напрямую, но проанализировав понял 2 вещи 1) Как создать объект типа "запрос" не понятно. Или как вообще создать какой то новый объект через оператор "Новый" не понятна... На примере модели взаимосвязи ОЛЕ. 2) В Одной из форм необходимо ввести результат и ждать дополнительных действий пользователя... Перепилить форму опять же придётся с пониманием уже её внутренней логики :) А я в 1С программирвоании 0,5 и сложно даётся код на русском. Плюс не знаю как, имея доступ к конфигуратору поглядеть значения данных, тоесть там есть таблицы и не ясно как бы их прочитать. Что нить встроенного SQLManager-а нету там ? Там есть "Табличные части" Но как из прочитать хз... В 3-х словах 2-й пункт если бы подсказал был бы Благодарен. Хотябы слово которое в гугл вбивать 1. Код: plaintext 1. 2. 3. 4. 5. 6. ну, и так далее. 2. Можно и не перепиливать существующую форму - а назначать ей свои обработчики событий(в том числе и программно, во время исполнения),в которых и ловить нужные изменения. Посмотреть на данные можно: - при отладке, через просмотр значений в точке останова (если интересуют именно свойства объектов, как данных, так и любых других объектов и значений) - запросы можно писать и исполнять хотя бы в КонсолиЗапросов с ИТС - чтобы как минимум на данные взглянуть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 16:58 |
|
||
|
1С 8.1 СОМ взаимодействие и программирование на встроенном языке
|
|||
|---|---|---|---|
|
#18+
ДобрыйКот В 3-х словах 2-й пункт если бы подсказал был бы Благодарен. Хотябы слово которое в гугл вбивать Гугл не нужен. Достаточно спокойно и внимательно почитать описание языка - хоть в книжке, хоть в синтаксис-помощнике. Поставив в "параметры--Справка" "Использовать оба языка" - чтобы не смущаться программированием "на русском". Хотя книжки уровня от "простых приемов разработки" до "Профессиональная разработка в 1С:Предприятие" - будут весьма полезны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2011, 17:05 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=37396449&tid=1521098]: |
0ms |
get settings: |
4ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 327ms |

| 0 / 0 |
