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

Библиотека "Brom" для PHP может быть загружена с официального сайта проекта или установлена из репозитория:

pip install brom

Для создания клиента необходимо вызвать конструктор, передав в него параметры подключения или строку подключения:

клиент = БромКлиент("""
	Публикация		= http://domainname.ru/publication_name; Пользователь = username; Пароль = userpassword """)
клиент = БромКлиент("http://bromdemo.itworks.group/bromdemo", "bromuser", "brompassword")

После того как клиент создан, его можно использовать для взаимодействия с приложением 1С без каких либо дополнительных настроек. В следующих разделах описаны методики дополнительной оптимизации взаимодействия клиента и сервера, которые снижают нагрузку на сервер и увеличивают быстродействие клиентского приложения.

Предварительная загрузка метаданных

При взаимодействие с объектами конфигурации клиент автоматически загружает с сервера метаданные используемых объектов по мере необходимости (фрагментарная загрузка метаданных). По этой причине первое обращение к объектам определенного типа сопровождается дополнительными серверными вызовами. Чтобы уменьшить количество таких вызовов, можно заранее загрузить метаданные:

# Загружаем все объекты метаданных единым блоком (не рекомендуется)   
клиент.ЗагрузитьМетаданные("*")
# Загружаем все объекты метаданных пакетами по 100 объектов 
клиент.ЗагрузитьМетаданные("*", 100)
# Загружаем только некоторые коллеции метаданных пакетами по 100 объектов
клиент.ЗагрузитьМетаданные("Справочники.*, Документы.*", 100)

# или сокращенно
клиент.ЗагрузитьМетаданные("Справочники, Документы", 100)
# Загружаем только конкретные объекты метаданных
клиент.ЗагрузитьМетаданные("Справочники.Номенклатура, Справочники.Контрагенты, Документы.ЗаказКлиента")

Кеширование метаданных

Количество серверных вызовов, необходимых для загрузки метаданных, может быть дополнительно снижено за счет использования механизма кеширования. Для использования данного механизма достаточно создать объект, управляющий кешем, и передать его клиенту:

# Кешируем метаданнные в файловой системе
клиент.Метаданные.Кеш = ФайловыйКешМетаданных("C:\КешМетаданных")
# Кешируем метаданнные в файловой системе
клиент.Метаданные.Кеш = ФайловыйКешМетаданных("C:\КешМетаданных")

# Если необходимо очистить кеш
клиент.Метаданные.Кеш.Очистить()

В библиотеке реализован простейший кеш с использованием файловой системы. Чтобы реализовать кеш с использованием других механизмов (например, с использованием базы данных), достаточно создать собественный класс кеша, реализующий интерфейс "ИКешМетаданных".

Примеры приложений

Ниже представлены примеры простейших скриптов с использованием модуля:

from brom import *

# Создаем клиент
клиент = БромКлиент("""
	Публикация		= http://bromdemo.itworks.group/bromdemo;
	Пользователь	= bromuser;
	Пароль			= brompassword
""")

# Получаем информацию о конфигурации информационной базы
инфо = клиент.ПолучитьИнформациюОСистеме()

# Выводим полученную информацию на экран
print("Конфигурация: " + инфо.Синоним)
print("Версия конфигурации: " + инфо.Версия)
print("Версия Бром: " + инфо.РасширениеБром.Версия)

# TODO...
from brom import *

# Создаем клиент
клиент = БромКлиент("""
	Публикация		= http://bromdemo.itworks.group/bromdemo;
	Пользователь	= bromuser;
	Пароль			= brompassword
""")

# Включаем кеширование метаданных 
клиент.Метаданные.Кеш = ФайловыйКешМетаданных("C:\\КешМетаданных")

# Загружаем все метаданные несколькими пакетами
клиент.ЗагрузитьМетаданные("*", 100)

# Выводим состав метаданных на экран
for уровень1 in клиент.Метаданные.values():
	print(уровень1.Имя() + ":")

	for уровень2 in уровень1.values():
		print("    " + уровень2.Имя())

# TODO...
from brom import *

# Создаем клиент
клиент = БромКлиент("""
	Публикация		= http://bromdemo.itworks.group/bromdemo;
	Пользователь	= bromuser;
	Пароль			= brompassword
""")

# Получаем ссылку на элемент справочника "ВидыНоменклатуры"
видТовары = клиент.Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товары")

# Создаем запрос
текЗапрос = клиент.СоздатьЗапрос("""
	ВЫБРАТЬ
		Номенклатура.Ссылка КАК Ссылка,
		Номенклатура.Наименование КАК Наименование,
		Номенклатура.Артикул КАК Артикул
	ИЗ
		Справочник.Номенклатура КАК Номенклатура
	ГДЕ
		Номенклатура.ЭтоГруппа = ЛОЖЬ
		И Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
	УПОРЯДОЧИТЬ ПО
		Наименование
""")

# Устанавливаем значение параметра запроса
текЗапрос.УстановитьПараметр("ВидНоменклатуры", видТовары)

# Выполняем запрос и выводим результат на экран
результат = текЗапрос.Выполнить()
for стр in результат:
	print("Товар: {0}; Артикул: {1}".format(стр.Наименование, стр.Артикул))

# TODO...