Ошибка при вызове метода контекста (Получить)

1. Krey_ 18.04.19 08:09 Сейчас в теме
Не работает регламентное задание на сервере, выдает ошибку "Ошибка при вызове метода контекста (Получить)". Когда запускаю модуль в ручную (так-же на сервере, просто через обработку, в обработке только кнопка), то все работает. В файловой регламентное задание работает. Задание рассылает смс сообщения из записанных данных в регистре сведений. Подскажите пожалуйста как решить проблему.
	ИмяФайлаРезультата = ПолучитьИмяВременногоФайла();
	
	РесурсПараметры = РесурсНаСервере+"?"+_Параметры;
	Если СтрДлина(РесурсПараметры) < 2000 Тогда // GET 
		
		Попытка
			Соединение.Получить(РесурсПараметры, ИмяФайлаРезультата);
		    Соединение = Неопределено;                        
		Исключение 
			ИнфоООшибке = ИнформацияОбОшибке().Описание;
			
			ЗаписьЖурналаРегистрации("Ошибка выполнения", 
			УровеньЖурналаРегистрации.Ошибка, , ,
			ТекстСообщения + Символы.ПС + " Не удалось получить соединение GET" + Символы.ПС + ИнфоООшибке);
			Возврат Ложь;
		КонецПопытки;
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
37. spacecraft 19.04.19 09:34 Сейчас в теме
(35) это я понял, что скопировали.
У вас там вообще доступ в интернет через проски сервер или нет?
Подозреваю что нет. Попробуйте убрать прокси из кода вообще.
40. spacecraft 19.04.19 10:11 Сейчас в теме +0.7 $m
(39) я же сказал, убрать Прокси совсем из кода.
67. Krey_ 22.04.19 07:44 Сейчас в теме
Всем большое спасибо за помощь!
В итоге было Удалено значение прокси из создания нового HTTPСоединения.
	Попытка
		Если SMSC_HTTPS = 0 Тогда
			Соединение = Новый HTTPСоединение(Сервер, , , , , Ложь);
		//Иначе
			//Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, 10, Новый ЗащищенноеСоединениеOpenSSL);
		Конецесли;
	Исключение
		ИнфоООшибке = ИнформацияОбОшибке().Описание;
		ЗаписьЖурналаРегистрации("Ошибка выполнения", 
		УровеньЖурналаРегистрации.Ошибка, , ,
		ТекстСообщения + Символы.ПС + "Не удалось создать объект HTTPСоединение" + Символы.ПС + ИнфоООшибке);
		Возврат Ложь;
	КонецПопытки;
Показать
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
15. spacecraft 18.04.19 10:26 Сейчас в теме
(1) не видно как инициализируется переменная Соединение.
То что работает в файловой базе не показатель, там все выполняется в контексте клиента.
16. Krey_ 18.04.19 10:30 Сейчас в теме
(15)
	Попытка
		Если SMSC_HTTPS = 0 Тогда
			Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, Ложь);
		Иначе
			Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, 10, Новый ЗащищенноеСоединениеOpenSSL);
		Конецесли;
