Подключение и инициализация
Библиотека "Brom" для .Net Core может быть загружена с официального сайта проекта или установлена через менеджер пакетов следующими командами:
Install-Package Brom -Version 1.0.1-beta08
dotnet add package Brom --version 1.0.1-beta08
paket add Brom --version 1.0.1-beta08
Для создания клиента необходимо вызвать конструктор, передав в него параметры подключения или строку подключения:
dynamic клиент = new БромКлиент(@"
Публикация = http://domainname.ru/publication_name;
Пользователь = username;
Пароль = userpassword
");
НастройкиПодключения настройки = new НастройкиПодключения(new EndpointAddress(@"http://bromdemo.itworks.group/bromdemo"), "bromuser", "brompassword");
dynamic клиент = new БромКлиент(настройки);
dynamic клиент = new БромКлиент(new EndpointAddress(@"http://bromdemo.itworks.group/bromdemo"), "bromuser", "brompassword");
После того как клиент создан, его можно использовать для взаимодействия с приложением 1С без каких либо дополнительных настроек. В следующих разделах описаны методики дополнительной оптимизации взаимодействия клиента и сервера, которые снижают нагрузку на сервер и увеличивают быстродействие клиентского приложения.
Предварительная загрузка метаданных
При взаимодействие с объектами конфигурации клиент автоматически загружает с сервера метаданные используемых объектов по мере необходимости (фрагментарная загрузка метаданных). По этой причине первое обращение к объектам определенного типа сопровождается дополнительными серверными вызовами. Чтобы уменьшить количество таких вызовов, можно заранее загрузить метаданные:
// Загружаем все объекты метаданных единым блоком (не рекомендуется)
клиент.ЗагрузитьМетаданные("*");
// Загружаем все объекты метаданных пакетами по 100 объектов
клиент.ЗагрузитьМетаданные("*", 100);
// Загружаем только некоторые коллеции метаданных пакетами по 100 объектов
клиент.ЗагрузитьМетаданные("Справочники.*, Документы.*", 100);
// или сокращенно
клиент.ЗагрузитьМетаданные("Справочники, Документы", 100);
// Загружаем только конкретные объекты метаданных
клиент.ЗагрузитьМетаданные("Справочники.Номенклатура, Справочники.Контрагенты, Документы.ЗаказКлиента");
Кеширование метаданных
Количество серверных вызовов, необходимых для загрузки метаданных, может быть дополнительно снижено за счет использования механизма кеширования. Для использования данного механизма достаточно создать объект, управляющий кешем, и передать его клиенту:
// Кешируем метаданнные в файловой системе
клиент.Метаданные.Кеш = new ФайловыйКешМетаданных(@"C:\КешМетаданных");
// Кешируем метаданнные в файловой системе
клиент.Метаданные.Кеш = new ФайловыйКешМетаданных(@"C:\КешМетаданных");
// Если необходимо очистить кеш
клиент.Метаданные.Кеш.Очистить();
В библиотеке реализован простейший кеш с использованием файловой системы. Чтобы реализовать кеш с использованием других механизмов (например, с использованием базы данных), достаточно создать собественный класс кеша, реализующий интерфейс "ИКешМетаданных".
Примеры приложений
Ниже представлены примеры простейших консольных приложений с использованием библиотеки. Для запуска данных фрагментов кода создайте консольное приложение .Net Core, подключите библиотеку "Brom" и скопируйте текст, указанный в примерах.
using System;
using ITworks.Brom;
namespace BromTestApp {
class Program {
static void Main(string[] args) {
// Создаем клиент
dynamic клиент = new БромКлиент(@"
Публикация = http://bromdemo.itworks.group/bromdemo;
Пользователь = bromuser;
Пароль = brompassword
");
// Получаем информацию о конфигурации информационной базы
dynamic инфо = клиент.ПолучитьИнформациюОСистеме();
// Выводим полученную информацию на экран
Console.WriteLine("Конфигурация: {0}", инфо.Синоним);
Console.WriteLine("Версия конфигурации: {0}", инфо.Версия);
Console.WriteLine("Версия Бром: {0}", инфо.РасширениеБром.Версия);
// TODO...
}
}
}
using System;
using ITworks.Brom;
using ITworks.Brom.Metadata;
namespace BromTestApp {
class Program {
static void Main(string[] args) {
// Создаем клиент
dynamic клиент = new БромКлиент(@"
Публикация = http://bromdemo.itworks.group/bromdemo;
Пользователь = bromuser;
Пароль = brompassword
");
// Включаем кеширование метаданных
клиент.Метаданные.Кеш = new ФайловыйКешМетаданных(@"C:\КешМетаданных");
// Загружаем все метаданные несколькими пакетами
клиент.ЗагрузитьМетаданные("*", 100);
// Выводим состав метаданных на экран
foreach (var уровень1 in клиент.Метаданные) {
Console.WriteLine(уровень1.Key + ":");
foreach (var уровень2 in уровень1.Value) {
Console.WriteLine(" " + уровень2.Key);
}
}
// TODO...
}
}
}
using System;
using ITworks.Brom;
namespace BromTestApp {
class Program {
static void Main(string[] args) {
// Создаем клиент
dynamic клиент = new БромКлиент(@"
Публикация = http://bromdemo.itworks.group/bromdemo;
Пользователь = bromuser;
Пароль = brompassword
");
// Получаем ссылку на элемент справочника "ВидыНоменклатуры"
dynamic видТовары = клиент.Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товары");
// Создаем запрос
Запрос текЗапрос = клиент.СоздатьЗапрос(@"
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.Наименование КАК Наименование,
Номенклатура.Артикул КАК Артикул
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ЭтоГруппа = ЛОЖЬ
И Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
УПОРЯДОЧИТЬ ПО
Наименование
");
// Устанавливаем значение параметра запроса
текЗапрос.УстановитьПараметр("ВидНоменклатуры", видТовары);
// Выполняем запрос и выводим результат на экран
dynamic результат = текЗапрос.Выполнить();
foreach (dynamic стр in результат) {
Console.WriteLine("Товар: {0}; Артикул: {1}", стр.Наименование, стр.Артикул);
}
// TODO...
}
}
}