C# + 1C. Урок 2. Обращение к 1С из C#

27.06.13

Разработка - Языки и среды

В рамках этого урока мы изучим интеграцию 1С языком программирования C# на примере обращения к функционалу 1С из программ на C#

C# + 1C. Урок 2. Обращение к 1С из C#

На прошлом уроке мы из 1С обращались к программе на C#.  Сегодня сделаем наоборот: из C# будем обращаться в программу 1С. Для этого нам нужно подключить к проекту на C# COM-объект 1С (через "Проекты" -> "Добавить ссылку"):

 

C# + 1C. Урок 2. Обращение к 1С из C#

 

Соответствующую библиотеку мы добавим с закладки COM:

 

C# + 1C. Урок 2. Обращение к 1С из C#

 

Ну и все, теперь мы можем юзать 1С из программы на C#. Вот простейший пример, создание элемента справочника "номенклатура":

        private void button1_Click(object sender, EventArgs e)

        {

            string user = "Админ";

            string pas = "";

            string file = "C:\\1cv82\\Личные базы\\ДБ";

            dynamic result;

            dynamic refer;

            V82.COMConnector com1s = new V82.COMConnector();

 

            com1s.PoolCapacity = 10;

            com1s.PoolTimeout = 60;

            com1s.MaxConnections = 2;

            result = com1s.Connect("File='" + file + "';Usr='" + user + "';pwd='" + pas + "';");

            refer = result.Справочники.Номенклатура.СоздатьЭлемент();

            refer.Наименование = "Создано из C#";

            refer.Записать();

        }

 

После запуска этой программы в 1С у нас добавится элемент справочника "Номенклатура":

 

C# + 1C. Урок 2. Обращение к 1С из C#

 

 

Источник: http://easyprog.ru/index.php?option=com_content&task=view&id=1453&Itemid=48

См. также

Языки и среды Программист Платформа 1С v8.3 Бесплатно (free)

Будем писать свои скрипты на питоне и запускать их на 1С.

15.04.2024    4035    YA_418728146    13    

62

Мобильная разработка Языки и среды 1С:Элемент Программист Бесплатно (free)

Flutter может быть использован с 1С:Предприятием для разработки кроссплатформенных мобильных приложений, обеспечивая единый интерфейс и функциональность на устройствах под управлением iOS и Android. Это позволяет создавать приложения с высокой производительностью благодаря использованию собственного движка рендеринга Flutter. Интеграция Flutter с 1С:Предприятием позволяет создавать мобильные приложения любого уровня сложности, интегрировать их в корпоративные информационные системы, а также реализовывать бизнес-логику

19.03.2024    18321    ROk_dev    74    

43

Языки и среды Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Существует множество языков программирования, и каждый имеет свои особенности по работе с типами данных. Слабые, явные, динамические и другие... Но кто же здесь 1С и почему с приходом "строгой" типизации EDT 1С-программистам стоит задуматься над изменением своих привычек.

16.01.2024    7332    SeiOkami    25    

61

Языки и среды Программист Бесплатно (free)

Пример небольшого приложения, с которого можно начать изучать язык программирования Dart.

08.08.2023    4206    acvatoris    6    

15

Языки и среды Программист Платформа 1С v8.3 Россия Бесплатно (free)

Написание статического анализатора для 1С традиционным способом на Си.

30.06.2023    3496    prohorp    15    

12

Языки и среды Программист Абонемент ($m)

Поставили нам задачу - вынести на отдельный сервер функционал получения заказов от клиентов по электронной почте, парсинг полученных XLS в приемлемый вид и трансформация заказов в красивый JSON, понятный нашей учетной системе на 1С. Всю эту красоту желательно запустить в отдельном докер - контейнере, по возможности не тратя лицензии, поэтому отдельно стоящую конфигурацию на БСП отвергаем сразу. Можно было бы собрать всё на Apache Airflow или Apache NiFi, но решили попробовать реализовать всю логику без Open Source, будем делать свой ETL, с Исполнителем, который в версии 3.0 научился взаимодействовать с электронной почтой по IMAP. Начнем с середины - сначала напишем скрипты, а потом соберем их в рабочую конструкцию

1 стартмани

01.06.2023    2314    0    kembrik    2    

7

Языки и среды Программист Платформа 1С v8.3 Бесплатно (free)

При работе с 1С ORM (object relation mapping) все время преследует ощущение постоянного создания монолитного приложения — один раз привязался к какой либо сущности (например, справочник Контрагенты), и весь код заполнен ссылками на эту конкретную реализацию. Можно ли независимо разрабатывать в ORM совместимые между собой справочник «Контрагентов» и использующий его документ «Платежное поручение», но при этом избежать жестких зависимостей? Спасут ли нас микросервисы? Пример на аннотациях Java демонстрирует, как это возможно делать.

