Загрузка документа в Highloadblock из 1C

CMS Bitrix, API Bitrix, etc
Ответить
Аватара пользователя
admin
Администратор
Сообщения: 71
Зарегистрирован: 06 июл 2017 09:26

Загрузка документа в Highloadblock из 1C

Сообщение admin » 16 авг 2017 19:10

Текст файла коннектора на стороне сайта

Код: Выделить всё

ini_set('display_errors','On');
error_reporting('E_ALL');
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
define('BX_COMP_MANAGED_CACHE', false);
CModule::IncludeModule('iblock');
CModule::IncludeModule('catalog');
CModule::IncludeModule('highloadblock');
use Bitrix\Sale;
use Bitrix\Highloadblock as HL; 
use Bitrix\Main\Entity; 
function Syng_Docs()
{	
	global $APPLICATION;
	$Docs = new SimpleXMLElement(file_get_contents('php://input'));
	$hlbl_docs = 12;
	$hlblock_docs = HL\HighloadBlockTable::getById($hlbl_docs)->fetch(); 
 	foreach ($Docs->Doc as $Doc)  
	{
		$arFieldsFind = array(
		    "UF_LEGAL_ID"=>strval($Doc['XML_ID_Company']),
			"UF_TYPE"=>strval($Doc['TYPE_FILE']),
			"UF_DATE"=>strval($Doc['DATE_FILE'])
		);
		$entity = HL\HighloadBlockTable::compileEntity($hlblock_docs); 
		$hlblock_docs_data_class = $entity->getDataClass();
		$entity_table_name = $hlblock_docs['TABLE_NAME'];
		$sTableID = 'tbl_'.$entity_table_name;
		$rsData = $hlblock_docs_data_class::getList(array(
		"select" => array('*'),  
		"filter" => $arFieldsFind
		));
		$rsData = new CDBResult($rsData, $sTableID);
		$arFile = CFile::MakeFileArray("upload/docs/".strval($Doc['NAME_FILE']));
		$docsdata = array(
		   "UF_LEGAL_ID"=>strval($Doc['XML_ID_Company']),
		   "UF_TYPE"=>strval($Doc['TYPE_FILE']),
		   "UF_DATE"=>strval($Doc['DATE_FILE']),
		   "UF_ORDER_TOTAL"=>$Doc['SUM_DOC'],
		   "UF_DOCUMENT"=>$arFile
		);
		$IDDocs=0;
		if($rsData->SelectedRowsCount()>0) 
		{
			$arRes=$rsData->NavNext();
			$IDDocs = $arRes['ID'];			
			$hlblock_docs_data_class::update($IDDocs, $docsdata);
		}
		else
		{
			$result = $hlblock_docs_data_class::add($docsdata);				
			$IDDocs = $result->getId();
		}
		unlink("upload/docs/".strval($Doc['NAME_FILE']));
	} 
	Print "Запрос к серверу прошел без ошибок \r\n";
}
это пример конкретного моего решения в одном из проектов, да, не все нужно тут для загрузки файла, что-то можно опустить
продолжением истории будет процедура стороне 1с, которая дергает этот файлик с параметрами, грузит файл по фтп.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей