powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Помогите разобраться, ADODB.Connection и V77.Application
12 сообщений из 12, страница 1 из 1
Помогите разобраться, ADODB.Connection и V77.Application
    #37929272
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, профи. Понимаю, что тема уже много раз поднималась, но я так и не смог понять и выбрать более удобное, быстрое и надежное средство соединения.
Задача стоит в том, что мне нужно из рабочей базы 1с на dbf вытаскивать справочник контрагентов, справочник сотрудников и список договоров (не штатный, а есть приобретенный модуль респект управление договорами, вот именно из него) в собственную программу. Программа представляет собой планировщик для сотрудников, т.е. в ней создаются записи со ссылками на ID Контрагента, договор и сотрудника. Данные хранятся уже в отдельной sql базе. Но это описание. Сама проблема заключается в выборе способа подключения к базе 1с
Попробовал 2 варианта
1 через V77.Application
Код: vbnet
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.
  Dim M(10000, 1)
        Dim X As Integer
        Dim Y As Integer
        Dim ItmX As ListViewItem

        Dim cntr As Object = CreateObject("V77.Application")
        Dim trd As Short = cntr.RMTrade
        Dim Res As Object = cntr.Initialize(trd, "/d c:\1CBases\ShortBase\ /nАдминистратор /p", "NO_SPLASH_SHOW")
        Dim sotrudnik = cntr.EvalExpr("СоздатьОбъект(""Справочник.Контрагенты"")")
        sotrudnik.ВыбратьЭлементы()
        ListView1.Clear()
        ListView1.Columns.Add("1", 200, HorizontalAlignment.Left)
        ListView1.Columns.Add("2", 200, HorizontalAlignment.Left)
        X = 0
        While sotrudnik.ПолучитьЭлемент > 0
            If sotrudnik.ЭтоГруппа = 0 And sotrudnik.ПометкаУдаления = 0 Then
                If sotrudnik.Родитель.Наименование = "заказчики" Then
                    M(X, 0) = sotrudnik.Наименование
                    M(X, 1) = sotrudnik.ПолнНаименование
                    X = X + 1
                End If
            End If
        End While
        For Y = 0 To X
            ItmX = ListView1.Items.Add("" & M(Y, 0))
            ItmX.SubItems.Add("" & M(Y, 1))
        Next


2 через ADODB.Connection
Код: vbnet
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.
 Dim M(0, 0)
        Dim MFullName()
        Dim X As Integer
        Dim Y As Integer
        Dim ItmX As ListViewItem

        Dim DBConn As Object = CreateObject("ADODB.Connection")
        Dim adoRs As Object = CreateObject("ADODB.Recordset")
        Dim adoRs1 As Object = CreateObject("ADODB.Recordset")
        Dim PathBase As String = "c:\1CBases\ShortBase\"

        DBConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & PathBase & ";Extended Properties=""DBASE IV;"";")
        adoRs = DBConn.Execute("select a1.id, a1.descr from sc133 a1 where a1.parentid='     3' and a1.ismark is null and a1.descr like ('%" & TextBox1.Text & "%') order by a1.descr")
        'adoRs = DBConn.Execute("select * from 1sblob a2 where a2.objid='    2D' and a2.fieldid like('%3E%')")
        'adoRs = DBConn.Execute("select * from sc174 where parentext like ('%" & TextBox1.Text & "%')")
        M = adoRs.GetRows()
        'TextBox1.Text = adoRs.RecordCount()
        'TextBox2.Text = adoRs.Fields.Item(0).value
        ListView1.Clear()
        TextBox1.Text = UBound(M, 2)
        TextBox2.Text = M(0, 0)
        For X = 0 To UBound(M, 1)
            ListView1.Columns.Add("" & adoRs.Fields.Item(X).Name, 100, HorizontalAlignment.Left)
        Next
        DBConn.close()
        For X = 0 To UBound(M, 2)
            adoRs = DBConn.Execute("select blockno from 1sblob a2 where a2.objid='' and a2.fieldid like('%3E%')")
            ItmX = ListView1.Items.Add("" & M(0, X))
            For Y = 1 To UBound(M, 1)
                ItmX.SubItems.Add("" & M(Y, X))

            Next
        Next


1. Второй вариант у меня работает раза в 3-4 быстрее. Можно ли 1-ый вариант изменить для увеличения скорости работы????
Отрисовка списка контрагентов в полторы тысячи записей занимает около 15 секунд.
2. Если На первый вопрос есть решение, то подскажите тогда где можно найти список функций вытаскивающих данные из базы типа sotrudnik.ЭтоГруппа? Или их можно найти только в интернете?
3. Со вторым вариантом подскажите, как обратится к таблице содержащей полное наименование клиента ( в моем случает это 1SBLOB), там строчка с полным наименование хранится в 3-х!!! строчках таблицы, да еще с какими-то служебными символами в начале первой строчки. Может есть уже готово решение обработки этих данных?
Буду очень признателен за помощь. Прошу сильно не ругать, я не программист, просто пришлось немного вспомнить студенческие годы и сесть за код для создания приложения ради прогресса работы организации. Нанимать программиста не имеет смысла, т.к. задача до конца еще не сформирована, а формируется в процессе написания приложения.
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37929293
The Dim!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karlus...Прошу сильно не ругать, я не программист, просто пришлось немного вспомнить студенческие годы и сесть за код для создания приложения ради прогресса работы организации. Нанимать программиста не имеет смысла, т.к. задача до конца еще не сформирована, а формируется в процессе написания приложения.
И поэтому ищется Осел, который решит это на форуме за "спасиба" :)
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37929385
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The Dim!, Осел не ищется. Я прошу лишь совет что выбрать и где и что искать. А флудить на форуме с глупыми коментами все могут
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37929751
Taekwonder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karlus,

