Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/203: Рейтинг темы: голосов - 203, средняя оценка - 4.81
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842

Управление 1С: 8,2 из приложения, написанного на C#

01.09.2010, 15:49. Показов 43748. Ответов 36

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане!

Собственно, вопрос в названии темы. Возникла необходимость написания приложения, которое будет выполнять следующие действия:
  • Подключаться к платформе 1С: 8,2;
  • Забирать оттуда, например, остатки товаров на складе (пример);
  • Выгружать полученные данные в Word;

Это было задание. Сам вопрос - как мне подключится и управлять 1С? Порылся по форуму - ничего найти не получилось. Интернет мне тоже дает только, как написать компонент для 1С на c#. Вот и обращаюсь - может у кого есть какие наработки по данному вопросу, или подскажет ресурсы, где про это можно почитать.
Ну или, ставя вопрос немного по другому, каким образом происходит взаимодействие с 1С вообще?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2010, 15:49
Ответы с готовыми решениями:

Запуск приложения написанного в VS 2013 на машине с FW 3.5
Написал программу vb.net 2013, реально ли ее запустить на fraemwork 3.5 ?

Нужен рекомпилятор приложения, написанного на VB 6.0 в исходный код.
Помогите: нужен рекомпилятор приложения, написанного на VB 6.0 в исходный код. Исходник этого приложения (состоит всего из одной формы)...

необходимые библиотеки для запуска написанного приложения
собственно что нужно для запуска приложений написанных и скомпилированных ? net framework там что еще ? какие-то конкретные версии ? или...

36
 Аватар для temkiiiiin
28 / 15 / 4
Регистрация: 30.09.2012
Сообщений: 43
25.06.2014, 09:40
Студворк — интернет-сервис помощи студентам
Ошибка на строке
C#
1
COMConnector connect = new COMConnector();
dll зарегистрировал.
Миниатюры
Управление 1С: 8,2 из приложения, написанного на C#  
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
25.06.2014, 10:03
temkiiiiin, 1С на компьютере стоит? Или вы просто dll на компьютер скопировали и подцепили к проекту?
0
 Аватар для temkiiiiin
28 / 15 / 4
Регистрация: 30.09.2012
Сообщений: 43
25.06.2014, 10:10
Стоит конечно. Причем лицензия
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
25.06.2014, 12:47
temkiiiiin, Вот прямо на этой машине, где вы запускаете проект, и прямо 1С 8.3? При всем этом COM выдает исключение, что не может найти объект V83.ComConnector в вашей системе ... В таком случае переставьте 1С 8.3, на всякий случай зайдите в выбор утсанавливаемых компонентов и выберите (если не выбрано) установку компонента ComConnector.
0
 Аватар для INF1NUM
20 / 20 / 2
Регистрация: 27.09.2011
Сообщений: 155
26.06.2014, 11:02
Решил вопрос отключения сеанса текущего СОМ-соединения следующим костылем:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
        V83.COMConnector com1s = new V83.COMConnector();
 
        string user = "Администратор";
        string pas = "***";
        string server = "SERVER1C";
        string db = "BPCORP2013OLD";
 
        private void GetBaseInfo()
        {
            string connectionStringClientServerDB = "Srvr='" + server + "';Ref='" + db + "';Usr='" + user + "';Pwd='" + pas + "';";
            dynamic infoBase = com1s.Connect(connectionStringClientServerDB);
            
            string recomendVersion = infoBase.КонтрольВерсииПлатформы.РекомендуемаяВерсияПлатформы();
            string configurationVersion = infoBase.Константы.РТРС_ВерсияКонфигурации.Получить();
            bool isConfigurationModify = infoBase.КонфигурацияИзменена();
 
            label1.Text = "Рекомендуемая версия клиента: " + recomendVersion;
            label2.Text = "Версия конфигурации ИБ: " + configurationVersion;
            label3.Text = "Доступно обновление конфигурации: " + isConfigurationModify;
 
            int currentSession = infoBase.НомерСеансаИнформационнойБазы();
 
            Discconnect(currentSession);
        }
 
        private void Discconnect(int sessionID)
        {
            string clasterName = "Локальный кластер";
 
            V83.IServerAgentConnection agent = com1s.ConnectAgent(server);
            Array clasters = agent.GetClusters();
            
            foreach(V83.IClusterInfo clasterInfo in clasters)
            {
                if (String.Equals(clasterInfo.HostName, server) && String.Equals(clasterInfo.ClusterName, clasterName))
                {
                    agent.Authenticate(clasterInfo, user, pas); // здесь указывается администратор кластера, а не информационной базы. в моём случае они совпадают.
                    Array sessions = agent.GetSessions(clasterInfo);
                    V83.IInfoBaseShort infoBase;
                    foreach (V83.ISessionInfo session in sessions)
                    {
                        infoBase = session.infoBase;
                        if (String.Equals(infoBase.Name, db) && session.SessionID == sessionID)
                        {
                            agent.TerminateSession(clasterInfo, session);
                        }
                    }
                }
            }
        }
