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

09.12.16

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

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

Скачать исходный код

Наименование Файл Версия Размер
Пример реализцации работы RESTful API
.zip 4,83Kb
9
.zip 1.0.0 4,83Kb 9 Скачать

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

См. также

Перенос данных из Парус 8 в ЗГУ 3

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

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

84000 руб.

19.08.2020    22660    19    1    

22

Экстрактор данных 1С в BI - выгрузка данных из 1С в BI-аналитику

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

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

15.11.2022    13903    12    SQV0    47    

30

Перенос данных из Парус 10 в ЗГУ ред.3

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

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

60000 руб.

05.10.2022    9327    9    8    

11

Перенос данных из Парус 7.хх в ЗГУ ред.3

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

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

24000 руб.

24.04.2017    48915    97    163    

86

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате из Парус 10(Торнадо) учреждений через файлы Excel в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ). В принципе, обработка может быть использована для загрузки из файлов Excel, полученных из любых информационных систем.

24000 руб.

16.11.2018    30106    20    31    

21

Загрузка в БГУ из УРМ "Криста"

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

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

4800 руб.

19.06.2013    38578    136    90    

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