Компонент (C#) Visual Studio для подключения к базе 1С Предприятия

06.06.09

Разработка - Разработка внешних компонент

Компонент для Visual Studio позволяет подключиться к базе 1С Предприятия, как в режиме COM-соединения, так в режиме Приложения либо с видимым интерфейсом, либо скрытым.
Прилагается небольшой пример подключения и получения списка справочников.

Скачать файлы

Наименование Файл Версия Размер
-
.1244315087 34,47Kb
489
.1244315087 34,47Kb 489 Скачать
-
.1244315132 51,40Kb
149
.1244315132 51,40Kb 149 Скачать

Свойства компоненты:

Active - bool - при установке в true подключается к базе 1С Предприятия

AppName1Cv8 - string - либо V81.Application либо V81.COMConnector

Database - string - имя базы данных на сервере 1С Предприятия

FilePath - string - каталог базы данных в файловом режиме

Password - string - пароль пользователя 1С Предприятия

Server - string - имя сервера 1С Предприятия

ThisConnect_Is_COM - bool - режим подключения к базе 1С либо V81.Application либо V81.COMConnector

UserName - string - пользователь под которым заходим в базу 1С

Visible1Cv8 - bool - признак показа инерфейса 1С Предприятия в режиме подключения V81.Application

См. также

Медиадисплей. Рекламный информационный монитор для покупателя.

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52105    34    69    

43

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

2400 руб.

12.05.2020    26244    131    99    

83

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    44977    117    64    

60

Внешняя компонента печати PDF (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    35081    104    123    

111

Мастер создания внешних компонент 1С (технология COM) для DELPHI 6/7/8/2005/2006/2007/2008/2010/XE/XE2/XE3

Разработка внешних компонент Платформа 1С v8.3 Платные (руб)

Средство для сверхбыстрой разработки внешних компонент 1С:Предприятия 7.7 и 8 по технологии COM на всех версиях DELPHI, начиная с 6.

2000 руб.

28.03.2013    54000    35    14    

68

QR-код с логотипом компании (обычная и управляемая форма)

Разработка внешних компонент Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Как известно, стремление сделать свою рекламную продукцию запоминающейся и выделяющейся — верный путь к успеху. Сегодня, мы поговорим с вами о том, что можно сделать с обычным черно-белым QR-кодом, чтобы он стал более живым и привлекательным. Если вам не терпится попробовать сделать QR-код с логотипом компании, то эта обработка для вас!

2400 руб.

22.06.2016    30840    4    4    

8

Внешняя компонента 1С и С++. Продолжаем разговор.

Разработка внешних компонент Платформа 1С v8.3 Бесплатно (free)

А давайте запилим 8.3.26 до релиза, или оповещение с сервера...

19.02.2024    4039    starik-2005    28    

52

Внешние компоненты 1С и язык C++

Разработка внешних компонент Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    4781    starik-2005    32    

39
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Душелов 4013 07.06.09 14:05 Сейчас в теме
Я бы еще добавил выбор платформы 7.7, 8.0, 8.1 и 8.2
2. Душелов 4013 07.06.09 14:58 Сейчас в теме
Ну а так же советую взять за основу мой класс для работы с объектами 1С (для 8-ки):

using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Душелов._1C
{
public class Объект1С
{
[MarshalAs(UnmanagedType.IDispatch)] private object текущийОбъект;
public object ТекущийОбъект
{
[return: MarshalAs(UnmanagedType.IDispatch)]
get { return текущийОбъект;}
set { текущийОбъект = value; }
}

#region Init
public Объект1С()
{

}

public Объект1С(object ТекущийОбъект)
{
this.ТекущийОбъект = ТекущийОбъект;
}

~Объект1С()
{
try
{
Clear();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

internal void Clear()
{
if (ТекущийОбъект == null) return;
Marshal.Release(Marshal.GetIDispatchForObject(ТекущийОбъект));
Marshal.ReleaseComObject(ТекущийОбъект);
ТекущийОбъект = null;

GC.Collect();
GC.WaitForPendingFinalizers();
}
#endregion

public string Тип
{
get
{
return ВыполнитьФункцию("Метаданные").ВыполнитьФункцию("ПолноеИмя").ToString();
}
}

public Объект1С ПолучитьПараметр(string НаименованиеПараметра)
{
Object Результат = null;
try
{
Результат = ТекущийОбъект.GetType().InvokeMember(НаименованиеПараметра, BindingFlags.GetProperty, null, ТекущийОбъект, null);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}

return new Объект1С(Результат);
}

public Объект1С ВыполнитьФункцию(string НаименованиеФункции, Object[] Параметры)
{
Object Результат = null;
try
{
Результат = ТекущийОбъект.GetType().InvokeMember(НаименованиеФункции, BindingFlags.InvokeMethod, null, ТекущийОбъект, Параметры);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}

return new Объект1С(Результат);
}

public Объект1С ВыполнитьФункцию(string НаименованиеФункции)
{
Object Результат = null;
try
{
Результат = ТекущийОбъект.GetType().InvokeMember(НаименованиеФункции, BindingFlags.InvokeMethod, null, ТекущийОбъект, null);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}

return new Объект1С(Результат);
}

public void ВыполнитьПроцедуру(string НаименованиеПроцедуры)
{
try
{
ТекущийОбъект.GetType().InvokeMember(НаименованиеПроцедуры, BindingFlags.InvokeMethod, null, ТекущийОбъект, null);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}

public override string ToString()
{
return ТекущийОбъект != null ? ТекущийОбъект.ToString() : "Объект 1С";
}
}
}
3. fishca 1254 07.06.09 20:05 Сейчас в теме
Спасибо за комментарий, учту!
5. Душелов 4013 07.06.09 23:16 Сейчас в теме
(3) Так же можно добавить тест подключения, и дальше получить структуру метаданных...
7. fishca 1254 08.06.09 08:50 Сейчас в теме
(5) не очень понял, что значит тест подключения. В студии когда ставишь активность истина, как раз происходит подключение. Единственное структуру метаданных не выдает :)
4. ValentinV 07.06.09 23:09 Сейчас в теме
По-мужски закончили. ПЛЮС.
6. s_vidyakin 63 08.06.09 01:28 Сейчас в теме
было бы супер сделать компонент DataAdapter1С , чтобы к нему можно было привязывать сетки, DataAware-компоненты... было бы круто!
8. fishca 1254 08.06.09 08:51 Сейчас в теме
(6) что этот компонент должен делать и как к нему можно было бы привязывать сетки, DataAware-компоненты?
9. Душелов 4013 08.06.09 09:21 Сейчас в теме
(8) тоже делать, что и любой датаадаптер ;)
10. fishca 1254 08.06.09 09:32 Сейчас в теме
(9) мне больше непонятно что значит привязывать сетки...
11. s_vidyakin 63 08.06.09 15:35 Сейчас в теме
ну в .Net есть 4 встроенных провайдера - OLE,ODBC,MSSQL,Oracle. Сторонними разработчиками например сделан провайдер для FireBird. Вот и для 1С можно было бы сделать. В идеале - чтоб можно было визуальным мастером создавать ДатаСет и выбирать в него таблицы как они есть в метаданных 1С - "Справочник.Номенклатура" например или сразу несколько документов и справочников.
Плюсы - можно сделать быстрого клиента. Например, я делал на c# (обычным способом через СОМ) форму подбора номенклатуры - в 1С медленно ищется товар среди 10000 позиций когда набираешь код на клавиатуре, а в этом клиенте практически мгновенно. Можно и документ создавать из клиента, но до этого руки не дошли. Можно например сделать параллельную БД (на MSSQL ЕЕ хотя б) и там хранить дополнительные реквизиты (любых объектов), если не хочется нетиповую конфигурацию. Через клиента можно работать с "расширенной" конфигой, а в 1С все "типовое" :) Но это уже полет мысли :)
12. fishca 1254 08.06.09 16:07 Сейчас в теме
(11) может выложишь обработку для примера?
Constantine Grey; +1 Ответить
13. s_vidyakin 63 08.06.09 16:44 Сейчас в теме
она на работе кажется осталась, давно это было... а щас новую некогда писать... через пару дней возможно сделаю..
14. s_vidyakin 63 08.06.09 20:02 Сейчас в теме
а, я нашел все таки:
СОЕДИНЕНИЕ:
v8connector = Type.GetTypeFromProgID("V81.COMConnector");
v8inst = Activator.CreateInstance(v8connector);
object[] arg = new object[] { @"File='" + txtPath.Text + "'; Usr ='" + txtLogin.Text + "';Pwd='" + txtPass.Text + "';" };
// Соединяемся
v8 = v8connector.InvokeMember("Connect", BindingFlag, null, v8inst, arg);

ПРИМЕР ВЫПОЛНЕНИЯ ЗАПРОСА:
// Создаем запрос
object Q = v8inst.GetType().InvokeMember("NewObject", BindingFlag, null, v8, new object[] { "Запрос" });
// Присваиваем свойству ТЕКСТ текст запроса
SetObjectProperty(Q, "Текст",txtQuery.Text);
// Выполняем!
object QResult = DoObjectMethod(Q, "Выполнить", null);
// Достаем объект "Колонки" и их число
object Cols = GetObjectProperty(QResult, "Колонки");
int NumCol = (int)DoObjectMethod(Cols, "Количество", null);

ОБЕРТКА ДЛЯ ПОЛУЧЕНИЯ/УСТАНОВКИ СВОЙСТВ и ВЫПОЛНЕНИЯ МЕТОДОВ 1С:
// Функция чтения свойства
public object GetObjectProperty(object refObject, string propertyName)
{
return v8inst.GetType().InvokeMember(propertyName, BindingFlags.GetProperty, null, refObject, null);
}
// Функция установки свойства
public object SetObjectProperty(object refObject, string propertyName, object value)
{
object[] arg = new object[] { value };
return v8inst.GetType().InvokeMember(propertyName, BindingFlags.SetProperty, null, refObject, arg);
}
// Функция выполнения метода
public object DoObjectMethod(object refObject, string methodName, object[] args)
{
return v8inst.GetType().InvokeMember(methodName, BindingFlag, null, refObject, args);
}

В принципе этого хватит чтоб написать любое взаимодействующее с 1С приложение. И без всяких маршаллингов :)
15. Душелов 4013 08.06.09 21:10 Сейчас в теме
(14) См. (2)

Маршалинг нужен, как я столкнулся, в случае с 7-кой, когда она не отрабатывала, как положено ряд объектов, типа булево, к примеру, или Null.
17. fishca 1254 08.06.09 22:25 Сейчас в теме
(14) у меня в компоненте так и сделано :)
В примере с получением справочников как раз вызывается InvokeMember(propertyName, BindingFlags.GetProperty...);
16. Душелов 4013 08.06.09 21:11 Сейчас в теме
+15 и не надо забывать про очистку памяти, иначе 1С-ка так и будет болтаться в памяти и жрать ресурсы.
18. oleo 08.09.09 11:56 Сейчас в теме
2badboychik: а для непримитивных значений реквизитов (например ссылка на запись в справочнике) public object SetObjectProperty работает?

19. oleo 08.09.09 11:59 Сейчас в теме
2dushelov: я прошу прощение, а где в вашем примере метод аналогичный SetObjectProperty? Может я чего просмотрел? И если не сложно, такой же вопрос как в п18 - работает не работает?
20. Душелов 4013 08.09.09 13:21 Сейчас в теме
(19) Функция, аналогичная "ПолучитьПараметр", флаг меняется с GetProperty на SetProperty
21. oleo 08.09.09 14:13 Сейчас в теме
(20) Спасибо за ответ! Для присваивания в качестве значения поля ссылки на другой объект 1С все проходит нормально?
22. Душелов 4013 08.09.09 15:02 Сейчас в теме
23. Lemoi 12.03.10 10:41 Сейчас в теме
Кто-нибудь знает, можно ли подключившись из .NET к 1С 8.1 по COM вызвать оператор "Выполнить" с текстом выполняемых действий? И как это сделать?
24. Душелов 4013 12.03.10 10:49 Сейчас в теме
(23) Никак.
Только вызвать функцию общего модуля или модуля внешнего соединения, где используется эта команда.
25. Lemoi 12.03.10 11:28 Сейчас в теме
26. Katavary 08.04.10 09:39 Сейчас в теме
Не понятно как можно получить например цены товара из номенклатуры, или изображение товара. Возможно ли это?
Если кто знает подскажите пожалуйста. а еще лучше примерчик...
27. Katavary 08.04.10 11:25 Сейчас в теме
вызываю такой код:

Object Directories = GetObjectProperty(COMobj, "Справочники");
Object Nomenclature = GetObjectProperty(Directories, "Номенклатура");
Object docSelection_ = InvokeObjectMethod("Выбрать", Nomenclature);
InvokeObjectMethod("Следующий", docSelection_)

Object name = GetObjectProperty(docSelection_, "Наименование");
Object obj = v81.InvokeMember("ОсновноеИзображение", BindingFlags.GetProperty, Type.DefaultBinder, docSelection_, new Object[] { });

С переменной name вроде понятно, это строка, наименовани. А как теперь работать с переменной obj?
28. slavat56 09.06.17 15:05 Сейчас в теме
Нужно разработать на VS утилиту, которая должна генерить документы для 1С (входящие и исходящие платежные поручения). Данные берутся из внешней SQL базы (это не проблема). Вопрос - экспорт документов в 1С. Готов заплатить денежку.
29. SGordon1 09.06.17 15:15 Сейчас в теме
(28) А не прощще из 1с подключится к внешней SQL базе и угенерится там документов?
31. ImHunter 312 11.06.17 11:16 Сейчас в теме
(28) Если обменов не предусмотрено - то вроде не особо и сложно. Пишите в личку как что надумаете.
30. slavat56 10.06.17 17:12 Сейчас в теме
Не проще... Хотелось бы избежать изменения конфигурации в 1С, так как это головная боль при обновлениях.
Оставьте свое сообщение