Консоль HTTP-запросов с генерацией кода

0. 464 24.05.18 08:11 Сейчас в теме
Консоль HTTP-запросов, которая не только выполняет запросы и получает результат их выполнения, но и генерирует необходимый код. Использую на 8.3.11.2899.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Stepa86 1480 25.05.18 11:43 Сейчас в теме
По картинке к статье подумал, что это конвертер строки curl в код 1С. Вот куча кнопочек, полей и прочего не так интересна, как такой конвертер, т.к. почти все примеры в интернетах написаны с использованием curl, например https://rocket.chat/docs/developer-guides/rest-api/chat/postmessage/#example-call

Может кто-нить сделает? Звездочек огребет наверняка
2. leongl 464 25.05.18 11:51 Сейчас в теме
(1) Согласен, сам подумываю написать импорт/экспорт Curl и SoapUI
6. пользователь 27.05.18 06:40
Сообщение было скрыто модератором.
...
9. пользователь 30.05.18 15:58
Сообщение было скрыто модератором.
...
3. ilyav 25.05.18 15:24 Сейчас в теме
А зачем это в 1с? пользуюсь программой Postman https://www.getpostman.com/ на 100% устраивает
adhocprog; Mortum; nbeliaev; bpc222; +4 Ответить
4. leongl 464 25.05.18 15:59 Сейчас в теме
(3)О, на это есть несколько причин - не везде разрешают стороннее по, поведение 1С все таки иное (все тот-же прокси, конвертация кириллицы в строке запроса), запуск на серве 1С, который является другой тачкой и другим юзером AD.
Чем приближенней к реальным условиям эксплуатации, тем лучше. Да и после getpostman, cUrl, SoapUI придется все перетаскивать в код, а тут сгенерил код и огонь.
AdmKmpt; tormozit; KolBbl4; frkbvfnjh; adhocprog; 🅵🅾️🆇; jaroslav.h; vaskomain; JohnyDeath; blackhole321; CyberCerber; van_za; +12 Ответить
7. Vanch90 28.05.18 07:34 Сейчас в теме
(3) Как зачем удобство)
Еще бы на обычных формах похожее)
jaroslav.h; +1 Ответить
22. tormozit 6573 22.09.21 17:05 Сейчас в теме
(7) В ИР говорят есть аналогичная на обычных формах.
5. starik-2005 2683 26.05.18 11:07 Сейчас в теме
Чета в этом есть, ибо можно прикрутить сюда тестирование нагрузки и все такое прочее, что есть в сторонних решениях. В итоге описал сервис, нажал "завалить в 1000 потоков", в итоге чето там протестировал (или повесил сервак) - все опыт. Сразу ясно, тянет 1С это или тут лучше астральный программист на питоне за 10 килорублей...
8. kembrik 3 28.05.18 19:00 Сейчас в теме
Делал нечто подобное "для себя" но у автора пофункциональней. Я правда для вывода использовал "ФорматированныйДокумент" чтобы значения и атрибуты раскрашивать по-всякому, так глазастей. Так сказать, хотелось бы увидеть и у вас) Чтобы инструмент превратился в ультимативный
Прикрепленные файлы:
10. 🅵🅾️🆇 30.05.18 17:13 Сейчас в теме
Однозначно [★] в карму :3
11. s22 19 06.07.18 17:45 Сейчас в теме
Было бы хорошо генерировать защищеный post (исключение двойной отсылки)
А так же более менее стандартный обмен по рестапи
12. shura_k 10.07.18 18:34 Сейчас в теме
Не хватало работы с Digest авторизацией. Доделал.
На форму надо добавить два реквизита, а так все в коде.
Вставлять контекстно.

	Если Digest и Результат.КодСостояния=401 Тогда
		WWW_Authenticate=Результат.Заголовки.Получить("WWW-Authenticate");
		Ответ=СтрРазделить(WWW_Authenticate,",");
		Если Ответ.Количество()>0 Тогда
			realm=ОтветЗначение("realm",Ответ[0]);
			HA1 = ПолучитьХеш(Логин+":"+realm+":"+Пароль);	
			HA1=ХексВСтроку(HA1);
			URI=?(Лев(Сервис,1)<>"/","/"+Сервис,Сервис);
			HA2 = ПолучитьХеш(ВРег(ИмяМетода)+":"+URI);
			HA2=ХексВСтроку(HA2);
			qop=ОтветЗначение("qop",Ответ[1]);
			nonce=ОтветЗначение("nonce",Ответ[2]);
			opaque=ОтветЗначение("opaque",Ответ[3]);
			nc=nc+1;
			ncStr=формат(nc,"ЧЦ=8; ЧДЦ=; ЧВН=; ЧГ=0");
			cnonce=Новый УникальныйИдентификатор;
			cnonce=НРег(СтрЗаменить(Строка(cnonce), "-", ""));
			Если НРег(Лев(qop,4))="auth" Тогда
				Response  = ПолучитьХеш(HA1+":"+nonce+":"+ncStr+":"+cnonce+":"+qop+":"+HA2);	
			Иначе
				Response  = ПолучитьХеш(HA1+":"+nonce+":"+HA2);
			КонецЕсли;
			Response=ХексВСтроку(Response);
			
			DigestЗапрос="Digest username="""+Логин+""", realm="""+realm+""", nonce="""+nonce;
			DigestЗапрос=DigestЗапрос+""", uri="""+URI+""", qop="""+qop+""", nc="""+ncStr;
			DigestЗапрос=DigestЗапрос+""", cnonce="""+cnonce+""", response="""+Response+""", opaque="""+opaque+"""";
			
			УдалитьАвторизацию();
			
			Стр=Заголовки.Добавить();
			Стр.ИмяЗаголовка="Authorization";
			Стр.ЗначениеЗаголовка=DigestЗапрос;
			
			ВыполнитьЗапросПоМетоду(ВРег(ИмяМетода));
			Возврат;
		КонецЕсли; 
		
	КонецЕсли; 



&НаСервере
Процедура УдалитьАвторизацию()
	
	
    Отбор = Новый Структура;
    Отбор.Вставить("ИмяЗаголовка", "Authorization");
    Строки = Заголовки.НайтиСтроки(Отбор);
	Если Строки.Количество()>0 Тогда
		Заголовки.Удалить(Строки[0]);	
	КонецЕсли; 
		
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьХеш(Текст)
	ОбъектХеш = Новый ХешированиеДанных(ХешФункция.MD5);
    ОбъектХеш.Добавить(Текст);
    Возврат ОбъектХеш.ХешСумма;
КонецФункции

&НаСервереБезКонтекста
Функция ОтветЗначение(Ответ,Значение)
	результат=Сред(Значение,Найти(Значение,Ответ+"=")+СтрДлина(Ответ)+2);
	результат=Лев(результат,СтрДлина(результат)-1);
	Возврат результат;
КонецФункции

&НаСервереБезКонтекста
Функция ХексВСтроку(Текст)
	 Возврат НРег(СтрЗаменить(Строка(Текст), " ", ""));
КонецФункции
 
Показать
qSergey; Vida; swimdog; eeeio; +4 Ответить
13. swimdog 725 11.01.19 14:29 Сейчас в теме
(12) Переделал под универсальное получение Digest, если предыдущее значение вернуло ошибку аутентификации

	// Выполнить GET запрос:
	Попытка
		Результат = Соединение.Получить(HTTPЗапрос, ФайлРезультат);
	Исключение
		ПоказатьПредупреждение(Новый ОписаниеОповещения(), "Не удалось получить фото, проверьте параметры запроса!" + Символы.ВК + Символы.ВК + ОписаниеОшибки(), , "Получение фото автомобиля");
	КонецПопытки;
	
	Если Результат.КодСостояния = 200 Тогда
		
		ФотоМашины = Новый Картинка(ФайлРезультат, Истина);
		АдресФото = ПоместитьВоВременноеХранилище(ФотоМашины);
		
	ИначеЕсли Результат.КодСостояния = 401 Тогда
		
		WWW_Authenticate=Результат.Заголовки.Получить("WWW-Authenticate");
		ИмяМетода = "GET";
		Сервис = АдресРесурса;
		nc = 0;
		
		Ответ=СтрРазделить(СтрЗаменить(WWW_Authenticate, "Digest ", ""), ",");
		Если Ответ.Количество()>0 Тогда
			realm = ОтветЗначение("realm", Ответ);
			HA1 = ПолучитьХеш(Логин+":"+realm+":"+Пароль);    
			HA1 = ХексВСтроку(HA1);
			URI = ?(Лев(Сервис,1)<>"/","/"+Сервис, Сервис);
			HA2 = ПолучитьХеш(ВРег(ИмяМетода)+":"+URI);
			HA2 = ХексВСтроку(HA2);
			qop = ОтветЗначение("qop", Ответ);
			nonce = ОтветЗначение("nonce", Ответ);
			opaque = ОтветЗначение("opaque", Ответ);
			nc = nc+1;
			ncStr = Формат(nc,"ЧЦ=8; ЧДЦ=; ЧВН=; ЧГ=0");
			cnonce = Новый УникальныйИдентификатор;
			cnonce = НРег(СтрЗаменить(Строка(cnonce), "-", ""));
			Если НРег(Лев(qop,4))="auth" Тогда
				Response  = ПолучитьХеш(HA1+":"+nonce+":"+ncStr+":"+cnonce+":"+qop+":"+HA2);    
			Иначе
				Response  = ПолучитьХеш(HA1+":"+nonce+":"+HA2);
			КонецЕсли;
			Response = ХексВСтроку(Response);
			
			DigestЗапрос = "Digest username="""+Логин+""", realm="""+realm+""", nonce="""+nonce;
			DigestЗапрос = DigestЗапрос+""", uri="""+URI+""", qop="""+qop+""", nc="""+ncStr;
			DigestЗапрос = DigestЗапрос+""", cnonce="""+cnonce+""", response="""+Response+""", opaque="""+opaque+"""";
			
			HTTPЗапрос.Заголовки.Вставить("Authorization", DigestЗапрос);
			
			Попытка
				Результат = Соединение.Получить(HTTPЗапрос, ФайлРезультат);
			Исключение
				ПоказатьПредупреждение(Новый ОписаниеОповещения(), "Не удалось получить фото, проверьте параметры запроса!" + Символы.ВК + Символы.ВК + ОписаниеОшибки(), , "Получение фото автомобиля");
				Возврат;
			КонецПопытки;
			
			Если Результат.КодСостояния = 200 Тогда
				ФотоМашины = Новый Картинка(ФайлРезультат, Истина);
				АдресФото = ПоместитьВоВременноеХранилище(ФотоМашины);
			Иначе
				ПоказатьПредупреждение(Новый ОписаниеОповещения(), "Не удалось получить фото, проверьте параметры запроса!" + Символы.ВК + Символы.ВК + "Код результата = " + Результат.КодСостояния, , "Получение фото автомобиля");
			КонецЕсли;
			
		КонецЕсли; 
		
	КонецЕсли; 
	
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьХеш(Текст)
	ОбъектХеш = Новый ХешированиеДанных(ХешФункция.MD5);
	ОбъектХеш.Добавить(Текст);
	
	Возврат ОбъектХеш.ХешСумма;
КонецФункции

&НаСервереБезКонтекста
Функция ОтветЗначение(Значение, Ответ)
	результат = "";
	Для каждого СтрокаОтвета Из Ответ Цикл
		Если Найти(СтрокаОтвета, Значение) Тогда
			результат=Сред(СтрокаОтвета, Найти(СтрокаОтвета, "=")+2);
			результат=Лев(результат,СтрДлина(результат)-1);
		КонецЕсли;
	КонецЦикла;
	
	Возврат результат;
КонецФункции

&НаСервереБезКонтекста
Функция ХексВСтроку(Текст)
	
	Возврат НРег(СтрЗаменить(Строка(Текст), " ", ""));
	
КонецФункции
Показать
14. leemuar 18.01.19 11:45 Сейчас в теме
Попробовал вашу обработку, спасибо!

Есть небольшое неудобство: обработка не выводит заголовки и тело ответа если код ответа не равен 200. Мне кажется было бы удобнее видеть заголовки и тело ответа всегда, при любом коде ответа.
15. dndw 6 13.03.19 15:52 Сейчас в теме
Про попытке добавления сервиса:

{ВнешняяОбработка.ОтправитьHTTPЗапрос.Форма.Форма.Форма(558)}: Индекс находится за границами массива
Рез.Сервер = Лев(МассивДанныхСсылки[1], Найти(МассивДанныхСсылки[1], "/")-1);

при попытке заполнить по cURL
{ВнешняяОбработка.ОтправитьHTTPЗапрос.Форма.Форма.Форма(957)}: Индекс находится за границами массива
ВремТекстТела = МассивСтрокТела[1];
16. Vida 15 13.05.19 18:06 Сейчас в теме
Подскажите пожалуйста на совместимости = 8.3.5 пойдет?
17. DVBLEX 13.08.19 10:35 Сейчас в теме
Кто может закинуть ето решения беслатно в пм ?
18. cprit 779 26.12.19 13:52 Сейчас в теме
Добрый день!
Для обычных форм есть замечательный набор инструментов "Инструменты разработчика 1С", но его невозможно использовать в линуксе и в тонком и веб клиенте.

Поэтому мы решили собрать подобный пакет, но который будет работать только на платформенных механизмах или с использованием кроссплатформенных компонент.

Использование этого пакета инструментов хотим сделать общедоступным(OpenSource), разработку вести через гитхаб с использованием EDT.

Можем ли мы включить в этот набор обработки(или часть идей и функционала) из этой публикации?

На текущий момент нашли основные инструменты (консоль запросов, консоль кода, редактор реквизитов, консоль компоновки и др.) для включения в инструментарий. Сейчас занимаемся получением одобрения авторов. Часть включаем свои- редактор предопределенных, редактор констант, Групповая обработка

Ссылка на репозиторий с новыми инструментами https://github.com/cpr1c/tools_ui
19. antonzh 11.11.20 15:39 Сейчас в теме
Добрый день! Подскажите, где найти примеры CRUD скриптов для Акта в формате curl?
К сожалению, мои познания в 1С == 0. Нужно интегрироваться с 1С из стороннего приложения через REST. Конфигурация 1С настроена. Сервис откликается.
21. antonzh 11.11.20 16:03 Сейчас в теме
Оставьте свое сообщение
Вакансии
Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Архитектор 1С
Москва
зарплата от 260 000 руб.
Полный день

Начальник отдела архитектуры
Москва
зарплата от 300 000 руб.
Полный день

Эксперт по технологическим вопросам
Москва
зарплата от 250 000 руб.
Полный день

Ведущий разработчик 1С
Ростов-на-Дону
зарплата от 200 000 руб.
Полный день