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

17.09.18

Разработка - Инструментарий разработчика

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Консоль HTTP-запросов с генерацией кода:
.epf 21,00Kb ver:1.1.3
522
522 Скачать (1 SM) Купить за 1 850 руб.

UPD: Добавил авторизацию OAuth2, включил блок OAuth2 авторизации в генерируемый код.

При разработке очень часто сталкиваюсь с необходимостью взаимодействия со всякого рода сервисами (rest, soap), и возникает потребность начально отладить работу сервиса, так сказать «пощупать». Для этого использую приложение SoapUI, многие используют curl, и после отладки необходимо переносить все настройки в 1С, на ее классы и методы, что занимает некоторое время. Именно так и родилась консоль http-запросов для 1С. Сразу отмечу, что она покрывает только rest сервисы, для soap она не подойдет.

Консоль может не только выполнять запросы и получать результат их выполнения, но и генерировать необходимый код на языке 1С. 

Пробежимся по интерфейсу:

Настройки соединения, стоить отметить, что в поле сервер вносим только весь текст сервиса слева до домена верхнего уровня уровня (ru, com, org и т.п.)

Настройки соединения

Ссылка "Настройка прокси" открывает группу с настройками прокси (сервер прокси, логин, пароль), бывает нужно редко, обычно просто ставлю галку "Использовать прокси" и 1С сама подтягивает прокси по умолчанию.

Путь к самому rest-сервису, это все, что написано после домена верхнего уровня

Само тело запроса, может быть пустым, может содержать JSON запрос (как в примера), а может содержать XML или вообще base64 картинки/файла

Результат ответа - это тело ответа и код ответа с подробным описанием

Команды получения готово кода для конфигуратора

Пример получаемого кода

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

Настройка заголовков запроса, это может контент тайп или ключ апи, как в примере

Параметры закидываются в/из строки сервиса

 

Данные формы - хитрая штука, с которыми 1С не позволяет работать как с объектом, при внесении этих параметров генерится особое тело запроса с разделителями и т.д. 

Использовал их всего один раз, перекрестился и забыл.

Визуализатор/конструктор JSON-объектов

Использую на 8.3.11.2899.

Консоль http-запрос rest post get

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159569    874    399    

862

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7816    57    23    

69

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23457    68    45    

117

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8500 руб.

10.11.2023    10446    36    25    

61

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 19980 руб.

06.10.2023    15408    35    7    

70

SALE! 35%

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3120 руб.

14.01.2013    188020    1140    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17311    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7709    8    35    

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

Может кто-нить сделает? Звездочек огребет наверняка
2. leongl 544 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% устраивает
user786530; adhocprog; Mortum; nbeliaev; bpc222; +5 Ответить
4. leongl 544 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 7230 22.09.21 17:05 Сейчас в теме
(7) В ИР говорят есть аналогичная на обычных формах.
5. starik-2005 3088 26.05.18 11:07 Сейчас в теме
Чета в этом есть, ибо можно прикрутить сюда тестирование нагрузки и все такое прочее, что есть в сторонних решениях. В итоге описал сервис, нажал "завалить в 1000 потоков", в итоге чето там протестировал (или повесил сервак) - все опыт. Сразу ясно, тянет 1С это или тут лучше астральный программист на питоне за 10 килорублей...
8. kembrik 10 28.05.18 19:00 Сейчас в теме
Делал нечто подобное "для себя" но у автора пофункциональней. Я правда для вывода использовал "ФорматированныйДокумент" чтобы значения и атрибуты раскрашивать по-всякому, так глазастей. Так сказать, хотелось бы увидеть и у вас) Чтобы инструмент превратился в ультимативный
Прикрепленные файлы:
10. 🅵🅾️🆇 524 30.05.18 17:13 Сейчас в теме
Однозначно [★] в карму :3
11. s22 22 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 772 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);
		КонецЕсли;
	КонецЦикла;
	
	Возврат результат;
КонецФункции

&НаСервереБезКонтекста
Функция ХексВСтроку(Текст)
	
	Возврат НРег(СтрЗаменить(Строка(Текст), " ", ""));
	
КонецФункции
Показать
CepeLLlka; Vida; +2 Ответить
14. leemuar 21 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 901 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 Сейчас в теме
23. user594010_logobobah 08.06.23 18:32 Сейчас в теме
Для авторизации kerberos можно использовать данную обработку?
Оставьте свое сообщение