Единственный момент: пришлось создать администратора кластера, т.к. без администраторов сервер не хотел пускать, выдавая ошибку аутентификации.
0
0 / 0 / 0
Регистрация: 18.12.2014
Сообщений: 1
18.12.2014, 18:26
Здесь есть интересная информация по освобождению ссылок на COM-объекты.

Я проблему решил так:
C#
1
2
    Marshal.FinalReleaseComObject((object)result); //Для каждого созданного COM-объекта, в данном случае объект один - result
    System.GC.Collect();
0
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 4
17.02.2015, 13:24
Добрый день! Когда я выбираю базу данных 1С и нажимаю на кнопку "Подключить" возникает ошибка: "Ошибка подключения! В результате вызова компонента COM возвращена ошибка в формате HRESULT E_FAIL".
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
17.02.2015, 13:55
Tara2015, Вас с этим можно поздравить? Или с какой целью вы это сообщение написали? Вопрос не обозначен. Если у вас не запускается 1С из вашего приложения, то запустите ее без приложения и посмотрите, в чем ошибка. На всякий случай уточню, запускать нужно 1С, которая установлена на том же компьютере, что и запускаемое приложение, то есть, не в терминале.
0
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 4
17.02.2015, 14:03
Спасибо, за ответ. У меня и приложение и 1С стоит на одном компьютере. Искала информацию по этой ошибке в интернете, но к сожалению ответа, который мне помог не нашла. Может, кто-нибудь сталкивался с этой ошибкой? И, если да, то не могли бы помочь?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
17.02.2015, 14:39
Tara2015, Это исключение ком-соединения, а не 1С. У меня такое появляется и когда сервер обновился, а клиент старой версии, и когда лицензии не хватает, и когда просто не стоит 1С на компьютере. Когда вы пытаетесь запустить 1С без приложения, то какая ошибка появляется? Или подключение проходит успешно?
0
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 4
17.02.2015, 14:46
kodv, Когда я пытаюсь подключиться к 1С без приложения, подключение проходит успешно.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
17.02.2015, 14:54
Tara2015, Раньше приложение работало нормально? Оно ваше, в смысле, исходный код есть?
0
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 4
19.02.2015, 11:48
Этот код я брала из этой темы (выложил kirill29), хотела посмотреть как работает, а потом подстроить под себя, но не получается.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
19.02.2015, 12:34
Tara2015, В таком случае упростите сначала код до следующего и посмотрите, будет ли появляться ошибка при попытке соединения с 1С:
C#
1
2
3
4
5
6
7
8
try
{
    dynamic app1C = (new V82.COMConnector()).Connect("Ваша строка подключения");
}
catch(Exception E)
{
    MessageBox.Show(E.Message);
}
0
0 / 0 / 0
Регистрация: 31.08.2016
Сообщений: 9
01.09.2016, 12:20
kirill29, доброго времени!

я попробовал разобрать проект что ты выложил.

ругается на строку:
C#
1
COMConnectorClass connector = new COMConnectorClass();
Необработанное исключение типа "System.Runtime.InteropServices.COMExcep tion" в MyProject.exe

Дополнительные сведения: Сбой при получении производства объектов класса COM для компонента с CLSID {2B0C1632-A199-4350-AA2D-2AEE3D2D573A} в результате следующей ошибки: 80040154.
0
4 / 4 / 0
Регистрация: 18.10.2011
Сообщений: 49
12.12.2016, 14:39
решение ГЕНИАЛЬНО простое. компилируйте проект на x86.
в данный момент вы пытаетесь подключить компоненту х32. система явно стоит х64. класс в регистре находится в ветке wow32. т.е. не там, где система ищет компоненту.
0
0 / 0 / 0
Регистрация: 31.08.2016
Сообщений: 9
20.12.2016, 14:14
ок, спасибо. буду пробовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.12.2016, 14:14
Помогаю со студенческими работами здесь

Какова вероятность взлома web приложения, написанного на .NET Core c применением Identity?
Делаю свой проект с применением identity и соблюдаю все рекомендации по безопасности, рекомендуемые Microsoft.Каков шанс взлома такого...

Запуск приложения, написанного для Windows 10, в Windows 8
Привет.Есть такое приложение PS4 Remote Play. Вместо того что бы четко написать "данная программа работает только на вин10"...

Запуск приложения, написанного для Windows 8, в Windows 7
Привет. Есть один софт-RemotePlay PS4 . Он работает только на ОС не ниже Win8. А у меня Win7. Восьмёрка не ставиться из-за того что её не...

При создании дистрибутива приложения (написанного на VB) возникает ошибка: - Unexpected error number 80010108 has occurred : Automation error.
Уважаемые эксперты VB-ка , помогите разрешить следующую проблему: При создании дистрибутива приложения (написанного на VB) возникает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru