landing.landing.copyblock
Копировать блок на страницу
Описание
Метод landing.landing.copyblock копирует блок на указанную страницу и возвращает идентификатор созданной копии блока. Можно копировать блок как с другой страницы, так и в пределах той же страницы. Вместе с блоком копируются его HTML-содержимое.
Параметры
scope
string
необязательный
Внутренний скоуп лендингов. Он не связан с REST-скоупом landing в названии метода.
Значение scope должно соответствовать типу сайта (подробное описание)
lid
integer
обязательный
Идентификатор страницы, на которую нужно скопировать блок.
Идентификатор страницы можно получить методом landing.landing.getList, а также из результата методов landing.landing.add, landing.landing.addByTemplate и landing.landing.copy
block
integer
обязательный
Идентификатор исходного блока.
Идентификатор блока можно получить методом landing.block.getList. Блок может находиться как на другой странице, так и на той же странице lid.
Можно копировать только существующий блок, который не помечен как удаленный. Если блок удален, метод вернет ошибку
params
object
необязательный
Дополнительные параметры копирования (подробное описание)
Параметр params
AFTER_ID
integer
необязательный
Идентификатор блока на странице lid, после которого нужно вставить копию
Если передать идентификатор существующего блока на странице lid, копия будет вставлена сразу после него. Если параметр не передавать, передать 0 или указать идентификатор блока, которого нет на странице lid, копия будет добавлена в конец страницы
RETURN_CONTENT
string
необязательный
Если передать Y, метод вернет объект с признаком успеха и данными созданной копии блока (подробное описание). При любом другом значении метод вернет только идентификатор созданной копии блока
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"lid": 351,
"block": 6428,
"params": {
"AFTER_ID": 6429,
"RETURN_CONTENT": "Y"
}
}' \
"https://**put.your-domain-here**/rest/**user_id**/**webhook_code**/landing.landing.copyblock.json"
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"lid": 351,
"block": 6428,
"params": {
"AFTER_ID": 6429,
"RETURN_CONTENT": "Y"
},
"auth": "**put_access_token_here**"
}' \
"https://**put.your-domain-here**/rest/landing.landing.copyblock.json"
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type CopyBlockResult = {
result: boolean
content: {
id: number
sections: string
active: boolean
access: string
anchor: string
php: boolean
designed: boolean
repoId: number | null
content: string
content_ext: string
css: string[]
js: string[]
assetStrings: string[]
lang: string[] | Record<string, string>
manifest: Record<string, unknown>
dynamicParams: unknown[]
}
}
try {
const response = await $b24.actions.v2.call.make<CopyBlockResult>({
method: 'landing.landing.copyblock',
params: {
lid: 351,
block: 6428,
params: {
AFTER_ID: 6429,
RETURN_CONTENT: 'Y',
},
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info(result.result, result.content.id, result.content.anchor)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function copyBlock() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'landing.landing.copyblock',
params: {
lid: 351,
block: 6428,
params: {
AFTER_ID: 6429,
RETURN_CONTENT: 'Y',
},
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info(result.result, result.content.id, result.content.anchor)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', copyBlock)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.landing.landing.copyblock(
lid=351,
block=6428,
params={
"AFTER_ID": 6429,
"RETURN_CONTENT": "Y",
},
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service
->core
->call(
'landing.landing.copyblock',
[
'lid' => 351,
'block' => 6428,
'params' => [
'AFTER_ID' => 6429,
'RETURN_CONTENT' => 'Y',
],
]
);
$result = $response
->getResponseData()
->getResult();
print_r($result);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error: ' . $e->getMessage();
}
BX24.callMethod(
'landing.landing.copyblock',
{
lid: 351,
block: 6428,
params: {
AFTER_ID: 6429,
RETURN_CONTENT: 'Y'
}
},
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.info(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'landing.landing.copyblock',
[
'lid' => 351,
'block' => 6428,
'params' => [
'AFTER_ID' => 6429,
'RETURN_CONTENT' => 'Y',
],
]
);
if (isset($result['error']))
{
echo 'Ошибка: ' . $result['error_description'];
}
else
{
echo '<pre>';
print_r($result['result']);
echo '</pre>';
}
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "landing.landing.copyblock", b24.Params{
"lid": 351,
"block": 6428,
"params": b24.Params{
"AFTER_ID": 6429,
"RETURN_CONTENT": "Y",
},
})
if err != nil {
return fmt.Errorf("landing.landing.copyblock: %w", err)
}
var value b24.ID
if err := json.Unmarshal(res.Result, &value); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println("результат:", value)
Ответ
HTTP-статус: 200
{
"result": 28607,
"time": {
"start": 1773932480,
"finish": 1773932480.485875,
"duration": 0.48587489128112793,
"processing": 0,
"date_start": "2026-03-19T18:01:20+03:00",
"date_finish": "2026-03-19T18:01:20+03:00",
"operating_reset_at": 1773933080,
"operating": 0
}
}
Возвращаемые данные
result
integer
Идентификатор созданной копии блока. Если передан params.RETURN_CONTENT = 'Y', метод вернет объект с признаком успеха и данными блока (подробное описание)
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": "BLOCK_NOT_FOUND",
"error_description": "Блок не найден в лендинге"
}
| Код | Описание | Значение |
|---|---|---|
MISSING_PARAMS |
Не передан обязательный параметр lid или block |
|
LANDING_NOT_EXIST |
Страница с идентификатором lid не найдена или недоступна текущему пользователю |
|
ACCESS_DENIED |
У пользователя нет прав на вызов методов landing или нет права редактировать страницу lid |
|
BLOCK_NOT_FOUND |
Исходный блок с идентификатором block не найден, недоступен текущему пользователю, помечен как удаленный или его нельзя загрузить из исходной страницы |

