Обновлено 14.10.2020
Добрый день! Уважаемые читатели и гости популярного компьютерного блога pyatilistnik.org. В прошлый раз мы с вами решили ошибку » db query error please try later», и восстановили работу сайта на платформе 1С Битрикс. Сегодня я хочу поделиться небольшой заметкой, как выйти из ситуации, когда не работает кнопка «Заполнить по ИНН» в Справочнике Контрагенты при создании нового. Выдается ошибка «ОбщийМодуль.ОбщегоНазначенияПовтИсп.Модуль(198): Ошибка при вызове конструктора (WSОпределения) WSОпределения = Новый(Тип(«WSОпределения»). Давайте разбираться в чем собственно дело.
Причины ошибок с модулем 198-504
Вся проблема связана с неправильным и устаревшим сертификатом, это бывает если вы давно не обновляли свою версию 1С, а в этот момент как раз истек срок сертификата, который участвует в подключении к внешним сервисам, например, npchk.nalog.ru или api.orgregister.1c.ru.
Вот так вот выглядит более полный текст ошибки:
Не работает кнопка «Заполнить по ИНН» в Справочнике Контрагенты при создании нового.
Выдает ошибку:
{ОбщийМодуль.ОбщегоНазначенияПовтИсп.Модуль(198)}: Ошибка при вызове конструктора (WSОпределения)
WSОпределения = Новый(Тип(«WSОпределения»), Параметры);
по причине:
При вызове веб-сервиса произошла ошибка. При создании описания сервиса произошла ошибка. URL сервиса: https://api.orgregister.1c.ru/orgregister/v7?wsdl
по причине:
Ошибка работы с Интернет: Удаленный узел не прошел проверку

Комментарий: {ОбщийМодуль. ОбщегоНазначения. Модуль (5303)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения (ИмяФайлаWSDL, ИмяПользователя, Пароль, ИнтернетПрокси, Таймаут);
по причине:
Ошибка импорта схемы
по причине:
Ошибка при выполнении файловой операции ‘_ttp://npchk.nalog.ru:80/FNSNDSCAWS_2?xsd=1’
по причине:
Ошибка работы с Интернет: произошел таймаут при ожидании ответа шлюзу (504).
10060 — Ошибка соединения с сервером
HOST — npchk.nalog.ru[81.177.31.8]; PORT — 80
Connection timed outTraffic Inspector HTTP/FTP/Proxy server (3.0.2.912)
по причине:
Ошибка работы с Интернет: произошел таймаут при ожидании ответа шлюзу (504)
Как решить проблему
В случае клиент-серверной версии необходимо добавить сертификат Digicert как на сервере, так и на всех клиентах. Добавлять стоит способом, описанным в пункту 1 или 3. Перегружать сервер после обновления cacert.pem не нужно.
- Самым быстрым методом? будет замена сертификата cacert.pem, который располагается в папке с вашим клиентом. Скачать cacert.pem можно о официального сайта по ссылке:
https://its.1c.ru/db/files/1CITS/EXE/cacert/cacert.zip

В итоге у вас будет архив с сертификатом cacert.pem, распакуйте его. Далее, откройте вашего клиента, где вы получаете ошибку при вызове конструктора WSОпределения. И перейдите по пути:
C:Program Files (x86)1cv88.3.11.3034bin это в случае с версией 8.3.11.3034

Если вы теряетесь в своих версиях, то попробуйте произвести поиск по cacert.pem в папке C:Program Files (x86) и посмотрите, где у вас нужно подменить, этот файл. Меняете его на свежий и радуетесь жизни.

- Второй метод, заключается в использовании обработки в 1С. Скачайте файл обработка.epf
https://its.1c.ru/db/files/1CITS/EXE/digicert_epf/digicert_epf.zip
ОБЯЗАТЕЛЬНО запустите его от имени администратора, иначе можете получить ошибку:
Ошибка записи сертификата. Возможно:
— Файл cacert.pem занят. Освободите файл от редактирования и запустите обработку заново.
— Закройте 1С: Предприятие и запустите с правами администратора операционной системы
- Ну и третий метод, это редактирование текущего файла cacert.pem. Откройте его текстовым редактором и в самом конце файла вставьте содержимое файла digicert.pem, который можно скачать тут:
https://its.1c.ru/db/files/1CITS/EXE/digicert/digicert.zip

| Автор | Сообщение |
|---|---|
|
Тема: Re:Интеграция с 1С
|
|
|
СергейА
Зарегистрирован: 30/10/2017 19:34:19 Оффлайн
|
Добрый день. У кого версия 1С 8.2 — может кто-то нашел решение:
следующий код: Возникает ошибка:
{Форма.Форма.Форма(5)}: Ошибка при вызове конструктора (WSОпределения) Версия платформы 8.2.19.130 и переходить на версию 8.3 не планируется, уже вроде все облазил, но решения нормального найти не могу. Кроме как не использовать динамическое описание ws-ссылки — нет способа решить проблему? |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
lalex23
Зарегистрирован: 10/03/2016 14:26:10 Оффлайн
|
http://vetrf.ru/vetrf-forum/posts/list/285/6955.page#43830 |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
СергейА
Зарегистрирован: 30/10/2017 19:34:19 Оффлайн
|
Спасибо! |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
kolganov50@mail.ru
Зарегистрирован: 18/12/2017 20:41:37 Оффлайн
|
попробовал запрос по интервалу, все равно ошибка( то же самое при поиске по идентификатору) <?xml version=»1.0″ encoding=»UTF-8″?> <SOAP-ENV:Envelope xmlns:dt=»http://api.vetrf.ru/schema/cdm/dictionary/v2″ xmlns:merc=»http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2″ xmlns:apldef=»http://api.vetrf.ru/schema/cdm/application/ws-definitions» xmlns:apl=»http://api.vetrf.ru/schema/cdm/application» xmlns:vd=»http://api.vetrf.ru/schema/cdm/mercury/vet-document/v2″ xmlns:bs=»http://api.vetrf.ru/schema/cdm/base» xmlns:SOAP-ENV=»http://schemas.xmlsoap.org/soap/envelope/»><SOAP-ENV:Header/><SOAP-ENV:Body><apldef:submitApplicationRequest><apldef:apiKey>…</apldef:apiKey><apl:application><apl:serviceId>mercury-g2b.service:2.0</apl:serviceId><apl:issuerId>…</apl:issuerId><apl:issueDate>2017-12-20T13:53:30</apl:issueDate><apl:data><merc:getVetDocumentChangesListRequest><merc:localTransactionId>a100013</merc:localTransactionId><merc:initiator><vd:login>kolganov_ve_171023</vd:login></merc:initiator><bs:listOptions><bs:count>5</bs:count></bs:listOptions><bs:updateDateInterval><bs:beginDate>2017-12-15T13:53:30</bs:beginDate><bs:endDate>2017-12-16T13:53:30</bs:endDate></bs:updateDateInterval><dt:enterpriseGuid>80cd0344-ba4b-46d3-b58b-65717de11ecb</dt:enterpriseGuid></merc:getVetDocumentChangesListRequest></apl:data></apl:application></apldef:submitApplicationRequest></SOAP-ENV:Body></SOAP-ENV:Envelope> получаю faultstring>BEA-382513: OSB Replace action failed updating variable «body»: Error parsing XML: {err}FORG0005: expected exactly one item, got 0 items</faultstring> |
|
|
|
|
Тема: Интеграция с 1С
|
|
|
Sergey-Chelny
Зарегистрирован: 07/09/2017 17:33:44 Оффлайн
|
К подключению к тестовому серверу используется порт 8002, а к боевому 433 ? Ничего не изменилось ? |
| Кто хочет, тот ищет возможности, кто не хочет — ищет причины. | |
|
|
|
|
Тема: Интеграция с 1С
|
|
|
lalex23
Зарегистрирован: 10/03/2016 14:26:10 Оффлайн
|
вроде нет, сейчас пинаю тестовый, а с рабочим уже полтора года всё работает |
|
|
|
|
Тема: Интеграция с 1С
|
|
|
Sergey-Chelny
Зарегистрирован: 07/09/2017 17:33:44 Оффлайн
|
Хммм…. Переходим с тестового на боевой. При попытке загрузить входящие партии выдает ошибку: «Ошибка работы с Интернет: Не могу установить соединение». Вот и думаю, может что изменилось, а я не в курсе. |
| Кто хочет, тот ищет возможности, кто не хочет — ищет причины. | |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
Павел Большаков
Зарегистрирован: 25/05/2017 10:01:41 От: Контур.Меркурий Оффлайн
|
У нас как правило это либо закрыты порты — пинаем админа, либо неудачная версия платформы 1С (баги в SSL в платформе) Это сообщение было редактировано 1 раз. Последнее обновление произошло в 21/12/2017 13:16:41 |
| https://kontur.ru/mercury | |
|
|
|
|
Тема: Интеграция с 1С
|
|
|
lalex23
Зарегистрирован: 10/03/2016 14:26:10 Оффлайн
|
платформа не 8.2.19.76 ? у нас именно на ней были проблемы, пришлось переводить на 8.2.19.103 |
|
|
|
|
Тема: Интеграция с 1С
|
|
|
Sergey-Chelny
Зарегистрирован: 07/09/2017 17:33:44 Оффлайн
|
Платформа 8.3.10.2561 Админ бъет себя в грудь что порт 433 открыт.
В вебе при обращении к «https://api2.vetrf.ru:8002/platform/services/ApplicationManagementService» просит авторизоаться, а при обращении «https://api2.vetrf.ru:433/platform/services/ApplicationManagementService» долго думает и выдает ошибку. Ту-пи-к какой то |
| Кто хочет, тот ищет возможности, кто не хочет — ищет причины. | |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
СергейА
Зарегистрирован: 30/10/2017 19:34:19 Оффлайн
|
«https://api2.vetrf.ru:433/platform/services/ApplicationManagementService» — это же не путь к боевому? «https://api.vetrf.ru:433/platform/services/ApplicationManagementService» — больше похоже на путь к боевому |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42 Оффлайн
|
в wsdl все написано, смотрите в конце файла |
| https://github.com/mevgenym/1c_vetis.api_v1.1 https://github.com/mevgenym/1c_vetis.api |
|
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
gni
Зарегистрирован: 13/10/2016 14:31:18 Оффлайн
|
А разве порт не 443?
|
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
gni
Зарегистрирован: 13/10/2016 14:31:18 Оффлайн
|
Здравствуйте! Подскажите, в чем может быть дело. Пытаюсь зарегистрировать продукцию в Меркурии. Почему-то запрос в тестовой базе работает, а в рабочем Меркурии возвращает ошибку: <env:Envelope xmlns:env=»http://schemas.xmlsoap.org/soap/envelope/»><env:Header/><env:Body><receiveApplicationResultResponse xmlns=»http://api.vetrf.ru/schema/cdm/application/ws-definitions»><application xmlns=»http://api.vetrf.ru/schema/cdm/application»><applicationId>d86b9955-48a6-4e6a-b412-e4f1ec32e52f</applicationId><status>REJECTED</status><serviceId>mercury-g2b.service</serviceId><issuerId>issuerId</issuerId><issueDate>2017-12-22T00:59:24.000+03:00</issueDate><rcvDate>2017-12-22T07:56:42.000+03:00</rcvDate><prdcRsltDate>2017-12-22T07:56:42.000+03:00</prdcRsltDate><errors><apl:error code=»APLM0002″ xmlns:apl=»http://api.vetrf.ru/schema/cdm/application»>Unsupported application data format</apl:error></errors></application></receiveApplicationResultResponse></env:Body></env:Envelope> Отправляемый запрос:
<Envelope xmlns=»http://schemas.xmlsoap.org/soap/envelope/» xmlns Спасибо. |
|
|
|
|
Тема: Re:Интеграция с 1С
|
|
|
rty
Зарегистрирован: 22/11/2017 10:05:33 Оффлайн
|
Подскажите, при гашении ВСД получаю:
Пишу
Чего ему надо? Решил сам, не было секции packingType Это сообщение было редактировано 2 раз. Последнее обновление произошло в 22/12/2017 10:55:25 |
|
|
|
|
|
Обновлено: 29.01.2023
Ошибка происходит при попытке загрузить из Excel в 1С, когда код обработчика выполняется не на клиенте, а на сервере и в большинстве случаев текст ошибки говорит об отсутствии прав у пользователя сервера 1С.
Особенности
Кодом со стороны 1С без изменения места исполнения не устраняется, использование других функций подключения Com также не дает положительных результатов.
Убедиться в причине ошибки возможно, если посмотреть логи системы.
Устранение:
- на сервере убиваем excel (taskkill /im excel.exe /f)
- открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
- в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
- справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем пользователя с администраторскими правами, ОК.
Может оказаться, что «Microsoft Excel Application» отсутствует в списке, в данном случае
- Запускаем REGEDIT
- Открываем ветку ComputerHKEY_CLASSES_ROOTAppIDEXCEL.EXE, если ее нет, то создаем
- Создаем в ней строковый параметр AppID =
- Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.
- После этого в Component Services должен появиться «Microsoft Excel Application»
Чтобы решить эту проблему, я включил пользователя USRV82, под которым запускается сервер приложений 1С Предприятия 8.3, в группу Distributed COM Users, но ошибка сразу не ушла, потребовалась перезагрузка.
Осложняло проблему то, что ошибка плавала: периодически выходила, либо в момент создания объекта, либо уже в момент вызова методов excel-application.
Так что нельзя однозначно сказать, что же решило проблему.
Заключение
В большинстве случаев уйти от дополнительной настройки операционной системы возможно, если использовать вызова Com-Объекта на клиенте. При правильной установке объектов они работают даже при различных по битности 1с и Excel, OS.
В моем же случае клиентские компьютеры работали на Ubuntu, поэтому вся обработка перенесена на сервер.
Бывает такое: вы прописываете для компонента пользователя и пароль.
Затем через некоторое время меняете пароль и компонент перестает работать: выходит такая же ошибка «Интерфейс не поддерживается». Следует просто вбить новый пароль.
Реклама духов принесла мне больше известности, чем любой фильм, в котором я снималась.
— Денев Катрин
Добрго времени!
Подскажите, как привильно сделать синхронизацию контрагентов между 1С и сайтом используя веб-сервисы. При создании контрагента на сайте — он должен быть передан в 1С и наоборот, при создании в 1С — передать на сайт. Конфигурация самописная(эмитирует торговлю)
Далее оздал обработку и привзал к событию нажтия кнопки вышеуказанную функцию.
Ввылетает ошибка:
: Ошибка при вызове метода контекста (Obmen)
РезультатОбмена = ПроксиСервер.Obmen();
по причине:
Ошибка вызова операции сервиса: :WebService:Obmen()
по причине:
Ошибка SOAP сервера: Неизвестная ошибка. : Значение не является значением объектного типа (Добавить)
по причине:
: Значение не является значением объектного типа (Добавить)
Что не хватает? Как реализовать обратный обмен из сайта в 1С?? Нужно ли создвать специальную web-обработку для этих целей на языке PHP?
(3) Manticor, проверьте отладчиком, правильно ли у вас заполняются свойства «Код» и «Номенклатура»в строке
(4) VBod, кстати не могу войти в отладчик — как будто на сервер пытаюсь зайти в серверном фарианте)), у меня на форме кнопка, на ней такая процедура
КонецПроцедуры // ()
обмен уже приводил выше. Как отладку включить?))
(7) Manticor, а обработка вызова Web-Сервиса у вас расположена в той же базе, где и сам Web-Сервис что-ли?
(9) Manticor, а что бы запустить отладчик, нужно в каталоге публикации вашего сервиса на Apache открыть файл default.vrd и перед строкой
Затем в конфигураторе, в меню «Отладка» > «Подключение» > «Автоматическое подключение» установить флажок напротив пункта «Web-Сервисы». После этого можно ставить точку останова в вашей процедуре Obmen и вызывать сервис обработкой из другой базы.
Только учтите, что редактировать файл default.vrd нужно уже после публикации Web-Сервиса, т.к. при публикации он заменяется на создаваемый Apache по умолчанию.
(11) VBod, (10) VBod, сделал все как Вы и сказали, создал чистую базу, туда перенес обработку.
Единтсвенное — убрал аутентификацию, поскольку вроде с ней не работает).
В итоге код такой:
Но зато заработал после добавлени функции отладки первоначальный код — отладчик выполняет функцию obmen, однако после вызова выводится ошибка:
(12) Manticor, как-то странно, как у вас мог заработать отладчик, если на строке получения прокси, пишет что сервис не найден?
Можете показать, что у вас в настройках публикации на веб-сервере и на закладках «Операции» и «Прочее» в настройках самого веб-сервиса?
(14) Manticor, в веб-сервисе на закладке «Прочее» в «URI пространства имен» установите значение «http://www.sample-package.org».
И в коде у вас должно быть так:
(15) VBod, попробовал сделать так. Поставил аутентификацию — также как и было.
(17) VBod, спасибо большое Вам, вроде без ошибок работает, тоесть сейчас при выполнении РезультатыИмпорта имеет такие данные(скрин приложил).
Что еще нужно сделать(добавить) для полноценной синхронизации контрагентов между 1С и сайтом и наоборот??
Сейчас на выходе у нас лишь объект XDTO.
(18) Manticor, ну теперь доделывайте передачу остальных реквизитов, которые вам нужны и делайте на сайте вызов этого веб-сервиса. Неплохо бы сделать, что бы в ответ веб-сервис возвращал данные с подтверждением удачной загрузки или ошибку в случае неудачной, что позволит в случае ошибки отправлять данные повторно. Продумайте предварительную проверку (перед загрузкой), существования контрагента, это позволит избежать дублей. Затем пишите веб-сервис на сайте, для передачи контрагентов из 1С на сайт. Плюс читайте (5) и (6).
Вот с сайта в 1С как раз лучше выгружать используя Web-Сервис созданный в 1С. Т.е. вы сейчас создаете в 1С Web-сервис, который будет не передавать контрагентов на сайт, а наоборот принимать их с сайта. Это удобнее т.к. на сайте вы можете привязать вызов этого Web-сервиса к событию создания контрагента, таким образом создание контрагента в 1С у вас будет происходить практически синхронно вместе с его созданием на сайте.
(1) Manticor, а вот на сайте уже нужно будет разработать еще один Web-Сервис на PHP, который будет создавать контрагентов. Затем при создании контрагента в 1С, нужно будет вызвать этот Web-Сервис и в параметрах передавать ему данные нового контрагента. Только не забудьте учесть, что в 1С, контрагент может быть как создан, так и удален или его данные могут быть изменены, поэтому нужно учесть возможность удаления и изменения контрагентов на сайте, если они изменяются или удаляются в 1С.
Лучше создайте пустую базу и там разместите обработку вызывающую ваш Web-Сервис. И вызывайте его лучше не через статическую WS-Ссылку, а динамически:
&НаСервере
Процедура ИмпортВебСервис()
Определения = Новый WSОпределения(«http://109.195.230.156/test/ws/WebService?wsdl»);
Прокси = Новый WSПрокси(Определения, «http://www.my.org», «WebService», «WebServiceSoap»);
РезультатыИмпорта = Прокси.Obmen();
КонецПроцедуры
При исполнении получаю:Метод объекта не обнаружен (Obmen)
На сервисе операция obmen есть
Только лучше создайте новую тему, что бы не писать здесь. А мне можете кинуть ссылку в личку. Если смогу, постараюсь помочь.


Значит дело было так. Появилась необходимость подключаться к базам по com соединению, для анализа тамошних объектов метаданных. Проблема оказалась в том, что базы могли работать на разных версиях 1С. Пошел в интернет, искал, читал, но все фигня, в оновном все предлагают держать базы на одной версии, что для меня было невозможным.
Кроме, вот этой статьи. Огромное спасибо автору (Леонид Кириенко) и zakiap
Тут уже интересней, но есть пару минусов
1) 1С должна работать от имени учетки с админскими правами.
2) «Варварское» поведение по отношению dllhost.exe 🙂
3) Могут возникнуть проблемы при одновременном обращении к базам на разных версиях.
Но, как оказалось, самым для меня полезным, оказалась не сама статья, а один из комментариев к ней.

