Не работает 1С — разбираемся и устраняем основные причины

Данный компонент не используется на этом компьютере 1с при запуске

В отличие от 7.7 необходимо указывать полный путь к DLL (или положить файл DLL в папку BIN платформы 1С:Предприятие). Вместо СоздатьОбъект(«Addin.Имя») используется Новый(«Addin.Имя»), использовать при этом ключевое слово COMОбъект не нужно.

Хранение записей о внешних компонентах в реестре Windows

Зарегистрированная внешняя компонента хранится в реестре следующим образом.
Предположим, что у нас есть внешняя компонента E:EventsEvents.dll.
В 1С мы пишем:

Теперь зайдем в программу regedit.exe (Пуск-Выполнить-Regedit.exe).

Если регистрация прошла успешно, то в реестре мы увидим следующие записи (я сделал поиск по подстроке «AddIn.Events» в редакторе реестра regedit.exe, нажав сочетание клавиш Ctrl-F):

Значение является уникальным для каждого OLE-объекта идентификатором (CLSID). Его должен явно задать разработчик в коде внешней компоненты.

Значение ProgID, которое в нашем случае — «AddIn.Events» также задает разработчик внешней компоненты.

Чтобы в реестре появились эти записи, необходимы права доступа

Начиная с Windows 2000, обычный пользователь не имеет прав доступа к указанным выше ветвям реестра. Нужны права или администратора, или привилегированного пользователя Windows. После первой загрузки компонента пропишет себя в реестре, и ее смогут использовать и непривилегированные пользователи Windows.

Где 1С ищет внешнюю компоненту?

Если при загрузке внешней компоненты вы не указываете полный путь, такой как E:EventsEvents.dll или сетевой путь наподобие \ВашСерверПапкаГдеЛежатВКEvents.dll, то 1С ищет внешние компоненты

-относительно папки 1Cv7BIN (КаталогПрограммы())
-относительно каталога информационной базы (КаталогИБ())

Метод ЗагрузитьВнешнююКомпоненту(), обнаружив ВК по новому пути, обновляет ее регистрацию в реестре

Это означает, например, что на терминальном сервере программист, который вошел в тестовую базу, где лежит ВК, и потом ее стер, оставит у всех пользователей запись в реестре о несуществующей ВК.
Аналогичная проблема — когда ВК по данному пути недоступна тем или иным пользователям.
А поскольку пользователи не имеют права на изменение записей в реестре, то у них перестанет загружаться и внешняя компонента.

В 1С:Предприятие 8.0 убрана возможность загрузки ВК относительно каталога ИБ.

В 7.7 же, чтобы избежать проблем, всегда убирайте ВК из каталога ИБ, и прописывайте полные пути (или складывайте DLL в общую для всех пользователей папку BIN).

Кардинальное решение проблемы — VKLoader

Имеется компонента VKLoader.dll (автор — Александр Орефков), которая позволяет решить проблемы с регистрацией компонент.

Цитата:
«vkloader (далее ВК) — внешняя компонента для 1С-Предприятия 7.7, которая может загружаться без ее регистрации в реестре, и загружать другие внешние компоненты без их регистрации. Предназначена для беспроблемной загрузки внешних компонент пользователями, не имеющими прав на запись в HKCR ветку реестра.
Принцип работы основан на перехвате обращения 1С к WinAPI функциям CLSIDFromProgID и CoCreateInstance.
Также ВК решает проблему «зависания» процесса 1С в памяти при закрытии программы при использовании несовсем корректно написанных сторонних внешних компонент».

Пример использования vkloader:

Замечу, что сама vkloader «умеет» загружать себя без прав доступа к реестру.

Еще одно решение: RegsvrEx

Автор — AlexQC.
Регистрирует компоненты (OLE-объекты) в пользовательской ветке реестра.
http://infostart.ru/projects/index.php?id=559

Самая простая причина неполадок

Очень часто причиной неработоспособности любого электронного прибора является отсутствие вилки в розетке. Аналогичная ситуация возникает с внешними компонентами, поэтому при их загрузке полезно проверять, а есть ли в наличии указанный файл DLL (к сожалению, этого не делает сам движок 1С:Предприятие 7.7).

Дополнительно:
Для старта внешней компоненты DynamicModuleServer.dll на Windows Server 2003 необходимо добавить исполняемый файл (1cv7s.exe) в исключения из механизма Windows под названием DEP (Data Execution Prevention): Control Panel -> System -> Advanced ->Performance Settings ->Data Execution Prevention

Информационная база не обнаружена

Информационная база не обнаружена

