Работа с типами сайтов и скоупами

Мы еще обновляем эту страницу

Тут может не хватать некоторых данных — дополним в ближайшее время

Типы сайтов

Сайты могут быть следующих типов.

  • Основные:

    • PAGE (от Home Page) - обычные сайты.
    • STORE - магазины.
    • SMN - сайты, использующиеся в разделе Сайты24 в административном разделе в БУС.
  • Дополнительные:

    • KNOWLEDGE – базы знаний.
    • GROUP – базы знаний групп соц.сети.

На данный момент не поддерживается расширение типов.

Скоупы

Помимо разделительной функции на уровне компонентов существует также разграничение по правам, получившее название скоупов.

Если вы работаете с основными типами, ничего делать не нужно.
Если с дополнительными, перед работой нужно установить скоуп. В случае rest сделать это можно, передав дополнительным параметром scope.

Пример

В примере дан метод получения списка страниц, но правило распространяется на любой другой метод, в том числе на работу с правами и изменениями сущностей.

// callListMethod: Получает все данные сразу. Используйте только для небольших выборок (< 1000 элементов) из-за высокой нагрузки на память.
        
        const params = {
            select: ['ID', 'TITLE'],
            filter: {
                TITLE: '%услуги%',
                SITE_ID: 205
            },
            order: {
                ID: 'DESC'
            }
        };
        
        try {
            const response = await $b24.callListMethod(
                'landing.landing.getList',
                { params, scope: 'knowledge' }
            );
            const items = response.getData() || [];
            for (const entity of items) {
                console.log('Entity:', entity);
            }
        } catch (error) {
            console.error('Request failed', error);
        }
        
        // fetchListMethod: Выбирает данные по частям с помощью итератора. Используйте для больших объемов данных для эффективного потребления памяти.
        
        try {
            const generator = $b24.fetchListMethod('landing.landing.getList', { params, scope: 'knowledge' }, 'ID');
            for await (const page of generator) {
                for (const entity of page) {
                    console.log('Entity:', entity);
                }
            }
        } catch (error) {
            console.error('Request failed', error);
        }
        
        // callMethod: Ручное управление постраничной навигацией через параметр start. Используйте для точного контроля над пакетами запросов. Для больших данных менее эффективен, чем fetchListMethod.
        
        try {
            const response = await $b24.callMethod('landing.landing.getList', { params, scope: 'knowledge' }, 0);
            const result = response.getData().result || [];
            for (const entity of result) {
                console.log('Entity:', entity);
            }
        } catch (error) {
            console.error('Request failed', error);
        }
        
try {
            $response = $b24Service
                ->core
                ->call(
                    'landing.landing.getList',
                    [
                        'params' => [
                            'select' => [
                                'ID', 'TITLE'
                            ],
                            'filter' => [
                                'TITLE'   => '%услуги%',
                                'SITE_ID' => 205
                            ],
                            'order'  => [
                                'ID' => 'DESC'
                            ]
                        ],
                        'scope'  => 'knowledge'
                    ]
                );
        
            $result = $response
                ->getResponseData()
                ->getResult();
        
            echo 'Success: ' . print_r($result, true);
        
        } catch (Throwable $e) {
            error_log($e->getMessage());
            echo 'Error getting landing list: ' . $e->getMessage();
        }
        
BX24.callMethod(
            'landing.landing.getList',
            {
                params: {
                    select: [
                        'ID', 'TITLE'
                    ],
                    filter: {
                        TITLE: '%услуги%',
                        SITE_ID: 205
                    },
                    order: {
                        ID: 'DESC'
                    }
                },
                scope: 'knowledge'
            },
            function(result)
            {
                if(result.error())
                {
                    console.error(result.error());
                }
                else
                {
                    console.info(result.data());
                }
            }
        );
        

Как использовать примеры в документации

Предыдущая
Следующая