Если присмотрется, то видно, что у него создано несколько оберток для разных версий. Увидев этот коммент, я тут же обрадовался, думал сейчас все расскажут. Но не тут то было, показать, показал, а рассказать забыл)
Инструкция
1. Идем «Панель управления» — «Администрирование» — «Службы компонентов»
2. В оснастке служб компонентов, «Службы компонентов» — «Компьютеры» — «Мой компьютер» — «Приложения COM+»
3. Создаем новое приложение, правой кнопкой по «Приложения COM+» — «Создать» — «Приложение»
4. Выбираем «Создать новое приложение», называем например «1cv8», тип выбираем «Библиотечное приложение»
должно полчуить так

5. Раскрываем «1cv8», правой кнопкой по «Компоненты» — «Создать» — «Компонент».
6. Выбираем вариант «Установка новых компонентов», находим нашу библиотеку comcntr.dll
Находится она в катлоге BIN установленной платформы, у меня например путь такой
«C:Program Files (x86)1cv88.3.10.2168bincomcntr.dll»
должны получить следующую картину

7. Правой кнопкой по «V83.COMConnector.1» — «Псевдоним. «, меняем наименование с «CopyOf.V83.COMConnector.1» на «V83.COMConnector_8.3.9.2033». Данное действие проделываем для всех нужных версий платформ.
8. Открываем «regedit» через пуск или команду «Выполнить», нажимаем F3 и указываем для поиска строку с наименованием созданой нами обертки, например «V83.COMConnector_8.3.9.2033». Или использум для поиска CLSID созданной обертки.
9. Ищем значение в ветке «HKEY_LOCAL_MACHINE» у меня путь такой HKEY_LOCAL_MACHINESOFTWAREClassesWow6432NodeCLSID\ выглядеть должно так

В ветке «InprocServer32» меняем значение у меня, «C:Program Files (x86)1cv88.3.10.2168bincomcntr.dll» на путь к нужной версии длл, в данном случае «C:Program Files (x86)1cv88.3.9.2033bincomcntr.dll».
Данное дейстие проделываем для всех созданных оберток.
Все готово) Для подключения к конкретной версии базы, в 1С теперь нужно использовать следующую конструкцию
В файлах утилита, которая выполнит все эти действия автоматически. Подходит для тех у кого 1С лежит в каталоге
«C:Program Files (x86)1cv8». У кого что то отличается, вот ссылка на GitHub . Запустить утилиту нужно от имени администратора. Надеюсь данный материал будет вам полезен)
Специальные предложения









При регистрации библиотек из разных версий 8.3, в одном СОМ приложении, возможно подключиться только к одной из версий.
(15) Решил проблему, создав компоненты в отдельных приложениях СОМ
Спасибо за статью. Мне она помогла, но если просто сделать как написано, возникали ошибки. Куча комментариев с разными ошибками не дали быстрого решения как именно сделать настройки. Предлагаю слегка скорректированный алгоритм. (*) — измененные шаги. В нем нет последних шагов по работе с реестром. У меня сработало на двух серверах.
Если автор посчитает возможным — можно было бы перенести в шапку.
1. Идем «Панель управления» — «Администрирование» — «Службы компонентов»
2. В оснастке служб компонентов, «Службы компонентов» — «Компьютеры» — «Мой компьютер» — «Приложения COM+»
3. Создаем новое приложение, правой кнопкой по «Приложения COM+» — «Создать» — «Приложение»
4*. Выбираем «Создать новое приложение», называем например «1cv8», тип выбираем «Серверное приложение»,
Учетная запись — Текущий пользователь, Пользователь с ролью Owner — поставил администратора компьютера (сервера).
(без этого возможна ошибка -2147024769(0x8007007F): Не найдена указанная процедура)
5*. Нажимаем правой кнопкой по ветке 1cv8 – Свойства – Безопасность:
— Снимаем галку «Принудительная проверка доступа для приложений»
— Ставим галку «Применить политику программных ограничений»
— Уровень ограничений «Неограниченный»
(без этого возможна ошибка -2147024891(0x80070005): Отказано в доступе)
6. Раскрываем «1cv8», правой кнопкой по «Компоненты» — «Создать» — «Компонент».
7. Выбираем вариант «Установка новых компонентов», находим нашу библиотеку comcntr.dll (той версии платформы, к которой надо будет подключаться)
-* Если установка платформы на сервер не требуется, то достаточно скопировать в некую папку на сервере все содержимое папки bin соответствующей платформы и указать comcntr.dll из этой папки
8. Правой кнопкой по «V83.COMConnector.1» — «Псевдоним. «, меняем наименование с «CopyOf.V83.COMConnector.1» на «V83.COMConnector_8.3.9.2033». Данное действие проделываем для всех нужных версий платформ.
Вот так вот выглядит более полный текст ошибки:
WSОпределения = Новый(Тип(«WSОпределения»), Параметры);
Ошибка работы с Интернет: Удаленный узел не прошел проверку

10060 — Ошибка соединения с сервером
по причине:
Ошибка работы с Интернет: произошел таймаут при ожидании ответа шлюзу (504)
Как решить проблему
В случае клиент-серверной версии необходимо добавить сертификат Digicert как на сервере, так и на всех клиентах. Добавлять стоит способом, описанным в пункту 1 или 3. Перегружать сервер после обновления cacert.pem не нужно.

В итоге у вас будет архив с сертификатом cacert.pem, распакуйте его. Далее, откройте вашего клиента, где вы получаете ошибку при вызове конструктора WSОпределения. И перейдите по пути:

Если вы теряетесь в своих версиях, то попробуйте произвести поиск по cacert.pem в папке C:Program Files (x86) и посмотрите, где у вас нужно подменить, этот файл. Меняете его на свежий и радуетесь жизни.

- Второй метод, заключается в использовании обработки в 1С. Скачайте файл обработка.epf
ОБЯЗАТЕЛЬНО запустите его от имени администратора, иначе можете получить ошибку:
Ошибка записи сертификата. Возможно:
— Файл cacert.pem занят. Освободите файл от редактирования и запустите обработку заново.
— Закройте 1С: Предприятие и запустите с правами администратора операционной системы
Использование COMOбъектов в 1С это прошлый век, сейчас уже ни кто так не пишет. Раньше с его помощью реализовали печать документов. Они выгружались в OpenLibre Office и от туда уже печатались.
Появиться такая ошибка может после
1 Обновления платформы
2 Переустановки ОС и 1С
3 Обновление конфигурации
4 Проблем с офисными пакетами
Это самые распространенные.
Три способа избавиться от ошибки «Ошибка при вызове конструктора…»
И так после каких либо манипуляций с 1С у вас стала появляться ошибка.
Первый способ
Самое простое это переустановить офисные пакеты OpenLibre, так же как вариант если у вас стоял Open поставить Libre и на оборот. Это нужно для того чтобы обновить специальный компонент.
Второй способ
Попробовать зарегистрировать самостоятельно, для этого запускаем командную строку от имени администратора, переходим в каталог введя команду.
regsvr32 «C:Program Files (x86)1cv88.3.16.18.14comcntr.dll»
Кстати данную манипуляцию нужно проводить на сервере.
Третий способ
Установить 32 битную версию клиента 1С, можно даже поверх х64. В итоге у вас появиться два ярлычка для запуска, один для х32 второй х64.

Версию можно указать и в ярлыке запуска 1С.
Можно еще попробовать самостоятельно создать COM + , но лично из своего опыта могу сказать это не помогает. Самый действенный вариант это установка х32 клиента. Так как компонента которая необходимо работает только с х32.
Так же проблема может быть непосредственно в самом коде.
Ошибка (COMOбъект) : 1 комментарий
Хотелось бы узнать и утвердиться в том, что ваша информация действительно сможет помочь людям в данной ситуации с переустановкой офисных центров и вызовов мастеров, в принципе информация интересная, информативная, но слишком много заумных слов
Читайте также:
- Конструктор 60138 city police стремительная погоня lego
- Лего музей в лондоне
- Правильное название деталей лего
- Производители конструкторов типа лего
- Lego битва капитана америка с гидрой
Создание WSПрокси
Доброго времени суток! Пытаюсь создать прокси для последующего создания XDTO фабрики на основе внешнего описание веб-сервиса. Прикладываю ссылку на описание сервиса: https://www.travelline.ru/Api/TLConnect.svc?singleWsdl
Новый WSПрокси( , , , , )
Параметры:
(обязательный)
Тип: WSОпределения.
Определение веб-сервисов, на основе которого создается данный прокси.
(обязательный)
Тип: Строка.
URI пространства имен веб-сервиса, с которым связывается данный прокси.
(обязательный)
Тип: Строка.
Имя веб-сервиса, с которым связывается данный прокси.
(обязательный)
Тип: Строка.
Имя точки подключения веб-сервиса, с которой связывается данный прокси.
Не понимаю, что писать в параметре ? И правильно ли я определила параметры URIПространстваИменСервиса и ИмяСервиса, в соответствии с приложенным описанием сервиса?
Так же не очень понятно, как создавать объект Фабрики, что такое пакеты?:
Синтаксис:
Новый ФабрикаXDTO( , )
Хорошо, это получилось создать. Далее пишу:
Фабрика = Прокси.ФабрикаXDTO;
ОбъектХ = Фабрика.Создать(Фабрика.Тип(«https://www.travelline.ru/Api/TLConnect», . ));
(обязательный)
Тип: Строка.
URI пространства имен запрашиваемого типа.
Тип: Строка.
Имя запрашиваемого типа.
Что в моем случае может быть имя? URI пространства имен — тоже, что и при создании прокси?
Источник
Подключение к внешнему веб-сервису
Пытаюсь подключиться к внешнему вебсервису по такому примеру:
Определение = Новый WSОпределения(«url», «User», «Pass»);
Прокси = Новый WSПрокси(Определение, «http://ваш_URI_имен», «ТочкаВхода», «ТочкаВходаSoap»);
Прокси.Пользователь = User;
Прокси.Пароль = Pass;
Ответ = Прокси.МойМетодВебСервиса(«параметр1», «параметр2»);
Не могу разобраться, что должно быть в качестве 2, 3 и 4 параметра в конструкторе WSПрокси. Смотрим синтакс помощник:
2ой параметр: URI пространства имен веб-сервиса, с которым связывается данный прокси
3: Имя веб-сервиса, с которым связывается данный прокси
4: Имя точки подключения веб-сервиса, с которой связывается данный прокси.
Покажите, пожалуйста, на примере веб-сервиса от яндекса.спеллера https://speller.yandex.net/services/spellservice?WSDL , что в данном случае я должен указать в качестве этих параметров?
Но хотелось бы еще понимать теорию. Если не кодом, то как глядя на WSDL файлик определить эти параметры?
URI пространства имен веб-сервиса: оно встречается по данной ссылке https://speller.yandex.net/services/spellservice?WSDL 3 раза вначале https://yadi.sk/i/qHE8r1eVYqQpuA и 2 раза в конце файла https://yadi.sk/i/W0t02ck9dWjScw
Что конкретно из этого является URI пространством имен, а что просто имеет такое же значение в данном конкретном случае?
SpellService: Ну тут вроде проще https://yadi.sk/i/Ba4Q5rYFQgKFzQ в конце файла сервис нейм — оно?
Там же и точки подключения в последнем блоке внизу.
Но в чем разница между этими точками подключения? Почему берем первую, а не вторую?
Источник
АйТиБложик
Маленький IT блог с характером 1С.
Вызов Web-сервиса с помощью динамической ссылки
- Получить ссылку
- Электронная почта
- Другие приложения
Механизм Web-сервисов позволяет использовать систему, написанную на платформе 1С, как набор сервисов в сложных распределенных и гетерогенных системах, а также позволяет интегрировать ее с другими информационными системами с использованием сервис-ориентированной архитектуры (SOA).
Платформа 1С позволяет разработчику вызывать Web-сервисы, предоставляемые другими поставщиками, двумя способами:
- с помощью статических ссылок, создаваемых в дереве объектов конфигурации;
- с помощью динамических ссылок, создаваемых средствами встроенного языка.
При использовании статической ссылки платформа 1С получает описание Web-сервиса поставщика только один раз, при создании ссылки. За счет этого достигается большая скорость работы.
![]() |
| 1. Объект конфигурации WS-ссылки для использования механизма статических ссылок |
При использовании динамической ссылки, описание Web-сервиса получается каждый раз при вызове Web-сервиса. Скорость работы при этом уменьшается, но зато такой подход обеспечивает актуальность описания Web-сервиса поставщика, то есть используется последняя версия WSDL-документа. В случае же использования статических ссылок для получения актуального описания Web-сервиса требуется выполнить повторный импорт WSDL-документа средствами конфигуратора и затем сохранить измененную конфигурацию.
*WSDL-документ — язык описания веб-сервисов и доступа к ним, основанный на языке XML.
Рассмотрим пример вызова Web-сервиса с помощью динамической ссылки на примере сервиса проверки правописания Яндекс.Спеллер. Для доступа к Яндекс.Спеллеру по HTTP предлагаются XML-, SOAP-, JSON- и JSONP-интерфейсы. Все интерфейсы обеспечивают одинаковую функциональность и используют одни и те же входные параметры. WSDL-документ для SOAP доступен по адресу: http://speller.yandex.net/services/spellservice?WSDL.
Функция вызова Web-сервиса:
// Функция осуществляет проверку правописания текста.
//
// Параметры
// ПроверяемыйТекст — Строка — текст для проверки правописания.
//
// Возвращаемое значение:
// Строка — слова, в которых допущены ошибки.
//
&НаСервере
Функция ПроверитьОрфографию(ПроверяемыйТекст)
МестоположениеWSDL = «http://speller.yandex.net/services/spellservice?WSDL»;
WSОпределение = Новый WSОпределения(МестоположениеWSDL);
ПространствоИмен = «http://speller.yandex.net/services/spellservice»;
SpellService = Новый WSПрокси(WSОпределение, ПространствоИмен, «SpellService», «SpellServiceSoap»);
Ответ = SpellService.checkText(ПроверяемыйТекст);
Ошибки = «»;
Для Каждого Ошибка Из Ответ.error Цикл
Ошибки = Ошибки + «Ошибка в слове: » + Ошибка.word + Символы.ПС;
КонецЦикла;
Возврат Ошибки;
КонецФункции // ПроверитьОрфографию()
В данной функции создается объект WSОпределения, который получает определение Web-сервиса из WSDL-документа, адрес документа приведен выше.
На основе определения Web-сервиса создается объект WSПрокси и связывается с точкой подключения Web-сервиса SpellServiceSoap.
Для инициализации объекта WSПрокси вся необходимая информация содержится в элементе WSDL-документа. В атрибуте name этого элемента содержится имя сервиса, а атрибут name дочерних элементов содержит имя точки подключения.
![]() |
| 2. Точки подключения Web-сервиса и его имя |
Адрес пространства имени содержится в теге targetNamespace корневого элемента WSDL-документа .
![]() |
| 3. Адрес пространства имени Web-сервиса |
После инициализации объекта WSПрокси, выполняется операция Web-сервиса checkText(), в которую передаётся текст.
![]() |
| 4. Операции Web-сервиса и их типы входящих и исходящих сообщений |
Операция веб-сервиса возвращает список ошибок в виде списка XDTO. Сам элемент списка представляется объектом XDTO.
К сожалению, платформа 1С во всем объеме не поддерживает работу с Web-сервисами средствами встроенного языка, например, задать значения атрибутов lang, options, format для входящего сообщения операции checkText() становится невозможным, так как нам дозволено только передавать параметры операции:
![]() |
| 5. Описание входящего сообщения операции checkText() |
Термин XDTO (XML Data Transfer Objects), означает не какой-то всемирно принятый стандарт, поддерживаемый платформой 1С, а наоборот, стандарт рожденный в недрах фирмы 1С, хотя очень похож на XML Schema, на недоделанный XML Schema.
А так, работать можно! 🙂
Обработку вызова веб-сервиса Яндекс.Спеллер можно скачать по этой ссылке.
Источник
Заметки 1С-Программиста
Цель блога описать интересные и полезные примеры программирования в системе 1С:Предприятие 8.
Страницы
суббота, 6 октября 2012 г.
1С:Предприятие 8. Веб-сервисы. Классы Платформы 1С для вызова операций веб-сервиса
В платформе 1С для работы со сторонними с веб-сервисами существуют следующие объекты:

Что же означают слова динамическая ссылка и статическая? Статистическая ссылка хранится в дереве метаданных (WS-ссылка) и задается на этапе конфигурирования, при ее создании подгружается определение веб-сервиса(описание WSDL) и сохраняется в конфигурации. Хранение определения веб-сервиса позволяет экономить время на его получении при обращении к веб-сервису. Минусом такого использования является изменение используемого веб-сервиса. При изменении веб-сервиса, в вашей конфигурации будет старое описание и вызов веб-сервиса просто перестанет работать. А для загрузки нового описания вам придется изменять конфигурацию.
Динамические ссылки напротив, подгружают актуальное описание при каждом создании класса WSОпределения.
Приведу пример обращения к веб-сервису по статической ссылке.
Для начало создадим WS-ссылку. Для этого откройте свою конфигурацию и найдите в окне конфигурации Общие-WSСсылка.

И нажмите Добавить. Платформа попросит ввести путь к WSDL.

Если вы публикуете веб-сервис средствами 1С то путь к WSDL будет такого вида:
http://домен_сайта/имя_публикации_базы/ws/имя_веб_сервиса?wsdl. Позже, когда мы будем создавать свой веб-сервис, я объясню подробнее откуда берутся эти имена.
Если на веб-сервис стоит ограничение, то введите логин и пароль. Если вы создавали веб-сервис в 1С то для авторизации используйте учетные данные пользователей БД, у которых есть право на использование операций веб-сервиса.

После ввода логина и пароля пройдет некоторое время на закачку WSDL и WS-ссылка будет создана.

Теперь можно обратиться к веб-сервису. Создадим процедуру с директивой &НаСервере:
В данном примере мы используем метод СоздатьWSПрокси типа WSСсылкаМенеджер.WSСсылка, который создает объект WSПрокси. В WSПрокси мы указываем логин и пароль для доступа к веб-сервису и уже после этого вызываем функцию веб-сервиса. В нашем случае это функция ListOfDevices() .
Теперь попробуем обратиться к той же самой операции веб-сервиса через динамическую ссылку. Для этого создадим процедуру с директивой &НаСервере:
WSОпределение = Новый WSОпределения(«http:// xxx.xxx.xxx.xxx /InfoBase/ws/WebServices?wsdl», «admin» , «admin» );
WSПрокси = Новый WSПрокси(WSОпределение, «http://xxx.xxx.xxx.xxx» , «WebServices», «WebServicesSoap» );
WSПрокси.Пользователь = «admin» ;
WSПрокси.Пароль = «admin» ;
РезультатВебОперации = WSПрокси .ListOfDevices();
КонецПроцедуры
В окончание статьи приведу ссылку на обработку которая позволит вам вызвать операции веб- сервиса. В обработке перед этим надо ввести путь к файлу WSDL, логин и пароль — нажать кнопку «Получить WSDL» и после этого можно просмотреть какие есть операции в веб-сервисе и вызвать их. Для вызова операции необходимо выбрать сервис, точку подключения и операцию. Перейти на вкладку «Параметры операции», ввести необходимые параметры операции и нажать кнопку «Выполнить операцию». На вкладке «Результат операции» будет ответ от операции в XML виде.
Источник
Здравствуйте. В курсе вы неоднократно говорили, что при реализации http-сервисов в 1С (платформа 8.3.5) – рекомендуется перейти на них. А в чем будет их преимущество? В скорости авторизации? В скорости передачи данных? В надежности? В меньшем количестве кода (как мне показалось)?
И второй вопрос. Попробовав осилить http-сервис собственными силами, попробовал реализовать две процедуры:
// на мобильном устройстве
&НаСервере
Функция ВыполнитьСоединениеПоХТТП()
// подготовка файла для передачи
СтруктураДляПередачи = Новый Структура;
СтруктураДляПередачи.Вставить(“Пользователь”, ПараметрыСеанса.ТекущийПользователь);
СтруктураДляПередачи.Вставить(“ДанныеСтрокой”, “Строковые данные”);
ХранилищеДляПередачи = Новый ХранилищеЗначения(СтруктураДляПередачи, Новый СжатиеДанных(9));
ТекстФайла = Сериализовать(ХранилищеДляПередачи);
// передача файла
Соединение = новый HTTPСоединение(“base.ildarcheg.ru/”, , “-“, “-“);
Запрос = Новый HTTPЗапрос(“BillyTest/hs/auth/file/”);
Запрос.УстановитьТелоИзСтроки(ТекстФайла);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
// преобразование полученного сериализованного хранилища
ПолученнаяСтруктура = Десериализовать(Ответ.ПолучитьТелоКакСтроку()).Получить();
Возврат ПолученнаяСтруктура;
КонецФункции
// в модуле http-сервиса центральной базы
Функция userpost(Запрос)
// получение структуры из входящих данных
Данные = Запрос.ПолучитьТелоКакСтроку();
Хранилище = Десериализовать(Данные);
Структура = Хранилище.Получить();
// подготовка ответа
Структура.Вставить(“ДанныеОбработаны”, Истина);
ХранилищеДляПередачи = Новый ХранилищеЗначения(Структура, Новый СжатиеДанных(9));
ТекстФайла = Сериализовать(ХранилищеДляПередачи);
// передача ответа
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(ТекстФайла);
Возврат Ответ;
КонецФункции
В правильном направлении я иду?
P.S. на глаз скорость обмена быстрее, чем у веб-сервиса


s=»http://www.w3.org/2001/XMLSchema» xmlns