13.03.2023    1306    1CUnlimited    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. serg__k 79 12.03.14 00:53 Сейчас в теме
Просьба помочь, на строке с dynamic возникает ошибка:
Не удалось найти имя типа или пространства имен "dynamic" (пропущена директива using или ссылка на сборку?)
Как можно исправить ошибку?
6. cepera1575 29.10.15 07:50 Сейчас в теме
(1) serg__k, тип "dynamic" появился в VS 2010. В более ранних версиях его нету.
2. oleg_km 04.06.14 09:00 Сейчас в теме
dynamic появился вроде в NET 4.0
3. evrey96 01.02.15 18:46 Сейчас в теме
Это скрипт работает на ASP.NET если да то как?
4. bator.koreev 10.07.15 17:58 Сейчас в теме
При обращении к платформе 8.3 необходимо в настройках проекта поставить 32 разрядную систему))
5. nickpugachev 10.07.15 18:32 Сейчас в теме
(4) bator.koreev, при обращении к 8.3 не надо ломиться в COM :)
да и сам смысл ломиться в COM какой, если есть более приятные и для .Net и для 1С способы - Веб-сервисы/HTTP сервисы. Только если надо ввалить кучу данных. Но и в этом случае (да простит меня 1С :)) проще использовать более родные способы для .Net из пространства имен System.Data или даже SSIS
7. ixilimuse 193 14.08.17 07:47 Сейчас в теме
Автору большое спасибо за вполне себе грамотную и подробную статью. По существу все супер.

Но у меня возникли вопросы на которые сейчас не знаю ответа. В процессе поиска. Поиски чуть подзатянулись и поэтому хочу спросить, может автор статьи сталкивался уже? Или может кто ещё подскажет?

В общем, создаю я в C# комОбъект. Вижу через него справочники, регистры и т.п. Даже могу вызвать метод ПолучитьСтруктуруХраненияБазыДанных(). Хоть и не могу потом на стороне C# разобрать результат по частям. Но это не важно.

Написал пару методов для себя на стороне 1С.
Первый принимает в качестве параметра название объекта 1С. Параметр строковый. Возвращает тоже строку, только уже с описанием структуры хранения данного объекта. Второй метод принимает дату, возвращает число 1 или 0.

Проблема: ни тот, ни другой метод я не могу использовать на стороне C#. Получаю ошибку System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Тоже самое получаю и при вызове ТекущаяДата().

У меня конечная цель была - узнать статус одной долгой процедуры, если статус плохой - развернуть свежий бэкап базы на тестовом сервере и параллельно запустить одну обработку на тестовом сервере.
Опять же начинаю сомневаться в том - смогу ли я корректно эту обработку запустить? Там в процедуру надо передать ряд параметров у которых типы: Строка, дата, булево...

Буду благодарен за любое направление в нужную сторону, где копать(искать).
8. ixilimuse 193 14.08.17 09:48 Сейчас в теме
(7) upd: Уже разобрался что для вызова методов через COM соединение существует Модуль внешнего соединения. Действительно - функции объявленные в нем - благополучно вызываются из C#. И даже параметры передаются корректно.
Но! Стоит мне вызвать в функции, объявленной в модуле внешнего соединения, функцию из другого, общего модуля - возникает та же самая ошибка. Хотя в общем модуле тоже стоит признак "Внешнее соединение". Уже думал проблема с ролями или что-то ещё. Возвращаю из общего модуля без всяких обработок просто строку "Проверка дебаг" - ошибка осталась. Возврат этой же строки непосредственно из модуля внешнего соединения - проходит корректно. Продолжаю поиски
9. ixilimuse 193 14.08.17 12:03 Сейчас в теме
(7) upd1: Разобрался окончательно. Всем спасибо! Первым делом надо было отлаживать всю схему из 1С, а потом уже код переносить в C#.

В 1С было видно что за ошибки возникали. И сразу все пофиксил и все заработало.
А именно: в общем модуле были ссылки на общий модуль который не имел флага "Внешнее соединение", в общем модуле были команды которые доступны только на клиенте, не обрамленные проверкой что бы выполнять только на клиенте. Плюс жесткий косяк с моей стороны - назвал методы в модуле внешнего соединения и в общем модуле - одинаково.
После устранения описанных ошибок - все заработало.
10. v.bachinsky 02.02.18 14:50 Сейчас в теме
Здравствуйте. Большая просьба к знатокам разъяснить момент. Могу ли я асинхронно дергать функции из модуля внешнего соединения, в контексте выполнения одного экземпляра COM, или нужно дожидаться завершения выполнения предыдущей функции? 1С однопоточна же. Это скорее всего относится и к COM-объекту?
11. FoxyG 22.05.23 22:08 Сейчас в теме
Доброго дня/вечера может кто сталкивался. Нужно получить список всех запущенных процессов.
Открываю соединение через com, а как получить список всех запущенных процессов и вывести все параметры, такие как захвачено СУБД и т.д, пока не разобрался. За ранее благодарю.
Оставьте свое сообщение