Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Создать фильтр для Выборки дкоументов на Visual Basic.  (Прочитано 12615 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Гыук
Гость
« : 01-04-2009 12:47 » 

Кто-нибудь знает, как реализовать выборку документов с использованием Отбора (т.е. по сути фильтра) на Visual Basic?
Вот начало кода:

Код:
Public Sub Main()

Dim Obj As New V81.COMConnector
Dim Connection As Object

Set Connection = Obj.Connect("Srvr=""192.168.0.168"";SQLSrvr=""192.168.0.168"";Ref=""test_db"";SQLDB=""test_db"";Usr=""user777"";Pwd=""777"";")
MsgBox ("Connect!")

Set Struct = Connection.NewObject("Структура")

'Struct.Вставить("Почта",asd)


MsgBox ("lol")


End Sub

Я не очень знаком с синтаксисом, и у меня не получается добавить в структуру КлючЗначение, т.е. выполнить Вставить, потому что не знаю, как это правильно записать.
Записан
Гыук
Гость
« Ответ #1 : 01-04-2009 12:57 » 

Т.е. для Отбора нужно создать тип Структура. Я подсоединился через КОМ к 1С, теперь создал тип Структура, но надо же его заполнить, и передать методу Выборка. Вот и не получается это сделать.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 01-04-2009 15:07 » 

Создал именно структуру 1С? Как именно? (код сюда)
(просто если ты структуру уже создал - то заполнить ее просто: тем же способом; а передать еще легче)
Записан
Гыук
Гость
« Ответ #3 : 03-04-2009 06:18 » 

Там же в коде выше все написано, как я создал. Через NewObject.
Дальше надо использовать метод "Вставить", но как в VB это написать, я не знаю. Он не хочет выполнять просто метод, ему нужно присваивание, или я просто не знаю.
Записан
Гыук
Гость
« Ответ #4 : 03-04-2009 07:41 » 

Я разобрался, как делать:)
Вот, например:

Код:
Public Sub Main()

Dim Obj As New V81.COMConnector
Dim Connection As Object

'Соединение
Set Connection = Obj.Connect("Srvr=""192.168.0.168"";SQLSrvr=""192.168.0.168"";Ref=""test_db"";SQLDB=""test_db"";Usr=""user777"";Pwd=""777"";")
MsgBox ("Connect!")

'Структура
Set Struct = Connection.NewObject("Структура")

'Заполнение структуры
TempPut = Struct.Вставить("Почта", asd)
TempPut = Struct.Вставить("Компания", "1С")
TempProperty = Struct.Свойство("Компания")
TempCount = Struct.Количество()

'Проверка
MsgBox ("Property: " & TempProperty)
MsgBox ("Count: " & TempCount)

MsgBox ("lol")


End Sub

Записан
Гыук
Гость
« Ответ #5 : 03-04-2009 09:13 » 

Структуру создать получилось. Возникла новая проблема: хочу теперь передать структуру ("Отбор") в качестве параметра методу Выбрать, но возникает ошибка при реализации метода. Возможно он не принимает тип созданной мной Структуры или что-то другое. Кто-нибудь знает, что делать?

Вот код:
Код:
Public Sub Main()

Dim Obj As New V81.COMConnector
Dim Connection As Object
Dim Selection As Object
Dim SelectObj As Object
Dim MetaData As Object
Dim Struct As Object


'Соединение
Set Connection = Obj.Connect("Srvr=""192.168.0.168"";SQLSrvr=""192.168.0.168"";Ref=""test_db"";SQLDB=""test_db"";Usr=""user777"";Pwd=""777"";")
MsgBox ("Connect!")

'Структура
Set Struct = Connection.NewObject("Структура")

'Заполнение структуры
'TempPut = Struct.Вставить("Почта", asd)
TempPut = Struct.Вставить("Компания", "1C")
TempProperty = Struct.Свойство("Компания")
TempCount = Struct.Количество()

'Проверка
MsgBox ("Property: " & TempProperty)
MsgBox ("Count: " & TempCount)

'Выборка документов
Set Contr = Connection.Документы.Контрагенты
Set Selection = Contr.Выбрать("20090101", "20091231", Struct)

'Цикл по элементам документов, получение реквизитов
i = 0
Do While Selection.Следующий()
    i = i + 1
    'MsgBox ("i: " & i)
    Set SelectObj = Selection.ПолучитьОбъект()
    Set MetaData = SelectObj.Метаданные()
    Requisite = MetaData.Представление()
    MsgBox ("Requisite: " & Requisite & " " & i)
Loop

MsgBox ("lol")
End Sub

Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 03-04-2009 13:35 » 

По-моему не в структуре дело - ты даты как строки передаешь... Попробуй вообще опустить начало-конец периода:
Set Selection = Contr.Выбрать(,, Struct)
И ты уверен, что Set Contr = Connection.Документы.Контрагенты ? Обычно это Connection.Справочники.Контрагенты
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 03-04-2009 13:48 » 

Еще пару важных моментов:
1. Поля, по которым делаешь отбор, должны быть проиндексированы в конфигураторе (Компания)
2. Неужели поле Компания у тебя текстовое, а не справочник?
Struct.Вставить("Компания", "1C") - здесь ты будешь отбирать по тексту
Записан
Гыук
Гость
« Ответ #8 : 03-04-2009 14:53 » 

Короче, фишка была в индексировании.
А если мой реквизит - это ссылка на справочник? То что надо в качестве Значения Ключа передавать?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 03-04-2009 15:20 » 

Создать объект типа справочник-менеджер:
Ref=Connection.NewObject("Справочники.Компании")
или
Ref=Connection.Справочники.Компании
Найти нужный элемент
RefLink=Ref.НайтиПоНаименованию("1C")
(см. в справке - возможны другие методы поиска и различные параметры)
и полученную ссылку передать
Struct.Вставить("Компания", RefLink)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines