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

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