Ошибка «Информационная база не обнаружена» возникает только в клиент-серверном режиме работы 1С. Она означает, клиент 1С не может подключиться к указанной базе данных.

  • Убедитесь, что сервер 1С доступен.
  • Проверьте, существует ли указанная база данных на сервере 1С.
  • Если база присутствует — убедитесь, что в настройках безопасности SQL сервера установлены разрешения для имени пользователя и пароля, под которыми база была добавлены на сервере 1С предприятия.
  • Бывают ситуации, когда при восстановлении базы 1С из бекапа в Windows меняется владелец её владелец, для исправления просто выполните рекомендации из предыдущего пункта.

Эксплуатация » Ошибка при загрузке внешней компоненты в 1С

Добрый день.
Используется:
Windows8.1 x64, 1С:Предприятие 8.3 (8.3.13.1644), ARM_ORION_PRO1_20_2
Orion1C.dll ,брал из каталога 1C_WorkTime, в каталоге находятся Orion1C.sil и Orion1C.dll
при использовании Example1.exe и Example2.exe все происходит корректно

На текущий момент такая ошибка при использовании метода в 1с
ЗагрузитьВнешнююКомпоненту(«Orion1C.dll»); выдает ошибку
«Не смогли загрузить внешнюю компоненту.»
ОписаниеОшибки() = «Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту): Ошибка при загрузке внешней компоненты»
Пробовал указать полный путь к местонахождению dll, ошибка та же.

При попытке зарегистрировать компоненту с помощь. regsvr32 выходит ошибка,
«модуль . Orion1C.dll загружен, но не удалось выполнить вызов DLLRegisterServer, код ошибки: 0х80004005»
Подскажите что можно сделать.

1 год 11 месяцев назад

avatar

– Ряснов Александр 1 год 10 месяцев назад

Проверил на ЗУП2,5 «Толстый клиент (обычное приложение)», но в режиме совместимости 8.2/8.3 + такси (7 рка — х64, ХР — х32), грузит и работает (от имени — Админ=владелец). Файлы «Orion1C.sil» и «Orion1C.dll», взял на сайте (СКУД и УРВ для 1С:Предприятие 8 (2.8.1)), и просто скопировал в папку «BIN». Регистрация «regsvr32» не требуется, в х64, работает только на 1С-х32, в папке («1C_WorkTime») есть файл «pdf», там всё расписано. И в качестве клиента, и в качестве сервера («Режим работы») «Внешняя компонента загружена», «Создан объект URV»….
И ещё (из файла документации):

«ЗАМЕЧАНИЕ: на управляемых формах программа работает ощутимо медленнее, поэтому, если есть возможность оставаться на обычных формах, то разработчик рекомендует запускать программу в режиме «Обычное приложение».»

(Заинтригован, т.к. у «1С» ников упор в сторону «управляемых форм», буду пробовать «на разгон», там есть такая «фича», будет время, кратко распишу… )

. А запуск в отладочном режиме — даёт много дополнительной информации…

– Карпов Дмитрий 1 год 10 месяцев назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

Решение проблем с регистрацией внешних компонент в терминале

Изображение

При этом пользователи видят, например, картинку представленную в анонсе статьи.

В то время как при работе с локальных компьютеров никаких проблем с подключением внешних компонент нет.

С чем это связано? Это связано с тем, что, когда пользователи работают через сервер терминалов, они имеют меньше прав, чем при работе на локальном компьютере.

В этом легко убедиться, если зайти на сервер терминалов под учетной записью с административными правами.

Причина такой разницы заключается в том, что 1С не может зарегистрировать внешнюю компоненту в реестре, когда пользователь работает в терминале под обычными правами, т.к. у обычного пользователя нет прав на запись в ветку системного реестра HKEY_CLASSES_ROOT.

В публикациях на тему подключения внешних компонент в терминале предлагаются самые разные методы решения этой проблемы.

1. Запустить первый раз 1С под административными правами.

Этот вариант далеко не всегда срабатывает. Ниже объясню, почему.

2. Дать обычным пользователям терминала права на запись в ветку системного реестра HKEY_CLASSES_ROOT.

Недостаточно «продвинутым» пользователям лучше этого не делать, иначе могут быть проблемы.

3. С помощью различных «примочек» регистрировать ВК от имени пользователя с полными правами.

Тоже не есть хорошо.

Так как же все таки лучше выйти из этой ситуации?

Я предлагаю свой вариант решения этой проблемы. По моему мнению — простой и красивый, не предлагавшийся на лансере ранее.

Исследуя эту проблему, я задался вопросом — а зачем 1С вообще пытается зарегистрировать ВК по новому пути? Ведь она уже зарегистрирована в системе.

Дело оказалось в том, что в типовых конфигурациях 1С (например «Управление Торговлей») используется такой синтаксис метода глобального контекста ПодключитьВнешнююКомпоненту():

