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

06.06.09

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
-
.1244315087 34,47Kb
489
489 Скачать (1 SM) Купить за 1 850 руб.
-
.1244315132 51,40Kb
149
149 Скачать (1 SM) Купить за 1 850 руб.

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

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 и маркетинг Управленческий учет Платные (руб)

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

18000 руб.

30.05.2017    53928    9    69    

46

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

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

2400 руб.

04.05.2018    47146    124    66    

67

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

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1069    3    4    

3

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

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3542    3    0    

5

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

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    18344    18    33    

22

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

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77456    72    257    

191

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

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

3000 руб.

12.05.2020    28548    138    100    

91

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

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    4495    kovalevdmv    26    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Душелов 4021 07.06.09 14:05 Сейчас в теме
Я бы еще добавил выбор платформы 7.7, 8.0, 8.1 и 8.2
2. Душелов 4021 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 1259 07.06.09 20:05 Сейчас в теме
Спасибо за комментарий, учту!
5. Душелов 4021 07.06.09 23:16 Сейчас в теме
(3) Так же можно добавить тест подключения, и дальше получить структуру метаданных...
7. fishca 1259 08.06.09 08:50 Сейчас в теме
(5) не очень понял, что значит тест подключения. В студии когда ставишь активность истина, как раз происходит подключение. Единственное структуру метаданных не выдает :)
4. ValentinV 07.06.09 23:09 Сейчас в теме
По-мужски закончили. ПЛЮС.
6. s_vidyakin 68 08.06.09 01:28 Сейчас в теме
было бы супер сделать компонент DataAdapter1С , чтобы к нему можно было привязывать сетки, DataAware-компоненты... было бы круто!
8. fishca 1259 08.06.09 08:51 Сейчас в теме
(6) что этот компонент должен делать и как к нему можно было бы привязывать сетки, DataAware-компоненты?
9. Душелов 4021 08.06.09 09:21 Сейчас в теме
(8) тоже делать, что и любой датаадаптер ;)
10. fishca 1259 08.06.09 09:32 Сейчас в теме
(9) мне больше непонятно что значит привязывать сетки...
11. s_vidyakin 68 08.06.09 15:35 Сейчас в теме
ну в .Net есть 4 встроенных провайдера - OLE,ODBC,MSSQL,Oracle. Сторонними разработчиками например сделан провайдер для FireBird. Вот и для 1С можно было бы сделать. В идеале - чтоб можно было визуальным мастером создавать ДатаСет и выбирать в него таблицы как они есть в метаданных 1С - "Справочник.Номенклатура" например или сразу несколько документов и справочников.
Плюсы - можно сделать быстрого клиента. Например, я делал на c# (обычным способом через СОМ) форму подбора номенклатуры - в 1С медленно ищется товар среди 10000 позиций когда набираешь код на клавиатуре, а в этом клиенте практически мгновенно. Можно и документ создавать из клиента, но до этого руки не дошли. Можно например сделать параллельную БД (на MSSQL ЕЕ хотя б) и там хранить дополнительные реквизиты (любых объектов), если не хочется нетиповую конфигурацию. Через клиента можно работать с "расширенной" конфигой, а в 1С все "типовое" :) Но это уже полет мысли :)
12. fishca 1259 08.06.09 16:07 Сейчас в теме
(11) может выложишь обработку для примера?
Constantine Grey; +1 Ответить
13. s_vidyakin 68 08.06.09 16:44 Сейчас в теме
она на работе кажется осталась, давно это было... а щас новую некогда писать... через пару дней возможно сделаю..
14. s_vidyakin 68 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. Душелов 4021 08.06.09 21:10 Сейчас в теме
(14) См. (2)

Маршалинг нужен, как я столкнулся, в случае с 7-кой, когда она не отрабатывала, как положено ряд объектов, типа булево, к примеру, или Null.
17. fishca 1259 08.06.09 22:25 Сейчас в теме
(14) у меня в компоненте так и сделано :)
В примере с получением справочников как раз вызывается InvokeMember(propertyName, BindingFlags.GetProperty...);
16. Душелов 4021 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. Душелов 4021 08.09.09 13:21 Сейчас в теме
(19) Функция, аналогичная "ПолучитьПараметр", флаг меняется с GetProperty на SetProperty
21. oleo 08.09.09 14:13 Сейчас в теме
(20) Спасибо за ответ! Для присваивания в качестве значения поля ссылки на другой объект 1С все проходит нормально?
22. Душелов 4021 08.09.09 15:02 Сейчас в теме
23. Lemoi 12.03.10 10:41 Сейчас в теме
Кто-нибудь знает, можно ли подключившись из .NET к 1С 8.1 по COM вызвать оператор "Выполнить" с текстом выполняемых действий? И как это сделать?
24. Душелов 4021 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 329 11.06.17 11:16 Сейчас в теме
(28) Если обменов не предусмотрено - то вроде не особо и сложно. Пишите в личку как что надумаете.
30. slavat56 10.06.17 17:12 Сейчас в теме
Не проще... Хотелось бы избежать изменения конфигурации в 1С, так как это головная боль при обновлениях.
Оставьте свое сообщение