Подключение и инициализация

Библиотека "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...
?>