17. spacecraft 18.04.19 10:36 Сейчас в теме
(16) смотреть на права пользователя ОС под которым запущен сервер 1С, открыт ему доступ в интернет, прокси указан правильный для работы на сервере.
18. Krey_ 18.04.19 10:37 Сейчас в теме
(17) Это тоже уже запросил, жду ответа
20. platonov.e 158 18.04.19 10:43 Сейчас в теме
(18) так я то что писали в 17, спрашивал же в 2, вы сказали под админом все делается ><
21. Krey_ 18.04.19 10:46 Сейчас в теме
(20)Простите подумал вы про регламентное задание )
22. platonov.e 158 18.04.19 10:47 Сейчас в теме
(21) когда база серверная, все регламентные задания запускает служба, виндовая служба. А виндовая служба запущена от пользователя винды. Вот про этого пользователя я и спрашивал.
23. Krey_ 18.04.19 10:52 Сейчас в теме
(22) Подскажите пожалуйста, какая там галочка должна стоять?
26. platonov.e 158 18.04.19 11:02 Сейчас в теме
24. Krey_ 18.04.19 10:53 Сейчас в теме
(22) он там Администратор пользователей, Полные права, Право администрирования
25. platonov.e 158 18.04.19 11:02 Сейчас в теме
(24) а доступ в интернет то у него есть?
27. Krey_ 18.04.19 11:05 Сейчас в теме
(25)Знал бы я как это посмотреть...
28. platonov.e 158 18.04.19 11:06 Сейчас в теме
29. Krey_ 18.04.19 14:20 Сейчас в теме
(28)Доступ к интернету есть
30. uk09 18.04.19 16:57 Сейчас в теме
(1)

Добрый день!
А, если в регламентной себя ставите, в "имя пользователя" - срабатывает регламентное, согласно расписанию ?
32. user995537 38 19.04.19 08:07 Сейчас в теме
(1)По поводу права доступа в интернет: спрашивали о системной учетной записи от имени которой запускается служба. В файловом варианте создается служба на компьютере где расположена база и запускается от имени пользователя Windows. В серверном варианте насколько я помню служба запускается от имени пользователя USR1CV8 который создается автоматически при установке сервера 1С и используется для запуска службы "Агент сервера 1С:Предприятия 8.3" которая в свою очередь и запускает регламентированные задания 1С на сервере 1С. Для проверки ошибки в 1С добавьте
Исключение
ЗаписьЖурналаРегистрации("Установка соединения",
УровеньЖурналаРегистрации.Информация, , ,
ОписаниеОшибки());
Возврат;
КонецПопытки;
а потом в журнале регистрации просто посмотрите с какой ошибкой вылетает.
Прикрепленные файлы:
34. DrZombi 290 19.04.19 09:24 Сейчас в теме
(1) Все просто, Сервер не имеет доступа к вашему ресурсу.
36. Krey_ 19.04.19 09:27 Сейчас в теме
(34) у пользователя под которым запущен сервер доступ в интернет есть, все сайты доступны
2. platonov.e 158 18.04.19 08:17 Сейчас в теме +0.15 $m
Может у пользователя из под которого запущена служба, нет прав на доступ в интернет или еще чего?
3. Krey_ 18.04.19 08:18 Сейчас в теме
(2)Запущена под админом
4. Krey_ 18.04.19 08:19 Сейчас в теме
(2)Может быть на сервере какие-то порты не открыты? Но это просто предположение.
5. platonov.e 158 18.04.19 08:22 Сейчас в теме
(4) Если бы порты были закрыты, то через обработку тоже бы не работало.
В свойсвте общего модуля стоит галка клиент?
6. Krey_ 18.04.19 08:25 Сейчас в теме
(5) Клиент, внешнее соединение, сервер стоят. Но регламентное задание по дефолту вроде работает на сервере.
7. platonov.e 158 18.04.19 08:27 Сейчас в теме
(6) Попробуйте перенести в модуль, без клиента. А лучше посмотреть в каком точно выполняется регламентное задание и перенести туда его. Ну чисто для проверки что дело не в галки клиент.
8. Krey_ 18.04.19 08:30 Сейчас в теме
(7)
А лучше посмотреть в каком точно выполняется регламентное задание и перенести туда его.

Простите, вот это не очень понял
9. platonov.e 158 18.04.19 08:33 Сейчас в теме
(8) а забудьте, чушь сказал) найдите модуль с сервером и внешним соединением, но без клиента.
10. Oldsad 18.04.19 09:47 Сейчас в теме
из того что дано могу предположить только это
ИмяФайлаРезультата = ПолучитьИмяВременногоФайла();

вручную при запуске оно у вас одно, в регламентном оно другое
но это так, пальцем в небо
11. Krey_ 18.04.19 10:01 Сейчас в теме
(10) Да он всегда вроде с разным именем, да и файловой базе регламентное работает
13. Oldsad 18.04.19 10:22 Сейчас в теме
(11)

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

понятно что временный файл всегда разное имя
я про то что возможно какие то проблемы с этим именем на сервере
14. Krey_ 18.04.19 10:25 Сейчас в теме
(13) сейчас вот проверяю что он там пишет
19. Krey_ 18.04.19 10:42 Сейчас в теме
(13) ну имя вроде нормальное C:\Users\1c_admin\AppData\Local\Temp\v8_5C36_55.tmp
12. platonov.e 158 18.04.19 10:21 Сейчас в теме
31. Krey_ 19.04.19 07:24 Сейчас в теме
Вот такое нашел, подскажите нужен прокси или нет? И если нужен то какое имя пользователя писать? От компьютера или Имя пользователя под которым сервер запускается?
  // соединение с параметрами по умолчанию
Соединение = Новый HTTPСоединение("www.mysite.ru");
 
// сервер использует порт 8080
Соединение = Новый HTTPСоединение("www.mysite.ru", 8080);
 
// сервер использует защищенное соединение (https),
// для подключения к серверу используется прокси
ПроксиСервер = Новый интернетПрокси;
ПроксиСервер.Пользователь = имяПользователя;
ПроксиСервер.Пароль       = парольПользователя;
 
Соединение = Новый HTTPСоединение("www.mysite.ru",,,, ПроксиСервер, Истина);  
Показать
33. spacecraft 19.04.19 09:11 Сейчас в теме
(31) я так понимаю просто скопипастили код?
Прокси и имя пользователи и пароль от прокси сервера, через который осуществляется доступ в интернет. А он вообще есть и требует доступ по паролю?
37. spacecraft 19.04.19 09:34 Сейчас в теме
(35) это я понял, что скопировали.
У вас там вообще доступ в интернет через проски сервер или нет?
Подозреваю что нет. Попробуйте убрать прокси из кода вообще.
38. Krey_ 19.04.19 10:08 Сейчас в теме
(37) наоборот добавил, думал поможет, не помогло
39. Krey_ 19.04.19 10:10 Сейчас в теме
(37) Сейчас у меня так:
Прокси = Неопределено;
	Попытка
		Если SMSC_HTTPS = 0 Тогда
			Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, Ложь);
		Иначе
			Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, 10, Новый ЗащищенноеСоединениеOpenSSL);
		Конецесли;
	Исключение
Показать
40. spacecraft 19.04.19 10:11 Сейчас в теме +0.7 $m
(39) я же сказал, убрать Прокси совсем из кода.
41. Krey_ 19.04.19 10:20 Сейчас в теме
(40)
Прикрепленные файлы:
42. spacecraft 19.04.19 10:26 Сейчас в теме
43. Krey_ 19.04.19 10:28 Сейчас в теме
(42)Ошибка при вызове метода контекста (Получить)
но возникает это тут:
	Если СтрДлина(РесурсПараметры) < 2000 Тогда // GET 
		
		Попытка
			Соединение.Получить(РесурсПараметры, ИмяФайлаРезультата);
		    Соединение = Неопределено;                                 //При переходе на эту строку происходит отправка	
		Исключение 
			ИнфоООшибке = ИнформацияОбОшибке().Описание;
			
			ЗаписьЖурналаРегистрации("Ошибка выполнения", 
			УровеньЖурналаРегистрации.Ошибка, , ,
			ТекстСообщения + Символы.ПС + " Не удалось получить соединение GET" + Символы.ПС + ИнфоООшибке + Символы.ПС + РесурсПараметры + Символы.ПС + ИмяФайлаРезультата);
			Возврат Ложь;
		КонецПопытки;
