Ошибка создания объекта tsrvmethodclass

Всем привет.

1С сервер + SQL 2008 R2 + Windows Server 2008 R2

В компании 15 компьютеров, все вошли в прорамму, кроме одного.

Пользователь открывает базу, проходит авторизацию, все ОК.

Как только пользователь открывает меню «Продажи» — вываливается ошибка:

Платформа: 1С:Предприятие 8.3 (8.3.6.2100)

Конфигурация: Управление торговлей, редакция 11.1 (11.1.10.131) (http://v8.1c.ru/trade/)

Copyright © ООО «1C», 2003-2015. Все права защищены

(http://www.1c.ru)

Режим: Серверный (сжатие: усиленное)

Приложение: Тонкий клиент

Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)

Вариант интерфейса: Версия 8.2

Ошибки:

———————————————————————————

21.08.2015 13:36:06

Ошибка при создании объекта c IID — 332c4425-26cb-11d0-b483-00c04fd90119

998(0x000003E6): Неверная попытка доступа к адресу памяти.

[helpui — srchelpmiscUI.cpp (646)]

Что пробовал:

1. Чистил кэш у пользователя (удалял базу из списка баз и заново прописывал).

2. Удалил/Создать профиль в Windows 7

3. Перезапустил сервер

Позже выяснил, что эта ошибка так же проявляется, если войти в Windows  под полными правами и если в 1С войти под правами Администратора.

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

Студворк — интернет-сервис помощи студентам

Всем привет!

Разрабатываю клиента для веб-сервиса, у которого есть единственный метод execute.

Сгенеренный при добавлении ссылки на веб-сервис прокси класс в результате работы генерирует такое SOAP-сообщение:

XML
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <execute xmlns="http://www.1c.ru/dm">
            <request xsi:type="DMGetCurrentUserRequest" /></execute>
    </soap:Body>
</soap:Envelope>

Но сервер в результате отвечает

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header/>
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Client</faultcode>
         <faultstring>Неизвестная ошибка. Ошибка создания объекта:
Попытка создания объекта абстрактного типа '{http://www.1c.ru/dm}DMRequest'
по причине:
Ошибка создания объекта:
Попытка создания объекта абстрактного типа '{http://www.1c.ru/dm}DMRequest'</faultstring>
         <detail>Неизвестная ошибка. Ошибка создания объекта:
Попытка создания объекта абстрактного типа '{http://www.1c.ru/dm}DMRequest'
по причине:
Ошибка создания объекта:
Попытка создания объекта абстрактного типа '{http://www.1c.ru/dm}DMRequest'</detail>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>

С помощью Wireshark отмониторил содержимое запроса другого (работоспособного) клиента для этого же сервера, он формирует сообщение для аналогичного запроса вот в таком виде:

XML
1
2
3
4
5
6
7
8
9
10
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header/>
    <soap:Body> 
        <m:execute xmlns:m="http://www.1c.ru/dm">
            <m:request xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:type="m:DMGetCurrentUserRequest"/>
        </m:execute>
    </soap:Body>
</soap:Envelope>

«Поигравшись» с запросом, который генерирует мой клиент, в soapUI выяснил, что серверу «не нравится», отсутствие указания префикса пространства имен (<m:…>).

Можно ли как-то научить сгенерированный прокси-класс добавлять префикс пространства имен в сообщение?

Заранее спасибо!

Периодически ловим эту ошибку на разных серверах при формировании отчета по хранилищу командой:
«1cv8.exe» DESIGNER /F»d:Temp1CDbDb_04″ /ConfigurationRepositoryF»d:storagestemp» /ConfigurationRepositoryN»test» /ConfigurationRepositoryP»» /ConfigurationRepositoryReport»d:Temp1CDbrep_report.mxl» /Out»d:Temp1CDbrep_report.txt»

50:24.249005-0,EXCP,0,process=1cv8,Usr=DefUser,Exception=Exception,Descr=’Ошибка при создании объекта c IID — 332c4425-26cb-11d0-b483-00c04fd90119[helpui — srchelpmiscUI.cpp (648)]’

на платформе 8.2 ошибка не воспроизводится
перезапуск службы не помогает, спасаемся перезапуском сервера — крайне не нравится.

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

При выполнении связанных с отчётностью сетевых операций пользователь может столкнуться с сообщением «Невозможно создание объекта сервером программирования объектов». Проблема вызвана отсутствием библиотек для подачи отчётности в пользовательской системе, устаревшей версией используемого веб-браузера, а также различными дисфункциями в работе ПК. Ниже разберём суть данной проблемы, а также перечислим способы её решения.

Скриншот ошибки сервера программирования обьектов

Содержание

  1. Суть и причины дисфункции с сервером
  2. Как исправить ошибку «Невозможно создание объекта сервером»
  3. При использовании цифровых продуктов ООО «Ролис»
  4. При использовании системы «Контурн.Экстерн»
  5. При работе с плагинами от «Криптопро»
  6. При подключении к базе 1С
  7. Заключение

Суть и причины дисфункции с сервером

Рассматриваемая проблема обычно наблюдается на веб-браузерах, и связана с попыткой пользователя выполнить какую-либо операцию на ресурсах, связанных с отчётностью. В частности, ошибка возникает при:

  • Осуществлении цифровой подписи электронного документа (сокращённо — ЭЦП);
  • Отправке или сохранении отчёта для Фонда Социального Страхования (ФСС);
  • При прохождении процедуры регистрации в личном кабинете на сайте налоговой службы (ФНС);
  • При подключении к базе 1С;
  • При запуске различных CRM-систем и другое.

Для связи с соответствующими сетевыми ресурсами здесь использовался веб-браузер Internet Explorer, на котором и возникала данная ошибка.

Картинка цифровой подписи документа

Как исправить ошибку «Невозможно создание объекта сервером»

Поскольку рассматриваемая проблема возникает в различных формах отчётности на разнообразных интернет-порталах, то универсального лекарства для решения проблемы «Невозможно создание объекта сервером» не существует. Но прежде чем приступать к перечислению «точечных» способов избавиться от ошибки «Невозможно создание объекта сервером программирования объектов» рекомендую выполнить несколько стандартных операций, а именно:

  • Убедитесь, что вы пользуетесь самой свежей версией вашего браузера. При необходимости обновите браузер до самой новой версии;
  • Временно отключите ваш антивирус и брандмауэр. Указанный софт может блокировать связь между соответствующими программами и интернет-серверами;
  • Если жёстких требований к версии используемого веб-браузера нет, попробуйте использовать альтернативный веб-браузер (например, вместо Мозиллы используйте IE или Edge);
  • Убедитесь, что в вашей системе установлены все необходимые библиотеки для подачи отчётности (при необходимости установки таковых). Окно деактивации брандмауэре
    Временно отключите ваш брандмауэр

Если проблем с перечисленными пунктами нет, перейдём к описанию точечных алгоритмов решения проблемы.

При использовании цифровых продуктов ООО «Ролис»

В частности, при работе с цифровыми продуктами ООО «Ролис» необходимо закрыть браузер (обычно использовался IE), скачать и распаковать файл capicom.zip. Из данной папки будет необходимо запустить файл register.bat, после чего необходимые библиотеки «CAPICOM» будут установлены в системе. Останется запустить браузер и подписать необходимый вам электронный документ.

При использовании системы «Контурн.Экстерн»

При использовании системы отчётности «Контурн.Экстерн» необходимо переустановить программные компоненты «Контурн.Экстерн». Для этого сначала удалите указанные компоненты стандартным путём в ОС Виндовс (поможет нажатие на Win+R, и ввод команды appwiz.cpl). Далее перезагрузите ПК, а затем установите необходимый вам софт с сайта kontur-extern.ru. Если же данное решение не помогло, рекомендуется воспользоваться специальным диагностическим инструментом от компании-производителя, расположенном на странице help.kontur.ru

При работе с плагинами от «Криптопро»

При работе с плагином разработчика «КРИПТОПРО», предназначенными для создания цифровой подписи, необходимо перейти на ресурс cryptopro.ru и проверить работу плагина. Если ошибка продолжает возникать, необходимо сделать скриншот ошибки, и отправить его в адрес службы технической поддержки, что поможет избавиться от ошибки «Невозможно создание объекта сервером» на вашем ПК.

Также подобная ошибка может возникать при отсутствии установленной библиотеки «КриптоПро CADESCOM» (предназначена для осуществления ЭЦП). Рекомендуется установить недостающую библиотеку с https://www.cryptopro.ru/downloads.

При подключении к базе 1С

Установите специальную утилиту http://www.community.terrasoft.ua/system/files/1c_230512.zip для интеграции с 1С в соответствии с инструкцией по её установке (находится внутри архива). С помощью функции глобального поиска найдите строку:

Param.Con1C = new ActiveXObject(Param.Version + ‘.ComConnector’);

и замените её на:

//Param.Con1C = new ActiveXObject(Param.Version + ‘.ComConnector’);
Param.Con1C = new ActiveXObject(‘V83.ComConnector’);

Заключение

Ошибка «Невозможно создание объекта сервером программирования объектов» обычно вызвана различными дисфункциями, появляющимися при подключении пользовательского браузера к соответствующим интернет-порталам. В каждом конкретном случае имеется соответствующий алгоритм решения, который и необходимо выполнить для устранения ошибки «невозможно создание объекта сервером» на вашем ПК.

Ошибка создания экземпляра класса сервлета

Вопрос:

Я пытаюсь выполнить пример входа в систему с помощью сервлетов, используя RequestDispatcher, но получая этот статус HTTP 404 -, у меня есть жестко закодированная ошибка пароля в самом коде, но несколько раз HTTP-статус 500 – Ошибка создания класса сервлета Login enter image description hereweb.xml

<web-app>
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>Login</servlet-class>
</servlet>
<servlet>
<servlet-name>WelcomeServlet</servlet-name>
<servlet-class>WelcomeServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>WelcomeServlet</servlet-name>
<url-pattern>/WelcomeServlet</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="servlet1" method="post">
Name:<input type="text" name="userName"/><br/>
Password:<input type="password" name="userPass"/><br/>
<input type="submit" value="login"/>
</form>
</body>
</html>

Login.java

 package com.emma.saurabh;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.*;
import javax.servlet.http.*;


public class Login extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();

String p=request.getParameter("userPass");
if(p.equals("saurabh")){
RequestDispatcher rd=request.getRequestDispatcher("servlet2");
rd.forward(request, response);

}
else{
out.print("Sorry username or password error!");
RequestDispatcher rd=request.getRequestDispatcher("/index.html");
rd.include(request, response);
}

}

}