ОбъектДрайвера = Новый («AddIn.АТОЛСканер.Scaner45»);

Как видим, ВК драйвера подключается из макета «ДрайверАТОЛСканерШтрихкода» справочника «ПодключаемоеОборудование».

Что же при этом происходит?

1С сохраняет компоненту во временной папке пользователя, например «C:Documents and SettingsUserLocal SettingsTemp1032v8_4_12.tmp»

и пытается зарегистрировать ее в ветке реестра HKEY_CLASSES_ROOT именно по этому пути.

На терминале у обычных пользователей нет прав на изменение этой ветки реестра, поэтому компонента у них не подключается.

Теперь о том, как выйти из этой ситуации.

Метод глобального контекста ПодключитьВнешнююКомпоненту() имеет несколько вариантов синтаксиса. Вот этим мы и воспользуемся.

Итак, по шагам:

1. Регистрируем внешнюю компоненту утилитой regsvr32.exe на сервере терминалов в папке C:WINDOWSSYSTEM32 для 32-разрядной ОС или в папке C:WINDOWSSYSWOW64 для 64-разрядной ОС.

2. Используем один из двух дополнительных вариантов синтаксиса метода ПодключитьВнешнююКомпоненту():

Вариант 1:

ПодключитьВнешнююКомпоненту(«C:WINDOWSSysWOW64Scaner1C.dll», «АТОЛСканер», ТипВнешнейКомпоненты.COM);

ОбъектДрайвера = Новый («AddIn.АТОЛСканер.Scaner45»);

Вариант 2:

ОбъектДрайвера = Новый (ProgID);

На мой взгляд, вариант № 2 предпочтительнее.

При этом 1С не пытается перерегистрировать ВК по новому пути в реестре и таким образом, все проблемы решаются.

Ну вот собственно и все. Успехов в работе!

Найти хорошего 1С программиста для сопровождения и внедрения 1С-программ довольно сложно — нужно оценить ваш уровень ведения учета и четко сформулировать для себя конкретные требования к работе программиста 1С.

Очистка базы от документов УУ версия на SQL

Свободное проведение документов

Выгрузка зарплаты В банк ВТБ24

Помощь пользователю при ошибке при входе в систему

Если уж при работе системы произошла ошибка – мы стараемся сделать так, чтобы сообщение о ней давало пользователю подсказку – как исправить эту ошибку (если пользователь может ее исправить сам) или предоставить пользователю удобный способ сообщить об ошибке специалистам (в техподдержку и т.п.). Большой шаг в этом направлении был сделан в версии 8.3.17, и мы продолжаем двигаться дальше.

В версии 8.3.21 мы переработали подход к сообщениям об ошибках, возникающих при входе в систему. Теперь администраторы и разработчики могут добавить в сообщения информацию, которая более подробно объяснит пользователю причину проблемы и, возможно, сможет помочь пользователю решить её. Мы рекомендуем задействовать эти новые возможности, когда они появятся, чтобы сделать работу пользователей удобнее.

Если ошибка произошла при входе в систему, пользователю можно будет показать дополнительную информацию, которая сможет помочь ему решить возникшую проблему:

Текст (например, «Позвоните дежурному администратору по телефону +7 (495) 123-45-67»)

Ссылка на ресурс с информацией (например, на сайт, где описаны способы решения возникшей проблемы)

При показе сообщения об ошибке под системным сообщением отображается текст помощи (если задан) и ссылка “Нужна помощь” (если задана ссылка на ресурс с информацией). Полный тест ошибки отображается при нажатии на ссылку “Показать подробности…”:

img-01.png

Ошибки, возникающие при входе в систему – одни из самых непростых в обработке. Такие ошибки, в частности, могут возникать из-за недоступности сервера 1С, и, значит, в этот момент с сервера нельзя получить данные о том, какую информацию показать пользователю. Поэтому описанную выше информацию можно записать для каждой базы в файл списка баз *.v8i – при неудачном входе в систему информация будет считана из этого файла (при доступности файла) и показана пользователю.

Есть варианты работы, когда файлы *.v8i недоступны – работа в облаке, удалённая работа и т.п. Поэтому эту информацию также можно настроить через стандартную обработку «Управление настройками отображения ошибок» (параметры «Текст помощи» и «Навигационная ссылка помощи») и сохранить в инфобазе. Если с клиента уже был ранее осуществлен успешный вход в систему – эти параметры считываются с сервера и кэшируется на клиенте.

Если клиент успешно связался с сервером и считал актуальные значения параметров «Текст помощи» и «Навигационная ссылка помощи», но далее при работе системы возникли проблемы при соединении с сервером – в диалоге попытки повторного подключения будут использованы последние считанные значения параметров.

