0. Yashazz 2855 12.08.19 16:30 Сейчас в теме

Совсем простой обмен HTTP, 2 функции

Функция для вызова рест-сервиса и функция для разбора результата. Быстро, просто, универсально.

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

Комментарии
Избранное Подписка Сортировка: Древо
1. VmvLer 12.08.19 16:34 Сейчас в теме
не читал подробно, но приветствую.
никакой воды: лаконичное описание и код для тестирования/использования.

не то что опусы тутошних маркетологов - напишут с три короба, замылят глаза картинками, а проку пшик.
mashinist; Yashazz; varius; GreenDragon; Vanch90; +5 1 Ответить
2. Yashazz 2855 12.08.19 18:17 Сейчас в теме
Странное что-то с пробелами после запятых, взяли и исчезли... Извиняюсь, возможно, накосячил при публикации.
3. fr13 628 13.08.19 06:11 Сейчас в теме
В попытке выполнять такой большой участок кода... сомнительное решение. Все возможные ошибки проглатываются и сводятся к одной. Такой код тяжело поддерживать.
Vladimir Litvinenko; dsdred; wowik; Yakud3a; silberRus; FreeArcher; +6 Ответить
4. Yashazz 2855 13.08.19 10:17 Сейчас в теме
(3) Соглашусь. Действительно, логичнее разбить на пошаговые попытки. Переделать?
5. AllexSoft 13.08.19 10:25 Сейчас в теме
Автор любитель условий через ?(,,), сразу видать )
Даю подсказку:
рКодировка=?(рПараметры.Свойство("КодировкаТелаЗапроса"),рПараметры.КодировкаТелаЗапроса,Неопределено);

заменяется на
рПараметры.Свойство("КодировкаТелаЗапроса", рПараметры.КодировкаТелаЗапроса);

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

А раз так много переменных параметров для запроса требуется, то лучше вынести это в структуру вообще типа
СтруктураПараметровЗапроса = новый Структура("параметр1, параметр2, параметр3", "", "", неопределено);
ну а потом ЗаполнитьЗначенияСвйоств(СтруктураПараметровЗапроса , рПараметры);
все! две строи и параметры инициализированы, и вы точно уверены в полях СтруктураПараметровЗапроса

А здесь зачем то сделано через попытку..
Попытка рПараметры.Вставить("Причина",рОтвет.Причина) Исключение рПараметры.Вставить("Причина","") КонецПопытки;

хотя то же самое что
 Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(рОтвет, "Причина") Тогда рПараметры.Вставить("Причина",рОтвет.Причина) Иначе рПараметры.Вставить("Причина","") КонецЕсли  


А вобще для ODATA неплохо бы процедурку которая умеет собирать параметр filter из структуры отбора или настройки отбора компоновщика скд.
maxopik2; +1 Ответить
6. Yashazz 2855 13.08.19 10:27 Сейчас в теме
(5) Алекс, а это я часть кода резал, неуниверсальную, перед публикацией. Вышло так. Вообще, конечно, ты прав.
7. Yashazz 2855 13.08.19 10:31 Сейчас в теме
(5) Насчёт filter'а для опен даты поищу, вроде где-то делал...
8. AllexSoft 13.08.19 10:37 Сейчас в теме
(7) вот это было бы здорово! у меня никак руки не доходят написать такое, пока использую свои наработки и получается что то типа этого

	ПутьНаСервере = СтруктураПодключения.ИмяПубликации + "/odata/standard.odata/Catalog_ДоговорыКонтрагентов?$format=json&$filter=Owner_Key eq guid'"+СтруктураКонтрагент.Ref_Key+"'";
			
	СвойстваСДатой = Новый Структура("Дата, СрокДействия", '00010101', '00010101');
			
	Результат = ПолучитьДанныеИзODATAвСтруктуру(СтруктураПодключения, ПутьНаСервере,,, СвойстваСДатой);
	
	Для каждого СтруктураДоговор Из Результат.value Цикл
		
		СтруктураПолейПоиска = Новый Структура("Дата, Номер, Контрагент", Новый Структура("ИмяПоля", "Дата"), Новый Структура("ИмяПоля", "Номер"), НайденныйКонтрагент.Ссылка);
		
		НайденныйДоговор = ПолучитьОбъектПоСтруктуреODATA(СтруктураДоговор, "Справочник.ДоговорыКонтрагентов", СтруктураПолейПоиска);
		ЗаполнитьЗначенияСвойств(НайденныйДоговор, СтруктураДоговор,,"Code");

.....
НайденныйДоговор.Записать();

КонецЦикла;


Показать


где ПолучитьДанныеИзODATAвСтруктуру - получает массив структур из ODATA, ПолучитьОбъектПоСтруктуреODATA - по структуре находит объекты в базе или создает их (подобно как ПКО в КД2). Вот сюда бы как раз универсальную замену вот этой строке
ПутьНаСервере = СтруктураПодключения.ИмяПубликации + "/odata/standard.odata/Catalog_ДоговорыКонтрагентов?$format=json&$filter=Owner_Key eq guid'"+СтруктураКонтрагент.Ref_Key+"'";
9. Yashazz 2855 13.08.19 11:02 Сейчас в теме
(8) Вечером доберусь до терминала, где делал это - скопирую и выложу. Хотя у меня это примерно на том же уровне, что и ты привёл пример... Надо вообще?
10. AllexSoft 13.08.19 11:07 Сейчас в теме
(9)
Надо вообще?

думаю в качестве дополнения к статье было бы интересно не только мне.. тем более у меня filter никак не формируется вообще (
11. user1166203 13.08.19 11:59 Сейчас в теме
Спонсор функции - производитель колесиков для мыши :(
OttoBismarck; json; reotem; fotov; Vladimir Litvinenko; +5 Ответить
12. kosmo0 81 15.08.19 10:11 Сейчас в теме
Немного не по статье (раз уж специалисты по работе 1С в интернете собрались).
Можно ли как-то прологировать действия 1с с инетом? В частности работу FTPСоединение. А то один компьютер подключается и нормально забирает и выкладывает файлы. Другой этого не может, хотя конфа одна и та же. Можно конечно потыкать пальцем в небо - давайте попробуем то или это, но хотелось бы видеть действия программы. Или это только сниффером пакеты смотреть?
13. AllexSoft 15.08.19 11:21 Сейчас в теме
(12) по идее включить тех журнал, там наверняка есть события подобного рода. Первое куда я бы смотрел это туда.
15. kosmo0 81 22.08.19 09:12 Сейчас в теме
(13)(14) Спасибо за возможные решения проблемы. Но решил отказаться от FTP в данном случае. Так как не специалист по сетевым технологиям и времени на устранение понадобится довольно много. Плюс надо проверять и изменять из места в котором я не обладаю всеми полномочиями.

зы. Для информации. FTP-сервер расположен на роутере (флешка в usb-порту). Раньше был один роутер, после поломки приобретен от того же производителя, но модель попроще. На старом роутере работало оба обмена использующие FTPСоединение. Но новом только один.

Код который работал и работает:
Соединение.НайтиФайлы("[полный путь к папке]", <ИмяФайла>);

Код который не стал работать:
Соединение.УстановитьТекущийКаталог("[полный путь к папке]");
Соединение.НайтиФайлы(,<ИмяФайла>);

Плюс оказалось что есть чувствительность к регистру букв в полном пути (особенно в наименовании корневого каталога).
14. Yashazz 2855 15.08.19 12:50 Сейчас в теме
(12) Просто ЖР для начала, и каждый шаг писать. Прям вот каждый, и код разобрать на совсем простые шаги. Ну и внимательно смотреть всё - клиент или сервер, какие права у юзера и аккаунта подключения, итд.

Алекс, мне обрубили доступ к тому терминалу. Попробую по черновикам восстановить.
AllexSoft; +1 Ответить
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день

Программист 1С
Краснодар
зарплата от 80 000 руб. до 160 000 руб.
Полный день

Консультант 1 С
Краснодар
зарплата от 50 000 руб. до 150 000 руб.
Полный день

Консультант-методолог 1С
Краснодар
зарплата от 110 000 руб.
Полный день