Компонент (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

См. также

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

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

1500 руб.

17.09.2018    37376    116    128    

117

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

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

3600 руб.

02.09.2010    78029    73    280    

191

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

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

3000 руб.

12.05.2020    29401    139    100    

92

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

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

2400 руб.

04.05.2018    47878    125    66    

68

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    2943    bayselonarrend    14    

50

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

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

04.12.2024    5792    kovalevdmv    26    

78

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

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

2400 руб.

25.06.2024    1402    3    4    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 1260 07.06.09 20:05 Сейчас в теме
Спасибо за комментарий, учту!
5. Душелов 4021 07.06.09 23:16 Сейчас в теме
(3) Так же можно добавить тест подключения, и дальше получить структуру метаданных...
7. fishca 1260 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 1260 08.06.09 08:51 Сейчас в теме
(6) что этот компонент должен делать и как к нему можно было бы привязывать сетки, DataAware-компоненты?
9. Душелов 4021 08.06.09 09:21 Сейчас в теме
(8) тоже делать, что и любой датаадаптер ;)
10. fishca 1260 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 1260 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 1260 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 334 11.06.17 11:16 Сейчас в теме
(28) Если обменов не предусмотрено - то вроде не особо и сложно. Пишите в личку как что надумаете.
30. slavat56 10.06.17 17:12 Сейчас в теме
Не проще... Хотелось бы избежать изменения конфигурации в 1С, так как это головная боль при обновлениях.
Оставьте свое сообщение