Подключение и инициализация
Библиотека "Brom" для PHP может быть загружена с официального сайта проекта.
Для создания клиента необходимо вызвать конструктор, передав в него параметры подключения или строку подключения:
$клиент = new БромКлиент("
Публикация = http://domainname.ru/publication_name
; Пользователь = username; Пароль = userpassword ");
$клиент = new БромКлиент("http://bromdemo.itworks.group/bromdemo", "bromuser", "brompassword");
После того как клиент создан, его можно использовать для взаимодействия с приложением 1С без каких либо дополнительных настроек. В следующих разделах описаны методики дополнительной оптимизации взаимодействия клиента и сервера, которые снижают нагрузку на сервер и увеличивают быстродействие клиентского приложения.
Предварительная загрузка метаданных
При взаимодействие с объектами конфигурации клиент автоматически загружает с сервера метаданные используемых объектов по мере необходимости (фрагментарная загрузка метаданных). По этой причине первое обращение к объектам определенного типа сопровождается дополнительными серверными вызовами. Чтобы уменьшить количество таких вызовов, можно заранее загрузить метаданные:
// Загружаем все объекты метаданных единым блоком (не рекомендуется)
$клиент->ЗагрузитьМетаданные("*");
// Загружаем все объекты метаданных пакетами по 100 объектов
$клиент->ЗагрузитьМетаданные("*", 100);
// Загружаем только некоторые коллеции метаданных пакетами по 100 объектов
$клиент->ЗагрузитьМетаданные("Справочники.*, Документы.*", 100);
// или сокращенно
$клиент->ЗагрузитьМетаданные("Справочники, Документы", 100);
// Загружаем только конкретные объекты метаданных
$клиент->ЗагрузитьМетаданные("Справочники.Номенклатура, Справочники.Контрагенты, Документы.ЗаказКлиента");
Кеширование метаданных
Количество серверных вызовов, необходимых для загрузки метаданных, может быть дополнительно снижено за счет использования механизма кеширования. Для использования данного механизма достаточно создать объект, управляющий кешем, и передать его клиенту:
// Кешируем метаданнные в файловой системе
$клиент->Метаданные->Кеш = new ФайловыйКешМетаданных("Temp/Cache");
// Кешируем метаданнные в файловой системе
$клиент->Метаданные->Кеш = new ФайловыйКешМетаданных("Temp/Cache");
// Если необходимо очистить кеш
$клиент->Метаданные->Кеш->Очистить();
В библиотеке реализован простейший кеш с использованием файловой системы. Чтобы реализовать кеш с использованием других механизмов (например, с использованием базы данных), достаточно создать собественный класс кеша, реализующий интерфейс "ИКешМетаданных".
Примеры приложений
Ниже представлены примеры простейших скриптов с использованием библиотеки:
<?php
include "brom.php";
// Создаем клиент
$клиент = new БромКлиент("
Публикация = http://domainname.ru/publication_name
; Пользователь = username; Пароль = userpassword "); // Получаем информацию о конфигурации информационной базы $инфо = $клиент->ПолучитьИнформациюОСистеме(); // Выводим полученную информацию на экран echo("Конфигурация: {$инфо->Синоним} <br/>"); echo("Версия конфигурации: {$инфо->Версия} <br/>"); echo("Версия Бром: {$инфо->РасширениеБром->Версия} <br/>"); // TODO... ?>
<?php
include "brom.php";
// Создаем клиент
$клиент = new БромКлиент("
Публикация = http://bromdemo.itworks.group/bromdemo;
Пользователь = bromuser;
Пароль = brompassword
");
// Включаем кеширование метаданных в указанной директории (необходимы права на запись)
$клиент->Метаданные->Кеш = new ФайловыйКешМетаданных("Temp/Cache");
// Загружаем все метаданные несколькими пакетами
$клиент->ЗагрузитьМетаданные("*", 100);
// Выводим состав метаданных на экран
foreach ($клиент->Метаданные as $имя1 => $уровень1) {
echo("{$имя1}: <br/>");
foreach ($уровень1 as $имя2 => $уровень2) {
echo("--- {$имя2} <br/>");
}
}
// TODO...
?>
<?php
include "brom.php";
// Создаем клиент
$клиент = new БромКлиент("
Публикация = http://bromdemo.itworks.group/bromdemo;
Пользователь = bromuser;
Пароль = brompassword
");
// Получаем ссылку на элемент справочника "ВидыНоменклатуры"
$видТовары = $клиент->Справочники->ВидыНоменклатуры->НайтиПоНаименованию("Товары");
// Создаем запрос
$текЗапрос = $клиент->СоздатьЗапрос("
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.Наименование КАК Наименование,
Номенклатура.Артикул КАК Артикул
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ЭтоГруппа = ЛОЖЬ
И Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
УПОРЯДОЧИТЬ ПО
Наименование
");
// Устанавливаем значение параметра запроса
$текЗапрос->УстановитьПараметр("ВидНоменклатуры", $видТовары);
// Выполняем запрос и выводим результат на экран
$результат = $текЗапрос->Выполнить();
foreach ($результат as $стр) {
echo("Товар: {$стр->Наименование}; Артикул: {$стр->Артикул} <br/>");
}
// TODO...
?>