1. Ясный красный, что первый вариант работает медленнее. У меня загрузка через адодб по сравнению application вообще раз в пятнадцать стала быстрее отрабатывать. Через application вы подобной скорости не добъётесь при условии обработки одинакового кол-во записей.
2. на первый вопрос решения нет! Адодб всегда будет быстрее апликашина.
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37929763
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ. Значит буду думать как уменьшить количество записей, выводимых в форму. Вернее чего тут думать, придется запрашивать условия фильтрации перед поиском.
Тогда еще вопрос по отношению апликешина, где все-таки можно найти описание команд апликешина. может они есть в конфигураторе-где-то?
Появился еще один вопрос при обращении через адо и оле к базе с селектом
Код: vbnet
1.
Dim sql As String = "select a1.id, a1.descr from sc133 a1 where a1.parentid='     3' and a1.ismark is null and a1.descr like ('%жел%') order by a1.descr"


при первом выполнении такого запроса выводятся все записи, а при последующих выполнения только часть записей, удовлетворяющих этим условиям. Пока не могу найти объяснения такому поведению. Подскажите, где рыть?
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37930664
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karlus,

1. 2-й вариант будет быстрее, т.к. есть свои особенности работы с инструментами. Собственно уже говорилось.
3. Структура таблиц хранится в DD файле. Просмотреть можно блокнотом. Если я так понимаю полное наименование многострочное, то необходим join с 1sblob по OBJID.

Тогда еще вопрос по отношению апликешина, где все-таки можно найти описание команд апликешина. может они есть в конфигураторе-где-то?
При первом методе соединения вам доступны команды конфигуратора. Поэтому и медленнее. Ну если так туго доходит, наберите в поисковике.
Появился еще один вопрос при обращении через адо и оле к базе с селектом
Код: vbnet
1.
Dim sql As String = "select a1.id, a1.descr from sc133 a1 where a1.parentid='     3' and a1.ismark is null and a1.descr like ('%жел%') order by a1.descr"


при первом выполнении такого запроса выводятся все записи, а при последующих выполнения только часть записей, удовлетворяющих этим условиям. Пока не могу найти объяснения такому поведению. Подскажите, где рыть?
Как вариант попробовать
Код: vbnet
1.
Dim sql As String = "select a1.id, a1.descr from sc133 a1 where (a1.parentid='     3') and ((a1.ismark is null) or (a1.ismark<>'*')) and (a1.descr like ('%жел%')) order by a1.descr"


На вопрос - почему, могу послать к описанию провайдера которым подключаетесь. Там все написано.
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37931972
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C ADOODB так ничего и не получилось. В любом случае возвращает не все значения, при последующих запросах.
Решил остановиться на апликейшине от 1с. Там хоть встроенные проверки есть, пусть это и медленнее работает.
Никак не могу вникнуть в логику языка, помогите немного разобраться.
Код: vbnet
1.
2.
3.
4.
 Dim sotrudnik = cntr.CreateObject("Справочник.Контрагенты")
sotrudnik.НайтиПоНаименованию("1111")
sotrudnik.ПорядокНаименований()
sotrudnik.ВыбратьЭлементы()


Показывает мне все записи из справочника Контрагенты. Как правильно написать?
И какая функция осуществляет поиск по вхождения строки в название, т.е. найти все записи у которых содержится в названии "жел"?
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37932066
nicxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет такой функции, только прямым запросом
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37932165
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karlus,

Начните с того на каком языке вы все это ваяете? Может там собака порылась...
Ну и может проще из самой 1С коннектиться и выгружать в вашу нетленку?..
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37932167
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю запрос
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  Dim sotrudnik = cntr.CreateObject("Справочник.Контрагенты")
        sotrudnik.ВыбратьЭлементы()
        While sotrudnik.ПолучитьЭлемент > 0
            If sotrudnik.ЭтоГруппа = 0 And sotrudnik.ПометкаУдаления = 0 Then 'And sotrudnik.Родитель.Наименование = "заказчики" Then
                If InStr(1, UCase(sotrudnik.Наименование), UCase('жел')) Or InStr(1, UCase(sotrudnik.ПолнНаименование), UCase('жел')) Then
                    M(Col, 0) = sotrudnik.Наименование
                    M(Col, 1) = sotrudnik.ПолнНаименование
                    Col = Col + 1
                End If
            End If
        End While


Находит все записи кроме 1-й название "198 комбинат железобетонных..." Контрагент не помечен на удаление, находится в группе где и все остальные.
В чем может быть проблема, где искать причину? Не ищет его даже есть в условия поиска задать полное название. Где искать проблему? В интерфейсе находится он без проблем
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37932176
Karlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр, Пишу На Visual Basic 2008. Насчет выгружать в нетленку из 1с подскажите. Задача в следующем, в нетленке должен быть актуальный список договоров и клиентов из базы 1с. Как это реализовать правильно. Может действительно нет смысла постоянно обращаться к 1с с целю выгрузка данных. Может есть какой-то механизм выгружающий с определенными интервалами или по запросу?
...
Рейтинг: 0 / 0
Помогите разобраться, ADODB.Connection и V77.Application
    #37932199
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karlus,

Ну постучись ко мне и поговорим. А то говоришь не то что нужно, а мне бежать за паяльником лень...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Помогите разобраться, ADODB.Connection и V77.Application
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]