**WelcomeServlet.java**


package com.emma.saurabh;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class WelcomeServlet extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();

String n=request.getParameter("userName");
out.print("Welcome "+n);
}

}

Лучший ответ:

Действие формы должно указывать на сервлет, которому вы хотите отправить форму. Я думаю, вы хотите отправить его в действие Login, поэтому форма будет выглядеть следующим образом.

<form action="Login" method="post">  
    Name:<input type="text" name="userName"/><br/>  
    Password:<input type="password" name="userPass"/><br/>  
    <input type="submit" value="login"/>  
</form>

редактировать

Добавление того, что предлагала птица @fly.

<servlet>  
    <servlet-name>Login</servlet-name>  
    <servlet-class>com.emma.saurabh.Login</servlet-class>  
</servlet>  
<servlet>  
    <servlet-name>WelcomeServlet</servlet-name>  
    <servlet-class>com.emma.saurabh.WelcomeServlet</servlet-class>  
</servlet>  

doPost вместо doGet в ваш сервлет

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{....}

Вы также можете изменить method="post" на method="get" в форме. Я предлагаю вам сделать doPost потому что изменение метода покажет параметры в URL.

Ответ №1

Ваш код написан методом doGet, тогда как данные передаются через POSt. Вы должны написать в методе doPost. Это приведет к удалению ошибки HTTP 405

Понравилась статья? Поделить с друзьями:
  • Ошибка соленоида субару
  • Ошибка создания объекта excel application
  • Ошибка соленоида вариатора что значит
  • Ошибка создания обращения 403 ok егаис утм
  • Ошибка соленоида вариатора ниссан