НаименованиеОрг = [Документ].Комментарий;
[Результат] = Справочники.Организации.НайтиПоНаименованию(НаименованиеОрг);ЗаказОснование = Документы.ЗаказКлиента.ПустаяСсылка();
ЗаказОснование = ПолучитьОснование([ДокументXML], Тип("ДокументСсылка.ЗаказКлиента"));
[Результат] = ЗаказОснование.Организация;use Bitrix\Main\Mail;
/**
 * Get from b_event table
 * @var integer Existed event id
 */
$displayedEventId = 336020;
/**
 * List of site ids, for event theme generation
 * must be replaced by current site id in public
 * @var array
 */
$arSites = [
	's1'
];
try
{
	/**
	 * First, try to find event
	 */
	$arEvent = Mail\Internal\EventTable::getRow([
		'filter' => [
			'=ID' => $displayedEventId,
		]
	]);
	if ( !$arEvent )
	{
		throw new \Exception('Event not found');
	}
	$arEvent['FIELDS'] = $arEvent['C_FIELDS'];
	/**
	 * Try to find all message templates for 
	 * sites. In event handler we send for one letter
	 * per site.
	 */
	$arEventMessageFilter = [
		'=ACTIVE' => 'Y',
		'=EVENT_NAME' => $arEvent["EVENT_NAME"],
		'=EVENT_MESSAGE_SITE.SITE_ID' => $arSites,
	];
	$messageDb = Mail\Internal\EventMessageTable::getList([
		'select' => ['ID'],
		'filter' => $arEventMessageFilter,
		'group' => ['ID']
	]);
	foreach ($messageDb as $arMessage)
	{
		$eventMessage = Mail\Internal\EventMessageTable::getRowById($arMessage['ID']);
		$eventMessage['FILES'] = array();
		$attachmentDb = Mail\Internal\EventMessageAttachmentTable::getList(array(
			'select' => array('FILE_ID'),
			'filter' => array('=EVENT_MESSAGE_ID' => $arMessage['ID']),
		));
		while($arAttachmentDb = $attachmentDb->fetch())
		{
			$eventMessage['FILE'][] = $arAttachmentDb['FILE_ID'];
		}
		$arFields = $arEvent['FIELDS'];
		// get message object for send mail
		$arMessageParams = array(
			'EVENT' => $arEvent,
			'FIELDS' => $arFields,
			'MESSAGE' => $eventMessage,
			'SITE' => $arSites,
			'CHARSET' => $charset,
		);
		$message = Mail\EventMessageCompiler::createInstance($arMessageParams);
		$message->compile();
		echo $message->getMailBody();
	}
}
catch( \Exception $e )
{
	var_dump($e);
}// создаём отгрузки
$shipmentCollection = $orderBx->getShipmentCollection();foreach (importJson['Shipments'] as $importOrderShipment)$shipment = $shipmentCollection->createItem();$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('sale', 'OnSaleOrderBeforeSaved', 'orderModify');
function orderModify(Bitrix\Main\Event $event)
{
    global $USER;
    /** @var \Bitrix\Sale\Order $order */
    $order = $event->getParameter('ENTITY');
    $personTypeId = 3;
    $profileId = CSaleOrderUserProps::DoSaveUserProfile($USER->GetID(), null, 'Профиль ' . random_int(0, 500), $personTypeId,
        // код свойства и его значение
        [
            20 => random_int(100, 900),
            21 => random_int(500, 599)
        ], $errors);
    // Получаем текущую коллекцию свойств заказа и удаляем все свойства
    /** @var \Bitrix\Sale\PropertyValueCollection $orderProperties */
    $orderProperties = $order->getPropertyCollection();
    /** @var \Bitrix\Sale\PropertyValue $orderProperty */
    foreach ($orderProperties as $orderProperty) {
        $orderProperty->delete();
    }
    // Меняем тип плательщика
    $order->setPersonTypeId($personTypeId);
    // Далее взято из \Bitrix\Sale\PropertyValueCollection::load()
    // Т.к. на объекте заказа уже была получена коллекция, то при вызове $order->getPropertyCollection(),
    // коллекция не будет заполнена свойствами под новый тип плательщика.
    // Поэтому нужно добавлять свойства вручную
    // Получаем список свойств нового плательщика
    $props = \Bitrix\Sale\PropertyValue::loadForOrder($order);
    // Добавляем свойства к коллекции
    /** @var \Bitrix\Sale\PropertyValue $prop */
    foreach ($props as $prop) {
        $prop->setCollection($orderProperties);
        $orderProperties->addItem($prop);
        // В своём коде напямую этого сделать не можем, т.к. метод и свойство имеют приватный доступ
        // Но можно сделать обходным путём
//        $orderProperties->setAttributes($prop);
//        $orderProperties->propertyGroupMap[$prop->getGroupId() > 0 && isset($groups[$personTypeId][$prop->getGroupId()]) ? $prop->getGroupId() : 0][] = $prop;
    }
    // Получаем значения профиля
    $profileProperties = \Bitrix\Sale\OrderUserProperties::getProfileValues($profileId);
    // Записываем к заказу
    $orderProperties->setValuesFromPost(array('PROPERTIES' => $profileProperties), array());
}