Показать
45. spacecraft 19.04.19 10:30 Сейчас в теме
(43) полный текст ошибки. Там после "Ошибка при вызове метода контекста (Получить) " еще должна быть причина.
56. spacecraft 19.04.19 13:02 Сейчас в теме
(43) Помимо ИнформацияОбОшибке().Описание, есть еще ИнформацияОбОшибке().Причина.
Вот ее бы хорошо увидеть.
59. Krey_ 19.04.19 13:09 Сейчас в теме
(56) ее только вечером смогу посмотреть
44. Krey_ 19.04.19 10:30 Сейчас в теме
(42)Только на сервере и только при работе регламентного задания
46. vse-puchcom 19.04.19 11:10 Сейчас в теме
я конечно фигню сказать могу но я понял так
что когда в ручную запускаете все ровно работает?
а когда задание регламента нет?
значит скорее всего надо выставить пользователя от которого будет выполняться данная задача по крайней мере у меня было так
48. Krey_ 19.04.19 11:25 Сейчас в теме
(46) когда запускаем процедуру в ручную то все обрабатывается, а регламентное задание не работает
пользователя под которым выполняется регламентное задание менял
49. user995537 38 19.04.19 11:51 Сейчас в теме
(48)А что в журнале регистрации?
ЗаписьЖурналаРегистрации("Ошибка выполнения",
УровеньЖурналаРегистрации.Ошибка, , ,
ТекстСообщения + Символы.ПС + " Не удалось получить соединение GET" + Символы.ПС + ИнфоООшибке + Символы.ПС + РесурсПараметры + Символы.ПС + ИмяФайлаРезультата);
Какую ошибку здесь пишет? И где вы меняли пользователя? Я выше писал:
"служба запускается от имени пользователя USR1CV8 который создается автоматически при установке сервера 1С и используется для запуска службы "Агент сервера 1С:Предприятия 8.3" которая в свою очередь и запускает регламентированные задания 1С на сервере 1С". Если ошибка установки соединения, то нужно добавить прав на сервере пользователю от имени которого запускается служба "Агент сервера 1С:Предприятия 8.3" и перезагрузить сервер.
50. Krey_ 19.04.19 12:07 Сейчас в теме
(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
51. user995537 38 19.04.19 12:21 Сейчас в теме
(50)А у пользователя от которого запускается сервер 1С есть доступ к папке
C:\Users\1c_admin\AppData\Local\Temp\
?
52. vse-puchcom 19.04.19 12:23 Сейчас в теме
(51) там скорее всего веб сервер файловый
и скорее всего к темпу допушен пользователь из сети (забыл уже как он называеться)
53. user995537 38 19.04.19 12:36 Сейчас в теме
(52) Учитывая что - "ИнфоООшибке = Ошибка при вызове метода контекста (Получить)". Ошибка не в том что метод не найден и не указано что ошибка параметра 1 или 2 - на ошибки формата параметров метода платформа по идее должна проверять до выполнения метода. Значит ошибка возникает в процессе выполнения метода. Параметров всего два: 1 строка GET запроса - если ошибка не в ней и пользователь windows имеет право на отправку GET запроса, тогда ошибка возникает при получении ответа от сервера, ответ будет записан в файл указанный во втором параметре.
54. Krey_ 19.04.19 12:47 Сейчас в теме
(53)сейчас пытаюсь подключиться к этому пользователю
55. user995537 38 19.04.19 12:54 Сейчас в теме
(54)Если сайт Ваш, попросите того кто занимается сайтом, чтобы посмотрел: приходит ли GET запрос и что сайт отправляет в ответ. Можно ещё в качестве второго параметра указать статический путь к существующему файлу в папке к которой открыть доступ всем.
57. user995537 38 19.04.19 13:02 Сейчас в теме +0.15 $m
(54) Не нужно подключаться, если знаете пароль этого пользователя, найдите ярлычок блокнота notepad.exe зажмите клавишу shift и нажмите правую кнопку мышки выберите "Запустить от имени другого пользователя" введите логин и пароль пользователя, нажмите файл - открыть и в проводнике диалога открытия файла Вы сможете проверить какие каталоги и с какими правами доступны этому пользователю. Конечно всё это нужно проделывать на том сервере на котором выполняется серверный код 1С.
60. Krey_ 19.04.19 13:10 Сейчас в теме
(57) восстанавливаю пароль
61. Krey_ 19.04.19 13:20 Сейчас в теме
(57)
C:\Users\1c_admin\AppData\Local\Temp\

Доступ к папке есть, файлы создаются
62. user995537 38 19.04.19 13:25 Сейчас в теме
(61) Нужно посмотреть ИнформацияОбОшибке().Причина и "Если сайт Ваш, попросите того кто занимается сайтом, чтобы посмотрел: приходит ли GET запрос и что сайт отправляет в ответ"
63. Krey_ 19.04.19 13:27 Сейчас в теме
(62)Сайт не наш, ИнформацияОбОшибке().Причина смогу посмотреть только вечером.
66. sashocq 193 19.04.19 22:17 Сейчас в теме
(63) Для полноты представления ошибки используйте ПодробноеПредставлениеОшибки(Ошибка). Тогда вы увидите весь стек ошибок и не нужно гадать.
58. user995537 38 19.04.19 13:05 Сейчас в теме
(54)И кстати как писал spacecraft если можно посмотреть параметр информации об ошибке "ИнформацияОбОшибке().Причина"
47. vse-puchcom 19.04.19 11:13 Сейчас в теме
вот
Прикрепленные файлы:
64. Ditron 184 19.04.19 17:16 Сейчас в теме
Смотрите права пользователя под которым сервер крутится, ИмяФайлаРезультата содержит путь к временному файлу (на сервере!), скорее всего к нему нет доступа на запись, или эта переменная вообще пустая (потому что не хватило прав на его получение), а вообще уже пора заканчивать грузить диск сервера, а использовать методы HTTPОтвет-а ПолучитьТелоКакСтроку или ПолучитьТелоКакДвоичныеДанные )
65. Ditron 184 19.04.19 17:21 Сейчас в теме
А и стоп!
HTTPСоединение (HTTPConnection)
Получить (Get)
Синтаксис:

Получить(<HTTPЗапрос>, <ИмяВыходногоФайла>)
Параметры:

<HTTPЗапрос> (обязательный)

Тип: HTTPЗапрос.

HTTP-запрос.
<ИмяВыходногоФайла> (необязательный)

Тип: Строка.
Имя файла, в который помещаются данные полученного ресурса. Если не указан или содержит пустую строку, то тело ответа может быть получено из объекта HTTPОтвет.
Возвращаемое значение:

Тип: HTTPОтвет.

Описание:

Получает данные с HTTP-сервера, используя GET-запрос.

Доступность:

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
67. Krey_ 22.04.19 07:44 Сейчас в теме
Всем большое спасибо за помощь!
В итоге было Удалено значение прокси из создания нового HTTPСоединения.
	Попытка
		Если SMSC_HTTPS = 0 Тогда
			Соединение = Новый HTTPСоединение(Сервер, , , , , Ложь);
		//Иначе
			//Соединение = Новый HTTPСоединение(Сервер, , , , Прокси, 10, Новый ЗащищенноеСоединениеOpenSSL);
		Конецесли;
	Исключение
		ИнфоООшибке = ИнформацияОбОшибке().Описание;
		ЗаписьЖурналаРегистрации("Ошибка выполнения", 
		УровеньЖурналаРегистрации.Ошибка, , ,
		ТекстСообщения + Символы.ПС + "Не удалось создать объект HTTPСоединение" + Символы.ПС + ИнфоООшибке);
		Возврат Ложь;
	КонецПопытки;
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот