Отправка данных в SPOT 2d посредством http запросов в 1С 8.3 УФ (без curl)

18.09.19

Интеграция - Внешние источники данных

Обработка для отправки данных в Spot2D двумя способами посредством http запросов в 1С 8.3 УФ (без curl).

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Обработка для отправки данных в SPOT 2d посредством http запросов в 1С 8.3 УФ (без curl):
.epf 8,49Kb
50 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Добрый день!

Хочу представить пример обработки для отправки данных в SPOT 2D (Данная обработка НЕ ФОРМИРУЕТ файлы)
посредством http запросов

Эта обработка работает в версии 1С 8.3 на управляемых формах.

Есть публикации, в которых это уже реализовано, но под более ранние версии 1С.

В данной обработке используются 2 метода передачи данных на выбор:

1) Встроенный метод 1С - методом УстановитьТелоИзСтроки HTTP запроса.
     Пробовал метод УстановитьИмяФайлаТела, но почему то не получилось

2) Посредством COM объекта WinHttp.WinHttpRequest.5.1
    (он более универсален, т.к. при необходимости позволяет его адаптировать в 1С 7.7)

В интерфейсе обработки нужно указать каталог файлов загрузки (можно выбрать), маску файлов (по умолчанию *.csv),
сервер, адрес (ресурс сервера), пользователя, пароль и ID. Можно выбрать альтернативный метод отправки - галочка методом Win http, и предусмотрено удаление файлов запросов - соответствующая галочка.

Общий алгоритм:

В указанном каталоге ищутся все файлы по маске, и производится отправка каждого с выводом сообщения ответа сервера.

Занялся этой обработкой, т.к. не нашел готовой, а у многих, вижу, были проблемы с http запросами. И ещё искал альтернативу программе curl.

Обработка тестировалась на платформе 1С:Предприятие 8.3 (8.3.14.1565)

Обработка для отправки данных в Spot2D двумя способами посредством http запросов 8.3 УФ (без curl)

См. также

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Бухгалтерский учет 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (базовая, ПРОФ, КОРП, ФРЕШ).

13200 руб.

19.12.2016    49512    102    106    

74

Внешние источники данных Программист Бизнес-аналитик Пользователь 1С v8.3 Управляемые формы Анализ и прогнозирование 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    24968    27    49    

42

Производство готовой продукции (работ, услуг) Внешние источники данных 1С v8.3 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

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

10200 руб.

24.06.2021    22671    57    55    

40

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

Быстро и легко. Выгрузка всех элементов и групп номенклатуры (с их иерархией), кроме помеченных на удаление. Без использования COM-объектов.

4800 руб.

16.08.2023    2235    6    8    

9

Внешние источники данных Банковские операции Бухгалтер 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия государственного учреждения Россия Бухгалтерский учет Платные (руб)

Обработки для загрузки данных из УРМ "Криста" в бухгалтерию государственного учреждения редакция 2.0. Есть Демо доступ на вкладке Бесплатные файлы на 1 месяц со дня получения демонстрационного ключа регистрации. Поддерживает ПО "Web-исполнение" от НПО "Криста".

4800 руб.

19.06.2013    40522    143    108    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ltfriend 20.09.19 08:11 Сейчас в теме
WinHttp менее универсальный из-за того, что работает только под виндой.
3. Rif_md 6 20.09.19 14:12 Сейчас в теме
(1) Да, это понятно, что только под Windows. Я имел в виду возможность адаптации под 1С 7.7, которой случается ещё пользуются.
2. ImHunter 338 20.09.19 09:31 Сейчас в теме
(0) (1) У меня вот так вот без внешних модулей
Функция пуПередатьФайл(ВидДанных, ИмяФайла) Экспорт
	
	Передано = Ложь;
	
	ВидФайла = ПолучитьИмяФайлаДанных(ВидДанных, "csv");
	
	 // подготовим файл с данными для отправки
	ИмяФайлаОтправки = ПолучитьимяВременногоФайла("txt");
	Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
	 
	ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаОтправки);
	 
	// параметр "ufile"
	ФайлДляПередачи = Новый ТекстовыйДокумент;
	ФайлДляПередачи.Прочитать(ИмяФайла);
	 
	ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
	ЗаписьТекста.ЗаписатьСтроку(СтрШаблон("Content-Disposition: form-data; filename=""%1""", ВидФайла));
	ЗаписьТекста.ЗаписатьСтроку("Content-Type: text/plain");
	ЗаписьТекста.ЗаписатьСтроку("");
	ЗаписьТекста.Записать(ФайлДляПередачи.ПолучитьТекст());
	ЗаписьТекста.ЗаписатьСтроку("");
	
	// параметр "__login"
	ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
	ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""__login""");
	ЗаписьТекста.ЗаписатьСтроку("");
	ЗаписьТекста.ЗаписатьСтроку(пуПользователь);
	 
	// параметр "__password"
	ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
	ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""__password""");
	ЗаписьТекста.ЗаписатьСтроку("");
	ЗаписьТекста.ЗаписатьСтроку(пуПароль);
	 
	// параметр "__did"
	ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
	ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""__did""");
	ЗаписьТекста.ЗаписатьСтроку("");
	ЗаписьТекста.ЗаписатьСтроку(пуИдентификатор);
	 
	 
	// закроем разделитель
	ЗаписьТекста.ЗаписатьСтроку("--"+boundary+"--");
	 
	ЗаписьТекста.Закрыть();
	 
	ФайлОтправки = Новый Файл(ИмяФайлаОтправки);
	РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
	 
	// передадим данные на сервер 
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("Content-Type", "multipart/form-data, boundary=" + boundary);
	Заголовки.Вставить("Content-Lenght", РазмерФайлаОтправки);
	
	Попытка
	 
		Запрос = Новый HTTPЗапрос(пуСтраница, Заголовки);
		Запрос.УстановитьТелоИзДвоичныхДанных(Новый ДвоичныеДанные(ИмяФайлаОтправки));
		
		Соединение = Новый HTTPСоединение(пуСайт);
		Ответ = Соединение.ОтправитьДляОбработки(Запрос); 
		ОтветСтрока = Ответ.ПолучитьТелоКакСтроку();
		
		Передано = Ответ.КодСостояния>=200 И Ответ.КодСостояния<300;
		ЗаписьЖурналаРегистрации(ИмяСобытияЖР("Статус при отправке в spot2d"), 
			?(Передано, УровеньЖурналаРегистрации.Информация, УровеньЖурналаРегистрации.Ошибка), , , ОтветСтрока
		);
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
			?(Передано, 
				СтрШаблон("Данные %1 успешно переданы", ВидДанных), 
				СтрШаблон("Ошибка при отправке:
						|%1", ОтветСтрока))
		);
		
	Исключение
		
		Передано = Ложь;
		ОписаниеОшибки = ОписаниеОшибки();
		ЗаписьЖурналаРегистрации(ИмяСобытияЖР("Ошибка при отправке в spot2d"), УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки);
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ОписаниеОшибки);
		
	КонецПопытки;	
		
КонецФункции
Показать
aviks__; Antoska; +2 Ответить
4. Rif_md 6 20.09.19 14:17 Сейчас в теме
(2) Тоже вариант решения. Я пробовал УстановитьИмяФайлаТела, но не срабатывало. Я думал о варианте с УстановитьТелоИзДвоичныхДанных, но мне не понравилась идея с конвертацией в бинарный формат когда можно сразу строку передать параметром (мне кажется этот способ передает меньший объем). Со строкой тоже нюансы. Если файл большой, то уже нельзя использовать строковую переменную, нужно записать текстовый файл, а потом передать параметром
УстановитьТелоИзСтроки(ФайлДляПередачи.ПолучитьТекст())
или
WinHttp.Send(ФайлДляПередачи.ПолучитьТекст())
5. sergejr 11.07.20 00:54 Сейчас в теме
(2) подскажите выдает ошибку

500
ERROR:
Fayl otsutstvuet

куда копать? делал так же как у вас.

ВидФайла = Stocks.csv
6. ImHunter 338 11.07.20 17:41 Сейчас в теме
(5) Уже не могу проверить, т.к. не работаю больше с теми заказчиками.
Возможно, нет какого-то разделителя (пустой строки) или где-то лишний пробел.
7. sergejr 13.07.20 13:00 Сейчас в теме
8. gorevg 23 31.05.21 10:25 Сейчас в теме
(7) У вас получилось разобраться? Такая же ошибка выходит
9. Rif_md 6 31.05.21 14:49 Сейчас в теме
(8) А подробнее, где именно эта ошибка возникает?
10. EdikSarkisov 02.08.22 10:22 Сейчас в теме
(9)думаю Вы разобрались, но для будущих поколений зафиксируем:)
Актуальная строка передачи файла:
ЗаписьТекста.ЗаписатьСтроку(СтрШаблон("Content-Disposition: form-data; name=""ufile""; filename=""%1""", ВидФайла));

Важно, чтобы ВидФайла был указан маленькими буквами("clients", "ttoptions", "ta", "delivery", "stocks", "sku", "receive", "ordersconfirm", "ordersreturns", "movements", "cancellations", "offtake" , "warehouses")

И я добавил еще вот такую пару строк в начале файла
ЗаписьТекста.ЗаписатьСтроку("Content-Type: multipart/form-data; boundary="+boundary);
ЗаписьТекста.ЗаписатьСтроку("");
aviks__; Ayne; +2 Ответить
Оставьте свое сообщение