Форум программистов, компьютерный форум, киберфорум
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. Показов 44548. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru