Как в PHP-скрипте для Bitrix24 версии D7 получить расписание работы компании?

Мне нужно получить указанные настройки в скрипте и хотелось бы разобраться, как искать такой незадокументированный код.
  • 16 апреля 2025 г. 16:05
Ответы на вопрос 2
В Bitrix24 версии D7 для получения настроек компании, таких как расписание работы, можно использовать API `\Bitrix\Main\Config\Option`. Расписание работы обычно хранится в опциях, доступных через метод `getOption`. 

Вот пример того, как вы можете получить расписание работы компании в PHP-скрипте для Bitrix24:

```php
use Bitrix\Main\Config\Option;

$workSchedule = Option::get('main', 'work_time_schedule', '');

// Преобразуем строку расписания, если необходимо
if ($workSchedule) {
    $workSchedule = unserialize($workSchedule);
}

print_r($workSchedule);
```

В этом коде сначала подключается пространство имен `Bitrix\Main\Config\Option`, после чего производится запрос к опции, в которой хранится расписание работы. Результат будет сериализованным массивом, который вам нужно будет десериализовать с помощью функции `unserialize()`.

### Поиск незадокументированного кода

Если вы хотите разобраться, как находить такие настройки или методы, которые не задокументированы:

1. **Исследуйте исходный код**: Поскольку Bitrix24 - это коммерческий продукт, его исходный код доступен. Откройте папки и файлы модулей в директории `bitrix/modules/` и ищите нужные вам классы и методы.

2. **Используйте IDE**: Если у вас установлен PHPStorm или другая IDE с поддержкой PHP, вы можете использовать функцию "поиск по проекту", чтобы находить классы и методы по их названиям.

3. **Чтение документации**: Хотя некоторые вещи могут не быть должным образом документированы, вы все равно можете разбираться в официальной документации Bitrix, а также в форумах и сообществах.

4. **Сообщество**: Форумы Bitrix, Stack Overflow и другие сообщества могут быть полезны для поиска информации о незадокументированном функционале. Обратитесь к сообществу разработчиков, если возникают трудности.

5. **Отладка**: Используйте `var_dump()` или `print_r()` для вывода информации, чтобы понять, какие данные хранятся в массиве и где они могут быть использованы. Это поможет вам экспериментировать и понимать структуру данных.

Следуя этим рекомендациям, вы сможете более эффективно находить информацию о незадокументированном коде и использовать его в своих проектах.
Это конечно ни разу не "D7", но свою задачу решает. 

\Bitrix\Main\Loader::includeModule('calendar');

$settings = \CCalendar::GetSettings();

var_dump($settings);

/*
array(25) {
  ["work_time_start"]=>
  string(1) "9"
  ["work_time_end"]=>
  string(2) "19"
  ["year_holidays"]=>
  string(46) "1.01,2.01,7.01,23.02,8.03,1.05,9.05,12.06,4.11"
  ["year_workdays"]=>
  string(5) "31.12"
  ["week_holidays"]=>
  array(2) {
    [0]=>
    string(2) "SA"
    [1]=>
    string(2) "SU"
  }
  ["week_start"]=>
  string(2) "MO"
  ["user_name_template"]=>
  string(18) "#NAME# #LAST_NAME#"
  ["sync_by_push"]=>
  bool(false)
  ["user_show_login"]=>
  bool(true)
  ["path_to_user"]=>
  string(33) "/company/personal/user/#user_id#/"
  ["path_to_user_calendar"]=>
  string(42) "/company/personal/user/#user_id#/calendar/"
  ["path_to_group"]=>
  string(29) "/workgroups/group/#group_id#/"
  ["path_to_group_calendar"]=>
  string(38) "/workgroups/group/#group_id#/calendar/"
  ["path_to_vr"]=>
  string(0) ""
  ["path_to_rm"]=>
  string(0) ""
  ["rm_iblock_type"]=>
  string(0) ""
  ["rm_iblock_id"]=>
  string(0) ""
  ["dep_manager_sub"]=>
  bool(true)
  ["denied_superpose_types"]=>
  array(0) {
  }
  ["pathes_for_sites"]=>
  bool(true)
  ["pathes"]=>
  array(0) {
  }
  ["forum_id"]=>
  string(1) "8"
  ["rm_for_sites"]=>
  bool(true)
  ["path_to_type_company_calendar"]=>
  string(0) ""
  ["path_to_type_location"]=>
  string(0) ""
}
*/


Можете конечно сами нырнуть внутрь и переписать с
COption::GetOptionString('calendar', 'work_time_start', 9)


на
\Bitrix\Main\Config\Option::get('calendar', 'work_time_start', 9);


Но смысла не особо
Похожие вопросы