Подключение и инициализация
Библиотека "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...