|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
Может кто сталкивался с необходимостью импортировать в Excel данные из 1С? Конструкция Код: vbnet 1.
нормально работает. Однако неинтересно открывать несколько экземпляров 1С, когда нужная база уже открыта. Тем более, есть опасение, что не слишком квалифицированные пользователи что-нть сотворят не то. Пробовал и так и сяк, Код: vbnet 1.
но неизменно получаю "429 ActiveX component can't create object" (Debug.Print Err.Number & " " & Err.Description). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 08:45 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
И что из того, что у пользователя "нужная база уже открыта"? Ведь он с ней работает в это время. Вы же и открываете отдельное соединение для того, чтобы его полностью контролировать программно. И открывайте в инвизибл-режиме, чтобы пользователь даже не видел, что происходит. Импорт сделали - сразу закрывайте соединение, нечего ему висеть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 09:13 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
AndreTM, Тут еще такой момент - и одна-то база довольно долго чирикает, пока открывается на компе пользователей (просьба воздержаться от рекомендаций заменить им машины на более мощные), а уж две, а то и три вообще все ресурсы съедают. Пока да. Используем "obj1C.Connect.Close", но при таком подходе базы закрывается тоже далеко не сразу (минуты две-три). Вручную закрыть получается гораздо быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 09:44 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
Витал, а это опечатка или в коде у Вас действительно не VB, а V 8 (цифра восемь)? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 10:59 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
The_Prist, К сожалению, опечатка. В коде все правильно - V 8 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 15:00 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
Витал, А как насчет не импорта из 1С в Excel, а экспорта в формат Excel средствами 1С? Пишете небольшую внешнюю обработку, прикручиваете к базе - а Экзелем только забираете сформированные файлы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:12 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
AndreTM, С экспортом проблем нет. Как правило, стараемся так и делать. Но! Проблемы есть с общим доступом к данному конкретному файлу. Чтобы сохранить изменения надо его открыть для записи, а он уже может быть кем-то открыт (и чаще всего именно так и есть - открывают и не закрывают в течение всего дня) и этот кто-то кое-что там правит. При этом другие тоже могут смотреть файл в течение всего рабочего дня с доступом только для чтения и при этом хотят иметь возможность получать актуальную информацию. Источник данных в этом файле не один только 1С - он всего лишь один ИЗ... А так бы и не заморачивались с решением этой проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 17:44 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
Витал, а почему не используете импорт ч-з внешние данные с сервера? Поди ведь не файловая база, а скл? ----- Не люблю Progress OpenEdge. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 18:51 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
ВиталПроблемы есть с общим доступом к данному конкретному файлу. Чтобы сохранить изменения надо его открыть для записи, а он уже может быть кем-то открыт (и чаще всего именно так и есть - открывают и не закрывают в течение всего дня) и этот кто-то кое-что там правит. При этом другие тоже могут смотреть файл в течение всего рабочего дня с доступом только для чтения и при этом хотят иметь возможность получать актуальную информацию. Источник данных в этом файле не один только 1С - он всего лишь один ИЗ...Ничего не понял из перечисленного вами... Если вы экспортируете данные (пусть даже в xls-файл) - то для дальнейшей работы именно этот файл становится источником данных , а отнюдь не рабочим полем для битвы юзеров за ресурсы. А "что-то там править" юзер должен иметь право только в своих файликах, подтягивая в них информацию из имеющегося экспортированного. Если же вы "замутили" неповоротливую систему одного файла Excel, с общим доступом, с импортом данных их множества источников... тут одно выражение только политкоррекно: "кто вам такую архитектуру проектировал?" ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 19:11 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
Может Вы тип(класс) неверно указываете? Может надо как-то так: Код: vbnet 1.
или навроде того. Вполне возможно, что класс Application не может быть использован для подключения к уже запущенному экземпляру(я в 1С не очень, поэтому лишь догадки). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 20:35 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
AndreTM, Да. Сначала не совсем понял о чем речь. Однако предложенный подход все равно не решает проблему обновления информации пользователями "...при этом хотят иметь возможность получать актуальную информацию" . Т.к. все равно придется открывать 1С (у кого не был открыт), потом файл внешней обработки и запускать экспорт, а в этом случае почему бы не напрямую шуровать данные в общий файл и на фиг тогда буферный? Также и с другими источниками - открываем, экспортируем. Собственно, нет желания здесь обсуждать иные подходы. В конце концов есть простое начальственное ХОЧУ! "Хочу, чтобы все в одном месте и по одной кнопочке, а не ковырять инструкции - открой это, нажми то, закрой это, открой другое... Надо, чтобы нажал большую кнопку в конечном фале и получил результат". Понимаю, что "новичку заказывают калькулятор и он пишет Excel, профи пишет ровно калькулятор, а гуру умеет убедить начальство в том, что калькулятор им нафиг не нужен", однако вариант гуру у меня не прокатил. Приходится писать калькулятор и именно в таком виде, как хочет начальство. The_Prist, Спасибо, но эффект тот же: "429 ActiveX component can't create object" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2013, 09:16 |
|
Получить объект GETOBJECT(, "vb2.application")
|
|||
---|---|---|---|
#18+
Задача решена. В общем-то, получается "Знай и люби...". Вроде в ADODB нет драйвера для доступа к базам 1С, поэтому я такой подход даже не рассматривал и соответственно не искал аналог в 1С, а он там есть. Поэтому для доступа к инфе требуется создать объект класса COMConnector. Что-то типа: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
То есть при таком подходе по барабану открыт 1С или нет. Ничего потом закрывать не требуется, да и работает быстрее. Вроде как. Еще не сравнивали с созданием и закрытием приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2013, 15:35 |
|
|
start [/forum/topic.php?fid=61&msg=38325030&tid=2174676]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 151ms |
0 / 0 |