Реализация в 1С архитектуры RESTful

09.12.16

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

Пример реализации запросов с 1С к серверу, по принципу RESTful.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Пример реализцации работы RESTful API
.zip 4,83Kb ver:1.0.0
9
9 Скачать (1 SM) Купить за 1 850 руб.

REST (RESTful) - это общие принципы организации взаимодействия приложения/сайта с сервером посредством протокола HTTP.

Всё взаимодействие с сервером сводится к следующим операциям:

  1. получение данных с сервера (обычно в формате JSON, или XML)
  2. добавление новых данных на сервер
  3. модификация существующих данных на сервере
  4. удаление данных на сервере

Таким образом, данные HTTP-запросы будут иметь различную смысловую нагрузку в REST:

  • GET /object - Получаем данные Объекта
  • POST /object - Добавляем Объект
  • PUT /object - Изменяем(модифицируем) Объект
  • DELETE /object - Удаляем Объект

Т.е. :

  1. GET-запрос /rest/users - получение информации о всех пользователях
  2. GET-запрос /rest/users/125 - получение информации о пользователе с id=125
  3. POST-запрос /rest/users - добавление нового пользователя
  4. PUT-запрос /rest/users/125 - изменение информации о пользователе с id=125
  5. DELETE-запрос /rest/users/125 - удаление пользователя с id=125

Примерный код функции отправки запроса из 1С:

Функция ЗапросHTTP(ТипЗапроса)
	//ТипЗапроса: POST, GET, PUL, DELETE
	
	ПараметрГЕТ = "";
	ТелоPOSTЗапроса = "";
	Если ТипЗапроса="POST" или ТипЗапроса="PUT" Тогда
		ТелоPOSTЗапроса = "parametr5=5&parametr6=6"; // POST (+для PUT)
	ИначеЕсли ТипЗапроса="GET" Тогда
		ПараметрГЕТ = "?parametr1=1&parametr2=2"; // GET
	КонецЕсли;
	АдресСтраницыНаСервере = "/test_restful.php"+ПараметрГЕТ; // ЗАПРОС
	
	ЗащищенноеСоединение=Ложь;
	Таймаут=30; // ждем ответ от сервера 30 сек
	
	СерверПриемник = "domainname.ru"; //имя сервера без протокола (http) и порта
	
	ЗаголовкиHTTP = Новый Соответствие;
	ЗаголовкиHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
	
	SSL =  ?(ЗащищенноеСоединение, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
	НТТР = Новый HTTPСоединение(СерверПриемник, , , , , Таймаут, SSL);
	
	резутатПолучен=Ложь;
	Попытка
		//Формируем HTTP запрос
		ЗапросHTTP = Новый HTTPЗапрос(АдресСтраницыНаСервере, ЗаголовкиHTTP);
		//Устанавливает строку, из которого будет прочитано тело POST-запроса.
		ЗапросHTTP.УстановитьТелоИзСтроки(ТелоPOSTЗапроса);
		
		//Ответ от сервера получим в возвращаемом значении типа HTTPОтвет
		Если ТипЗапроса="GET" Тогда
			ОтветHTTP = НТТР.ВызватьHTTPМетод("GET",ЗапросHTTP);
		ИначеЕсли ТипЗапроса="POST" Тогда
			ОтветHTTP = НТТР.ВызватьHTTPМетод("POST",ЗапросHTTP);
		ИначеЕсли ТипЗапроса="PUT" Тогда
			ОтветHTTP = НТТР.ВызватьHTTPМетод("PUT",ЗапросHTTP);
		ИначеЕсли ТипЗапроса="DELETE" Тогда
			ОтветHTTP = НТТР.ВызватьHTTPМетод("DELETE",ЗапросHTTP);
		Иначе
			ВызватьИсключение("Неизвестный запрос: "+ТипЗапроса+"!");
		КонецЕсли;
		резутатПолучен=Истина;
	Исключение
		ТекстСообщения = НСтр("ru = 'Неудачная попытка соединения с '")  + СерверПриемник + ": " + ОписаниеОшибки();
		Сообщить("ПЛОХО "+ТекстСообщения);
	КонецПопытки;
	
	ПолученныеДанные="";
	
	Если резутатПолучен Тогда
		Если ОтветHTTP.КодСостояния = 200 Тогда
			// теперь можно разбирать ответ
			ЗаголовкиHTTP = ОтветHTTP.Заголовки;
			ЗаголовкиHTTP.Вставить("StatusCode", ОтветHTTP.КодСостояния);
			ПолученныеДанные = ОтветHTTP.ПолучитьТелоКакСтроку();
		Иначе
			Сообщить(ОтветHTTP.ПолучитьТелоКакСтроку());
		КонецЕсли;
	КонецЕсли;
	
	//Возврат ПолученныеДанные;
	Сообщить(ПолученныеДанные);
	
КонецФункции

Пример серверной части принимающей запросы от 1С:

if($_SERVER['REQUEST_METHOD'] == 'PUT') {
    $_PUT = array();
    $putdata = file_get_contents('php://input');
    $exploded = explode('&', $putdata);
    foreach($exploded as $pair) {
        $item = explode('=', $pair);
        if(count($item) == 2) {
            $_PUT[urldecode($item[0])] = urldecode($item[1]);
        }
    }

    echo "PUT\n";
    var_dump($_PUT);
} else if($_SERVER['REQUEST_METHOD'] == 'DELETE') {
    echo "DELETE\n";
    // параметры не нужны!
    //var_dump($_DELETE);
} else if($_SERVER['REQUEST_METHOD'] == 'POST') {
    echo "POST\n";
    var_dump($_POST);
} else if($_SERVER['REQUEST_METHOD'] == 'GET') {
    echo "GET\n";
    var_dump($_GET);
} else {
    echo "BAD\n";
}

В файле приведен весь данный код, и собран в рабочий пример. Архив содержит два файла: обработка для 1С - выступающая в качестве клиента и обработка для сервера на php.

restful rest restful api rest api

См. также

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    26440    26    1    

28

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

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

28500 руб.

15.11.2022    22925    24    49    

39

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1301    1    0    

3

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

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

13200 руб.

19.12.2016    48655    98    106    

70

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 организаций (далее Парус) в конфигурацию 1С:Зарплата и управление персоналом, ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

07.06.2021    13739    2    3    

3

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 7.хх учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

84000 руб.

24.04.2017    52671    104    165    

91
Оставьте свое сообщение