1с неудачная попытка создания объекта
Всем доброго времени суток. В общем проблема такая: Win 2003 server, самописная конфига (условно ТиС) и Бухгалтерия. Платформа 7.70.027. Из ТиС в Бухгалтерию выгружаются доки через OLE. На прошлой неделе все чудно работало, а после выходных выдало при попытке открытия базы OLE "Неудачная попытка создания объекта (V77.Application)". Это вот на такой строчке кода: БазаОле=СоздатьОбъект("V77.Application"); Платформа SQL, так что попробовал заменить на "V77S.Application", все равно та же ошибка. Да и работало оно так раньше. Видимо как то связано с установленными в пятницу обновлениями безопасности винды. В журнале событий появилась запись Код: 4609 Система событий COM+ обнаружила неверный код возврата в ходе внутренней обработки. Значение HRESULT: 80070005 (строка 62 из d: tcomcomplussrcevents ier1eventsystemobj. cpp). Обратитесь в службу поддержки Майкрософт. В связи с чем проверил все согласно статьи поправил права как там написано. В целом то все и было правильно. Только для папки WINDOWS у группы "Все" дал права на чтение содержимого папки. Далее проверил права на ветки реестра HKEY_LOCAL_MACHINESOFTWAREClassesV77.Applicatio nCLSID и HKEY_CLASSES_ROOTCLSID<63112D80-94F0-11D2-9F39-008048DA120F>LocalServer32 тоже все нормально. Хотел ещё вот так попробовать: "надо запустить dcomcnfg (пусквыполнить), найти объект V77.Application, на закладке "Удостоверение" переключатель в положение "Текущий пользователь", а не запускающий. (ну это чтоб Винду не сносить " но в DCOM не нашел такого объекта, только V77.GeneralPropPage Не знаю что ещё можно поковырять. Помогите люди добрые. P.S Да, ещё пробовал поменять V7Plus.dll и перерегистрировать её в системе. Тоже не помогло. Переустановка платформы не дала результатов.63112D80-94F0-11D2-9F39-008048DA120F>
Я прошу прощения, а где в конфигураторе права устанавливаются для пользователя на работу с COM объектами?
Ну попробуй удали 1С. почисть реестр. снова установи. скорее всего где-то у тебя мусор в реестре. может клсиды разные валяются.
Самое простое решение, как всегда, оказалось самым верным. В общем я не знаю что это было, ночью перезагрузил сервак и все заработало. Всем спасибо.
Запускаю тоже самое руками - всё работает.
Скрипт запускаю также вручную.
+(0) А ты уверен, что руками ты делаешь тоже самое "V77.Application"?
Бывает, что в "V77.Application", нужно еще и "V77s.Application" и другие буковки вставлять в зависимости платформы :)
Для корректной регистрации 1с v7 как OLE-сервер нужно не просто установить 1с, но и запустить её с правами администратора хотя бы раз.
(14)(17) У меня всё замечательно и давно работает. Но исключительно при запуске вручную.
Через скрипт не хочет. Добавил прав в реестре перегружу ночью проверю
А через script - это как ?
Из сценария VbScript запускаем одну 1С, а уже из неё подключаемся к другой ? Если так, то может и не работать.
OLE-сервер не всегда может быть одновременно и OLE-клиентом, особенно в случае LocalServer32, когда используется Marshaling.
(19) На тонком клиенте всё решается правильной настройкой DCOM или запуском программы с ключом -embedded перед подключением.
(0)Вы бы уточнили от какого пользователя стартует скрипт.
И еще на какой машине стартует скрипт и с какой машины запускаете вручную.
И вообще какая стоит задача.
(19) Это семерка.. там нет тонкого клиента.. к тому же(20) семерочка всегда может бытьодновременно и ОЛЯ-клиентом и ОЛЯ-сервером
Скорее всего скрипт запускается через планировщик задач (скорее всего под System) на x64 сервере где 1с 7.7 ставилась копированием каталога или как то нестандартно, там нужно давать разрешения на DCOM+ этому пользователю.
правильный ответ в (30) - в правах пользователя под которым запускаетсяскрипт - в пофигуртаоре поставь соответсвующие права на использование оли
(35) Т.е. у тебя 2 этапа.
1. Запускается Басик, где 1С 100% выполняется.
2. Запускается еще одна 1С по методу ОЛЕ, из запущенной 1С по Басику.
Так то лучше полные права и галочку "Использование ОЛЕ" или типо того. Вообще проставь все галочки :)
(40) первая база запускается, запускается обработка и вываливается с ошибкой "Неудачная попытка создания объекта (V77.Application) "
В реестре есть ветка с именем V77.Application? Она возникает при штатной установке программы, при копировании каталога программы - не возникает и тогда такой вызов не сработает.
согласен с (42) галка нужна .. но (47) есть в какой базе? в той Из которой подключаешься или в той к которой подключаешься? Надо бы и там и там поставить. Потому как галка гласит о использовании базы ОЛЯ как сервера
Но суслик по ходу где то еще живет. у автора ведь не создается объект, и в этот момент еще пока не известно к какой базе цепляться. так что грешить на базу-донора пока рановато.
При этом для вызывающей базы по барабану какая база донор (дбф или скуль). ТО есть надо определиться какая база вызывающая
(53) Там и в сетевой ошибка (V77n, кажется). Но по V77 запускается любая (или первая?) из установленных "семёрок".
Лучше конечно выбирать ту, которая соответствует.
на моей запускается и 77 и 77s но думаю, что если локальная версия то может запустится только 77L
(56) Были инциденты, что вот запускалось только V77s и ни в какую не хотела видеть другие.
Но, судя по ссылке из (14), все дело в том, какая версия 1С установлена на данном ПК ил Сервере :)
(59) При чем тут пауза? Автор гласит, что не создается объект в процедуре ПриОткрытии(). Давай те при каждом создании обекта ставить паузу.. Ну не сурьезно же. До подключения к базе даже жело не доходит.
(61) а вот может быть уж совсем бузумная идея. а переменная ТиС. она случаем уж не глобально где нибудь занята. а тоя как то попробовал назвать переменную запрещенным именем (ну тпа КонецЦикла.. ради прикола)))) . оно блин ругалось ооочень матерно)))))
(60) Не сурьезно, а как показала практика, Паузы в 1С ой как не хватает :)
Ну и да, если он же открывает туже самую обработку и так же жимкает кнопку, то все работает. Это то хоть о чем то говорит?
(63) ну у меня есть несколько поделок и в ПриОткрытии() есть создание обекта аналогично как у автора. но как то не было ни разу потребностей в паузе. да и если вдруг паузу. то какую?
(63) да.. вот чего .. если дело в паузе, то это можно легко проверить. пойти в отладчик.. поставить точку останова вот тебе и пауза сколько хочешь.
(0) а Покажи ка плиз код. ПриОткрытии(), если есть все, что в самом низу кода .. которое не в процедурах. и если вдруг есть ПослеОткрытия(). мож там суслик где то?
(72)скрипт запускает 1с под тем же пользователем 1с под которым ты сам заходишь и выполняешь обработку? если нет проверь в конфигураторе что в роли есть право на ole automation как тебе писали в (33)
(74) журнал ошибок вондовоза возможно ничего не покажет. у автора не создается объект.. а ето кухня самой 1С. Прикинь, если на каждое создание объекта в журналах винды что то регистрилось. только запуск одной 1С тащит за собой кучу созданых объектов. весь диск станет одним большим журналом)))) Вот если объект создался.. но к базе не подключились.. вот тут да журнал виндовоза засечет енто событие. но до этого дело не доходит)))
(72) .. так в (16) ето я и сообщал))) что то ты недоговариваешь. не может быть таких чудес, что с кнопки арбайт а при открытии() нет. где то суслик должен быть)).
(77) ну да может прокатить конечно. но . таки остается открытым вопрос почему с кнопы арбайт а при открытии не арбайт.
(75) В журнал ошибок пишутся в т.ч. ошибки по нарушению прав к каталогам, например. Поэтому м.б. что будет ошибка аудита.
(83).. оператор СоздатьОбъект() какой каталог пользует?
Если только при запуске программы их создается докучи. и не ругается. Разве СоздатьОбъект("V77.Application") будет обращаться в какой то специальный каталог? Вот когда объект уже создан и этот объект обращается к каталогу базы-донор. вот тут согласен, журнал отсечет это дело. а на этапе создания объекта - увы в журнал ничего не попадет.
Тем более автор утверждает, что с кнопки арбайт. стало быть права к каталогам как минимум правильные.
(85) во первых для Оле обычно нужно писать не СоздатьОбъект() а CreateObject(), т.к. русские обозначения не работают или не всегда работают. Какой каталог использует СоздатьОбъект("V77.Application") прописано в реестре windows где прописан путь к экзешнику 1с 7.7.
(86) Видимо у мня как раз тот случай, когда срабатывает русское СоздатьОбъект(). Вот если я хочу создать объект уже на ОЛЕ, там да латинское однозначно. НО опять же. с кнопы то арбайт.
Предлагаю вместо скрипта на vbs использовать батник, уверен что с ним больше вероятность что сработает
Вообще-то, для 1С пауза не нужна - она живёт в другом процессе, но для обмена данными нужна очередь событий, которая при открытии формы может быть просто заблокирована, так как очередь задана созданием окна.
Не забываем, что при открытии - это всё равно что формула на форме, а там не все действия допустимы.
Советую, при открытии сделать Форма.Закрыть(0),
а уже при закрытии сделать СтатусВозврата(0) и создать ваш несчастный объект - он должен создаться.
В чем дело, программа пишет "Неудачная попытка создания объекта (AddIn.XMLParser)"?
Очевидно, что Вы запускаете обработку, которая использует внешнюю библиотеку v7plus.dll. В данном случае для работы с файлами формата XML. Но файл (библиотеку) v7plus.dll, обеспечивающий создание этого объекта (AddIn.XMLParser) программа не нашла.
Для нормальной работы этой библиотеки надо найти файл v7plus.dll (как правило находится в базе данных типовых после инсталяции) и скопировать его в Каталог Вашей информационной базы. А можно в каталог с исполняемыми файлами программы (C:\Program Files\1c77\bin\).
Первый вариант лучше для сетевой установки (не понадобится копировать эту библиотеку на каждый компьютер сети), второй для локальной, особенно, если у Вас установлено несколько баз (не понадобится копировать файл библиотеки во все базы).
Похожие FAQ
Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ; v7plus.dll - отсутствует CLSID либо отсутствует интерфейс llnitDone 0
При выгрузке отчетности в 1С 7.7 программа ругается на v7plus.dll и указывает, что отсутствует интерфейс llritDone. Что делать? 1) Поудалять нафиг все v7plus.dll из каталогов ИБ и папок пользователей 2) Оставить только в bin каталоге и зарегить чер Выгрузка / Загрузка данных посредством XML файлов? 1
В основе работы с XML-файлами лежит технология доступа SAX, которая осуществляет считывание по одному тегу. Для этого существует два типа данных – ЗаписьXML и ЧтениеXML . Запись данных справочника в XML-файл: Запись = Новый ЗаписьXML; Запись.О Загрузка данных из XML файла в Таблицу Значений и вывод в Табличный документ 0
Перем ИмяПути,ИмяФайла; Перем xmlParser; //пример чтения xml файла. Функция УстановитьКомпоненту() Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+" ExtFormsv7plus.dll" )=0 Тогда Если ЗагрузитьВнешнююКомпоненту(" v7plus.dll" )=0 Тогда Сообщит Запуск 1С:Предприятия 7.7 под Windows 7 1
Установка 1С 7.7 под Windows 7 : Установщик 1С 7.7 является 16-битным приложением, а в Windows 7 отключена поддержка таких программ. Поэтому я взял другой установщик 1С, 32-битный(Ищите в интернет или спросите у Франчайзи). Запустил его " от имени Посмотреть все результаты поиска похожих
"У нас сетевая версия 1с.Предприятие-Бухгалтерский учет v.7.7. Мне был нужен объект "v7TextFile", установили dll на сервер, написали обработку, обработка не компилируется, вываливается ошибка:
ФЗД=СоздатьОбъект("V7TextFile");
Кто-нибудь может помочь? Что неправильно делаем?"
"установили dll на сервер" - в папку базы?
Попробуйте на локальный компьютер в папку программы.
Остальные объекты создаются?
Мы правильно поняли: в c:\programm files\1C\Bin ? Мы поставили туда, но результат тот же.
"Нет, другие объекты этой компоненты тоже не создаются.
D=СоздатьОбъект("V7Mail");
"Предупреждение выдаёт при выполнении такого кода?
Если ЗагрузитьВнешнююКомпоненту(гПутьОбъекта_КомпонентаV7plus) <> 1 Тогда
Предупреждение("Компонента v7plus.dll не найдена!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
"
Кажется, все поняла, я вообще не знала о существовании "ЗагрузитьВнешнююКомпоненту(". Сейчас попробую.
"Можно использовать такую конструкцию:
Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда
Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда
Предупреждение("Компонента v7plus.dll не найдена!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
P.S. Program пишется с одной "m" на конце."
Я в Москве:(
А вообще-то, я не нашёл в объекте "V7TextFile" ничего такого, чего нельзя было бы сделать с помощью встроенного объекта "Текст".
Читают тему:
Мероприятия
- Где купить СОФТ
- Вакансии фирм-партнеров "1С"
- Центры Сертифицированного Обучения
- Интернет курсы обучения "1С"
- Самоучители
- Учебный центр № 1
- Учебный центр № 3
- Сертификация по "1С:Профессионал"
- Организация обучения под заказ
- Книги по 1С:Предприятию
При использовании материалов активная прямая гиперссылка на перепечатанный материал обязательна.
Редакция БУХ.1С не несет ответственности за мнения и информацию, опубликованную в комментариях к материалам.
Редакция уважает мнение авторов, но не всегда разделяет его.
Дизайн сайта
Мы используем файлы cookie, чтобы анализировать трафик, подбирать для вас подходящий контент и рекламу, а также дать вам возможность делиться информацией в социальных сетях. Если вы продолжите использовать сайт, мы будем считать, что вас это устраивает.
"7.70.025, конфигурации разные.
При открытии программы возникает ошибка.
Ошибка при создании объекта из компоненты d:\buhsa\1C\1CV77.ADM\bin\1CRtInf.dll (отсутствует интерфейс IInitDone)
Норм_Компонента = СоздатьОбъект("AddIn.DBExtension");
: Неудачная попытка создания объекта (AddIn.DBExtension)
Эта ошибка так же неожиданно исчезает как и появляется. Может кто сталкивался с такой же проблемкой?"
Библиотеки в проге менял? Ну типа с ITLAND-а скачал замену config.dll.
Такое бывает, если что-то блокирует объекты OLE. проверь права у пользователя или антивирус.
нет, библиотеки не меняли.
Такая ошибка не возникает у тех у кого полные права на каталог 1CV77.ADM\BIN или на данную dll. У других права на чтение и выполнение. Но ошибка может возникнуть раз в месяц, или два дня подряд как в этот раз. Права не меняли.
1С откуда запускается? Периодические проблемы с запуском у тех же пользователей?
1c установлена на сервере windows 2003 и используется терминальный доступ.
У нас есть каталог "1с" и права пользователей на эту папку: чтение и выполнение, применительно только к этой папке. Внутри этой папки лежит каталог 1CV77.ADM (с exe 1с) и на эту папку даны права:чтение и выполнение, применительно к этой папке, ее подпапкам и файлам. Раньше это срабатывало - ошибок не было при запуске 1с. Сейчас добавили на каталог "1с" права такие же как и каталог 1CV77.ADM и ошибка не появляется.
Иногда DLL нужно регистрировать, если у пользователя нет прав Локального администратора.
Я обычно делал так, даю пользователю права локального администратора, Пуск -> Выполнить -> regsvr32 и тыкаем ОК. После этого можно забрать у пользователя права локального администратора.
Обычно такое возникает с v7plus.dll =)
Думаю, права давать пользователю излишне. Мы обычно делаем так: при возникновении ошибки с регистрацией V7plus, в 1С заходит админ со своими админскими правами. При начале работы системы у нас загружаются курсы валют, поэтому просто зайти обычно бывает достаточно. Если автоматически курсы не скачиваются, то можно запустить что-то, что использует V7Plus: загрузить те же курсы, получить обновления доп.информации и т.п.
Если кто-то знает, как решить проблему нормальным способом - поделитесь, плз.
Читайте также: