Подключение и инициализация
Библиотека "Brom" для .Net Core может быть загружена с официального сайта проекта или установлена через менеджер пакетов следующими командами:
Install-Package Brom -Version 1.0.1-beta08dotnet add package Brom --version 1.0.1-beta08paket 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...
		}
	}
}