Ошибка при вызове метода контекста (Получить)
Не работает регламентное задание на сервере, выдает ошибку "Ошибка при вызове метода контекста (Получить)". Когда запускаю модуль в ручную (так-же на сервере, просто через обработку, в обработке только кнопка), то все работает. В файловой регламентное задание работает. Задание рассылает смс сообщения из записанных данных в регистре сведений. Подскажите пожалуйста как решить проблему.
ИмяФайлаРезультата = ПолучитьИмяВременногоФайла();
РесурсПараметры = РесурсНаСервере+"?"+_Параметры;
Если СтрДлина(РесурсПараметры) < 2000 Тогда // GET
Попытка
Соединение.Получить(РесурсПараметры, ИмяФайлаРезультата);
Соединение = Неопределено;
Исключение
ИнфоООшибке = ИнформацияОбОшибке().Описание;
ЗаписьЖурналаРегистрации("Ошибка выполнения",
УровеньЖурналаРегистрации.Ошибка, , ,
ТекстСообщения + Символы.ПС + " Не удалось получить соединение GET" + Символы.ПС + ИнфоООшибке);
Возврат Ложь;
КонецПопытки;
ПоказатьПо теме из базы знаний
- Ошибка преобразования данных XDTO: Текст XML содержит недопустимый символ
- Ошибки в ЦУП и способы решения
- [Расширение] Обход ошибки при записи документов через COM-соединение в 1С Бухгалтерии 3.0.84.42
- 1С:ДиректБанк (загрузка выписок СБЕРБАНК), ошибка работы с Интернет: Удаленный узел не прошел проверку
- Как готовить и есть массивы
Найденные решения
Всем большое спасибо за помощь!
В итоге было Удалено значение прокси из создания нового HTTPСоединения.
В итоге было Удалено значение прокси из создания нового HTTPСоединения.
Попытка
Если SMSC_HTTPS = 0 Тогда
Соединение = Новый HTTPСоединение(Сервер, , , , , Ложь);
//Иначе
//Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, 10, Новый ЗащищенноеСоединениеOpenSSL);
Конецесли;
Исключение
ИнфоООшибке = ИнформацияОбОшибке().Описание;
ЗаписьЖурналаРегистрации("Ошибка выполнения",
УровеньЖурналаРегистрации.Ошибка, , ,
ТекстСообщения + Символы.ПС + "Не удалось создать объект HTTPСоединение" + Символы.ПС + ИнфоООшибке);
Возврат Ложь;
КонецПопытки;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)По поводу права доступа в интернет: спрашивали о системной учетной записи от имени которой запускается служба. В файловом варианте создается служба на компьютере где расположена база и запускается от имени пользователя Windows. В серверном варианте насколько я помню служба запускается от имени пользователя USR1CV8 который создается автоматически при установке сервера 1С и используется для запуска службы "Агент сервера 1С:Предприятия 8.3" которая в свою очередь и запускает регламентированные задания 1С на сервере 1С. Для проверки ошибки в 1С добавьте
Исключение
ЗаписьЖурналаРегистрации("Установка соединения",
УровеньЖурналаРегистрации.Информация, , ,
ОписаниеОшибки());
Возврат;
КонецПопытки;
а потом в журнале регистрации просто посмотрите с какой ошибкой вылетает.
Исключение
ЗаписьЖурналаРегистрации("Установка соединения",
УровеньЖурналаРегистрации.Информация, , ,
ОписаниеОшибки());
Возврат;
КонецПопытки;
а потом в журнале регистрации просто посмотрите с какой ошибкой вылетает.
Прикрепленные файлы:
(11)
в файловой базе у вас задание выполняется локально на машине
при ручном запуске у вас клиент тоже локально на машине
и только при регламентном весь код исполняется на сервере
понятно что временный файл всегда разное имя
я про то что возможно какие то проблемы с этим именем на сервере
в файловой базе у вас задание выполняется локально на машине
при ручном запуске у вас клиент тоже локально на машине
и только при регламентном весь код исполняется на сервере
понятно что временный файл всегда разное имя
я про то что возможно какие то проблемы с этим именем на сервере
Вот такое нашел, подскажите нужен прокси или нет? И если нужен то какое имя пользователя писать? От компьютера или Имя пользователя под которым сервер запускается?
// соединение с параметрами по умолчанию
Соединение = Новый HTTPСоединение("www.mysite.ru");
// сервер использует порт 8080
Соединение = Новый HTTPСоединение("www.mysite.ru", 8080);
// сервер использует защищенное соединение (https),
// для подключения к серверу используется прокси
ПроксиСервер = Новый интернетПрокси;
ПроксиСервер.Пользователь = имяПользователя;
ПроксиСервер.Пароль = парольПользователя;
Соединение = Новый HTTPСоединение("www.mysite.ru",,,, ПроксиСервер, Истина);
Показать
(37) Сейчас у меня так:
Прокси = Неопределено;
Попытка
Если SMSC_HTTPS = 0 Тогда
Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, Ложь);
Иначе
Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, 10, Новый ЗащищенноеСоединениеOpenSSL);
Конецесли;
Исключение
Показать
(42)Ошибка при вызове метода контекста (Получить)
но возникает это тут:
но возникает это тут:
Если СтрДлина(РесурсПараметры) < 2000 Тогда // GET
Попытка
Соединение.Получить(РесурсПараметры, ИмяФайлаРезультата);
Соединение = Неопределено; //При переходе на эту строку происходит отправка
Исключение
ИнфоООшибке = ИнформацияОбОшибке().Описание;
ЗаписьЖурналаРегистрации("Ошибка выполнения",
УровеньЖурналаРегистрации.Ошибка, , ,
ТекстСообщения + Символы.ПС + " Не удалось получить соединение GET" + Символы.ПС + ИнфоООшибке + Символы.ПС + РесурсПараметры + Символы.ПС + ИмяФайлаРезультата);
Возврат Ложь;
КонецПопытки;
Показать
я конечно фигню сказать могу но я понял так
что когда в ручную запускаете все ровно работает?
а когда задание регламента нет?
значит скорее всего надо выставить пользователя от которого будет выполняться данная задача по крайней мере у меня было так
что когда в ручную запускаете все ровно работает?
а когда задание регламента нет?
значит скорее всего надо выставить пользователя от которого будет выполняться данная задача по крайней мере у меня было так
(48)А что в журнале регистрации?
ЗаписьЖурналаРегистрации("Ошибка выполнения",
УровеньЖурналаРегистрации.Ошибка, , ,
ТекстСообщения + Символы.ПС + " Не удалось получить соединение GET" + Символы.ПС + ИнфоООшибке + Символы.ПС + РесурсПараметры + Символы.ПС + ИмяФайлаРезультата);
Какую ошибку здесь пишет? И где вы меняли пользователя? Я выше писал:
"служба запускается от имени пользователя USR1CV8 который создается автоматически при установке сервера 1С и используется для запуска службы "Агент сервера 1С:Предприятия 8.3" которая в свою очередь и запускает регламентированные задания 1С на сервере 1С". Если ошибка установки соединения, то нужно добавить прав на сервере пользователю от имени которого запускается служба "Агент сервера 1С:Предприятия 8.3" и перезагрузить сервер.
ЗаписьЖурналаРегистрации("Ошибка выполнения",
УровеньЖурналаРегистрации.Ошибка, , ,
ТекстСообщения + Символы.ПС + " Не удалось получить соединение GET" + Символы.ПС + ИнфоООшибке + Символы.ПС + РесурсПараметры + Символы.ПС + ИмяФайлаРезультата);
Какую ошибку здесь пишет? И где вы меняли пользователя? Я выше писал:
"служба запускается от имени пользователя USR1CV8 который создается автоматически при установке сервера 1С и используется для запуска службы "Агент сервера 1С:Предприятия 8.3" которая в свою очередь и запускает регламентированные задания 1С на сервере 1С". Если ошибка установки соединения, то нужно добавить прав на сервере пользователю от имени которого запускается служба "Агент сервера 1С:Предприятия 8.3" и перезагрузить сервер.
(49) Менял пользователя примерно как в 47, в службе "Агент сервера 1С:Предприятия 8.3" прописан прописан пользователь у которого доступ к интернету есть, сайты не заблокированы
ИнфоООшибке = Ошибка при вызове метода контекста (Получить)
РесурсПараметры = /sys/send.php?login=%00%69%00%63%00%40%04%43%04%34%04%3E%04%32%04%30%04%3D %04%38%04%35%00%20%04%33%04%3E%04%42%04%3E%04%32%04%3E%00%20 %04%3A%00%20%04%32%04%4B%04%34%04%30%04%47%04%35%00%2E%00%20 %04%1A%04%32%04%38%04%42%04%30%04%3D%04%46%04%38%04 ...........
ИмяФайлаРезультата = C:\Users\1c_admin\AppData\Local\Temp\v8_5C36_55.tmp
ИнфоООшибке = Ошибка при вызове метода контекста (Получить)
РесурсПараметры = /sys/send.php?login=%00%69%00%63%00%40%04%43%04%34%04%3E%04%32%04%30%04%3D
ИмяФайлаРезультата = C:\Users\1c_admin\AppData\Local\Temp\v8_5C36_55.tmp
(52) Учитывая что - "ИнфоООшибке = Ошибка при вызове метода контекста (Получить)". Ошибка не в том что метод не найден и не указано что ошибка параметра 1 или 2 - на ошибки формата параметров метода платформа по идее должна проверять до выполнения метода. Значит ошибка возникает в процессе выполнения метода. Параметров всего два: 1 строка GET запроса - если ошибка не в ней и пользователь windows имеет право на отправку GET запроса, тогда ошибка возникает при получении ответа от сервера, ответ будет записан в файл указанный во втором параметре.
(54) Не нужно подключаться, если знаете пароль этого пользователя, найдите ярлычок блокнота notepad.exe зажмите клавишу shift и нажмите правую кнопку мышки выберите "Запустить от имени другого пользователя" введите логин и пароль пользователя, нажмите файл - открыть и в проводнике диалога открытия файла Вы сможете проверить какие каталоги и с какими правами доступны этому пользователю. Конечно всё это нужно проделывать на том сервере на котором выполняется серверный код 1С.
Смотрите права пользователя под которым сервер крутится, ИмяФайлаРезультата содержит путь к временному файлу (на сервере!), скорее всего к нему нет доступа на запись, или эта переменная вообще пустая (потому что не хватило прав на его получение), а вообще уже пора заканчивать грузить диск сервера, а использовать методы HTTPОтвет-а ПолучитьТелоКакСтроку или ПолучитьТелоКакДвоичныеДанные )
А и стоп!
HTTPСоединение (HTTPConnection)
Получить (Get)
Синтаксис:
Получить(<HTTPЗапрос>, <ИмяВыходногоФайла>)
Параметры:
<HTTPЗапрос> (обязательный)
Тип: HTTPЗапрос.
HTTP-запрос.
<ИмяВыходногоФайла> (необязательный)
Тип: Строка.
Имя файла, в который помещаются данные полученного ресурса. Если не указан или содержит пустую строку, то тело ответа может быть получено из объекта HTTPОтвет.
Возвращаемое значение:
Тип: HTTPОтвет.
Описание:
Получает данные с HTTP-сервера, используя GET-запрос.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
HTTPСоединение (HTTPConnection)
Получить (Get)
Синтаксис:
Получить(<HTTPЗапрос>, <ИмяВыходногоФайла>)
Параметры:
<HTTPЗапрос> (обязательный)
Тип: HTTPЗапрос.
HTTP-запрос.
<ИмяВыходногоФайла> (необязательный)
Тип: Строка.
Имя файла, в который помещаются данные полученного ресурса. Если не указан или содержит пустую строку, то тело ответа может быть получено из объекта HTTPОтвет.
Возвращаемое значение:
Тип: HTTPОтвет.
Описание:
Получает данные с HTTP-сервера, используя GET-запрос.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Всем большое спасибо за помощь!
В итоге было Удалено значение прокси из создания нового HTTPСоединения.
В итоге было Удалено значение прокси из создания нового HTTPСоединения.
Попытка
Если SMSC_HTTPS = 0 Тогда
Соединение = Новый HTTPСоединение(Сервер, , , , , Ложь);
//Иначе
//Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, 10, Новый ЗащищенноеСоединениеOpenSSL);
Конецесли;
Исключение
ИнфоООшибке = ИнформацияОбОшибке().Описание;
ЗаписьЖурналаРегистрации("Ошибка выполнения",
УровеньЖурналаРегистрации.Ошибка, , ,
ТекстСообщения + Символы.ПС + "Не удалось создать объект HTTPСоединение" + Символы.ПС + ИнфоООшибке);
Возврат Ложь;
КонецПопытки;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот