Оглавление


1. Найти библиотеку comcntr.dll
2. Зарегистрировать библиотеку comcntr.dll
3. Добавить ссылку на библиотеку 1CV83 COM Connector
4. Добавить директиву using V83;
5. Написать метод для подключения к 1С
6. Прописать строку подключения к 1С
7. Добавить пользователя в 1С
8. Открыть порты
9. Предпочтительна 32-разрядная версия	


1. Найти библиотеку comcntr.dll

При установке 1С эта библиотека попадает в папку C:\Program Files\1cv8\8.3.15.1489\bin


2. Зарегистрировать библиотеку comcntr.dll

Для этого надо запустить cmd под админской учеткой, перейти в папку C:\Program Files\1cv8\8.3.15.1489\bin и выполнить команду regsvr32 comcntr.dll

C:\Program Files\1cv8\8.3.15.1489\bin>regsvr32 comcntr.dll


3. Добавить ссылку на библиотеку 1CV83 COM Connector Type Library


4. Добавить директиву using V83;

Класс COMConnector объявлен в пространстве имен V83, поэтому в верхней части файла с кодом на C# пишем using V83;
На сегодня V83 это последняя версия и идет соответственно в поставке с 1С.8.3

5. Написать класс и метод для подключения к 1С

Например такой, который можно вызывать асинхронно

				
					public class Com1C
{
	public static event Action<string> OnConnect;
	public static event Action<string> Progress;
	public static event Action<string> OnError;

	public static bool Connecting { get; private set; }
	public static bool IsConnected { get; private set; }

	private static string _connectionString;
	private static COMConnector _con;
	private static dynamic _база1С;
	private static string _error = "";

	public static string LastError
	{
		get { return _error; }
		set { _error = value; if (_error.Length > 0) { OnError?.Invoke(_error); } }
	}

	public static void ConnectTo1C(string connectionString)
	{
		_connectionString = connectionString;
		new Thread(Connect).Start();
	}
	private static void Connect()
	{
		if (IsConnected) return;
		try
		{
			Connecting = true;
			_con = new COMConnector();
			_база1С = _con.Connect(_connectionString);
			IsConnected = true;
			OnConnect?.Invoke("Соединение с сервером 1С установлено.");
		}
		catch (Exception ex)
		{
			IsConnected = false;
			OnConnect?.Invoke("Ошибка соединения с сервером 1С.");
			LastError = ex.Message;
		}
		finally
		{
			Connecting = false;
		}
	}
}

				
			

 

6. Прописать строку подключения к 1С

Правильная строка подключения к серверной версии 1С может быть, например, такой

ConnectionString = "srv='PROGER';ref='Sales';usr='Proger';pwd='12345'"
ConnectionString = "File=\"D:\\Sales\";Usr='mobile';Pwd='12345'"


7. Добавить пользователя в 1С

Что бы строка подключения из п.6 работала, надо, через Конфигуратор 1С, создать пользователя Proger и дать ему права Администратор системы и Полные права.


8. Открыть порты

Для подключения к серверу 1С с другого сервера надо открыть доступ по портам 1541 и 1560. Иногда возникает ситуация, когда этих портов недостаточно, надо открыть еще диапазон 1560-1591.


9. Предпочтительна 32-разрядная версия

В свойствах проекта на C# надо убрать галочку – «Предпочтительна 32- разрядная версия».
Без этого происходит ошибка при подключении.

в VS 2022

Иначе будет ошибка:

Retrieving the COM class factory for component with CLSID {181E893D-73A4-4722-B61D-D604B3D67D47} failed due to the following error: 80040154 Класс не зарегистрирован (0x80040154 (REGDB_E_CLASSNOTREG)).


 

10. Возможные ошибки

Что нужно для работы с данными 1С из C#?
Tagged on:     

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.