Обратите внимание! Информация, записанная в файле *.v8i, и настройки параметров «Текст помощи» и «Навигационная ссылка помощи» — независимы друг от друга. В случае, если доступен файл *.v8i, но недоступен сервер 1С и на клиенте нет закэшированных значений параметров «Текст помощи» и «Навигационная ссылка помощи» – пользователю будет показана информация из файла *.v8i, в противном случае – информация из параметров «Текст помощи» и «Навигационная ссылка помощи».

Настройки подключения к базе

В файл списка баз (*.v8i) в свойства базы добавляется параметры:

StartupErrorHelpText (строка) – текст, отображаемый в диалоге ошибки до начала сеанса или диалоге попытки повторного подключения

StartupErrorHelpURL (строка) – ссылка на ресурс с информацией

Тонкий клиент

img-02.png

Для разработчиков и администраторов появится возможность задать параметры для отображения сообщений об ошибках при входе в систему, как программно (через новые свойства и методы объектов встроенного языка), так и в стандартной обработке «Управление настройками отображения ошибок» (вызывается из пункта системного меню «Функции для технического специалиста»):

Про параметр «Адрес сервера обработки ошибок при запуске» — в отдельном разделе ниже.

Переработаны также тексты сообщений, которые показываются в различных проблемных ситуациях при входе в систему:

Проверьте сетевое соединение

Проверьте, что параметры подключения указаны верно

Если проблема возникла уже после начала работы с системой — на форме повтора попытки соединения с сервером отображаемый текст будет таким же, как и на таблице вверху, а полный текст можно посмотреть, нажав на ссылку «Показать подробности…».

Веб-клиент

Мы постарались реализовать аналогичные «дружественные» сообщения об ошибках при входе в систему и в веб-клиенте. В веб-клиенте есть сложности в отслеживании взаимодействия браузер-сервер, т.к. браузер – внешнее для нас приложение, и мы не всегда можем контролировать происходящие в нем процессы. Тут нам пришла на помощь технология service-workers. Эта технология, в частности, позволяет кэшировать информацию на стороне клиента, что может быть использовано для подгрузки данных при недоступности сетевого ресурса.

При невозможности связаться с веб-сервером в браузере будет отображена страница с информацией об ошибке подключения, текстом, заданный в настройках, и текстом, полученным из запроса на адрес сервиса информации (т.е. фактически с той же информацией, что и в тонком клиенте):

img-03.png

Это будет работать при соблюдении нескольких условий:

Подключение к веб-серверу по HTTPS

На веб-сервер уже был осуществлен удачный вход из браузера (для кэширования на клиенте страницы, показывающей информацию об ошибке)

Браузер должен поддерживать технологию service-workers

Про сервер обработки ошибок при запуске

Выше мы упомянули параметр «Адрес сервиса обработки ошибок при запуске».

img-04.png

Если этот параметр задан, то при ошибках запуска по этому адресу клиент 1С сделает запрос дополнительной информации. А по этому адресу можно настроить веб-сервер, который будет отдавать более подробную информацию о текущей ситуации — информировать пользователей при возникновении неожиданных аварийных ситуаций и / или недоступности сервера и т.п. Например, можно отобразить пользователю текст “Мы уже работаем над проблемой. Работа сервера возобновится после 14:00”.

Для поддержки это сценария можно реализовывать совсем простой вариант: просто положить JSON-файл в папку и настроить веб-сервер (Apache, nginx, IIS) на отдачу этого файла. При возникновении проблем на сервере можно вписать в этот файл необходимый текст (userMessage) и настроить время, до которого этот текст будет отображаться на форме (в нашем примере – до 14:00).

Можно реализовывать и более сложные сценарии – например, отправлять информацию об ошибках при входе в систему на внутренний сервис техподдержки организации.

Регистрация компоненты comcntr.dll (для COM соединения с базой 1С)

Если фоновый процесс COM-соединения завершается с ошибкой:

: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Invalid class string

Нужно зарегистрировать библиотеку ComConnector comcntr.dll из каталога программы.

. Перед этим нужно отключить службу агента сервера 1С:Предприятия и все программы, использующие эту DLL .

В 32-битной версии сервера проблема решилась бы командой: regsvr32 «C:Program Files (x86)1cv88.3.5.1119bincomcntr.dll»

но в 64-битной версии команда будет примерно такой * : C:WindowsSysWOW64regsvr32 «C:Program Files (x86)1cv88.3.5.1119bincomcntr.dll»

При удачном выполнении Вы увидите:

Если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u

Если и это не помогло, попробуйте переустановить платформу 1С в режиме Исправить и отметьте COM соединение

Распечатать

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector