8.х Выгрузка жернала регистрации с фильтрами через COM.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем 1C_Use, 13 мар 2009.

  1. TopicStarter Overlay
    1C_Use
    Offline

    1C_Use

    Регистрация:
    6 фев 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Хочу выгрузить журнал регистрации в xml через COM С ФИЛЬТРАМИ. Как мне это реализовать?
    Не могли бы предоставить код (например, на Visual Basic)?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Прочитайте, как правильно задать вопрос
  3. TopicStarter Overlay
    1C_Use
    Offline

    1C_Use

    Регистрация:
    6 фев 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте!
    Разбираюсь с возможностями выгрузки данных системы 1С:Предприятие через COM.
    Я уже добился подключения к системе.
    Очень хочу выгрузить Журнал Регистарции, но не просто весь целиком, а используя фильтр. И вот проблема, не знаю как организовать фильтр, используя COM.
    Т.е. как мне создать Структуру и наполнить ее в 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"";")

    End Sub

    Вот как мне теперь создать Структуру и выгрузить Журнал? Не могли бы помочь разобраться?
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ну так вы получили доступ к базе.
    Далее вызовите такую процедуру:
  5. TopicStarter Overlay
    1C_Use
    Offline

    1C_Use

    Регистрация:
    6 фев 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Для реализации Фильтра или Отбора нужно создать типа Структура. А могу я создать этот тип через СОМ соединение? Т.е. не трогая 1С? Например, в VB.
  6. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    А зачем - Вам нужен Фильтр, типа структура именно в 1С? Т.О. Вы должны ч/з COM-соединение создать указанный фильтр именно в 1С.
  7. TopicStarter Overlay
    1C_Use
    Offline

    1C_Use

    Регистрация:
    6 фев 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Вот! (Видимо не так объяснил) А как это сделать (записать на VB)?
  8. TopicStarter Overlay
    1C_Use
    Offline

    1C_Use

    Регистрация:
    6 фев 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Вообще, переносимость 1С-ских типов через СОМ где-нибудь описана?
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    Struct = <СоединениеКБазе>.NewObject("Структура");
    
    А дальше работаете, как с объектом СТРУКТУРА в 1С
  10. TopicStarter Overlay
    1C_Use
    Offline

    1C_Use

    Регистрация:
    6 фев 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    О, супер:) Буду пробовать.
  11. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    :unsure:
    Спасибо - это кнопка под сообщение - пользуйтесь ею :)
  12. TopicStarter Overlay
    1C_Use
    Offline

    1C_Use

    Регистрация:
    6 фев 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Кстати, в Структуре (т.е. в случае фильтра,отбора) содержатся Ключ и Значение. А можно задать, чтобы фильтровалось не по равенству Значению, а по больше Значения? Например, фильтровать с Даты, большей указанной в Значении?
  13. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Посмотрите, как работает обработка

    Вложения:

  14. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    Нет, при использовании отбора проверка только на равенство.
  15. TopicStarter Overlay
    1C_Use
    Offline

    1C_Use

    Регистрация:
    6 фев 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Не понял, чем файл открыть:)
  16. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    1С-ом :)
  17. TopicStarter Overlay
    1C_Use
    Offline

    1C_Use

    Регистрация:
    6 фев 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Да я вот и не понял, где в 1С открыть его:)
  18. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В конфигураторе
  19. TopicStarter Overlay
    1C_Use
    Offline

    1C_Use

    Регистрация:
    6 фев 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Ситуация: создал 1С-кий тип Структура в VB. Теперь хочу передать его методу Выбрать для получения Выборки документов.
    Проблема: возникает ошибка при реализации метода Выбрать. Наверное, из-за этой Структуры (без нее метод работает). Не знаю, как обойти эту ошибку, чтобы работал Отбор для Выборки.
    Вопрос: подскажите, пожалуйста, кто знает, что надо делать? Возможно я не правильно использовал типы переменных или еще чего-то там.

    Вот мой код:
    Код:
    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
    
    
    Возникает ошибка:
    Run-time error'1001':
    Application-defined or object-defined error
  20. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    По пунктам:
    1. Для отбора по структуре имя ключа должно точно соответствовать имени реквизита (реквизит документа, имя колонки таблицы и т.д.). В типовых конфигурация реквизитов с такими именами точно нет.
    Из помощи:
    Т.е. в стуктуре может быть только один элемент.
    2.В 1С (типовой) нет такого документа - Контрагенты. Не очень понятно что нужно выбирать. Насколько я понял необходимо выбрать записи из журнала по какому - то критерию. Или нет - именно документы из базы?
    3.Какой тип значения asd. Для поиска можно использовать только типы которык встречаются в метаданных конфигурации (предварительно их получив/определив) или примитивные типы (число, строка, дата ).
    4.Насколько я понял из Вашего кода Вы пытаетесь получить все документы, которые соответствуют выбранному контрагенту и его почтовому адресу. Т.о. задача не совсем проста - точнее на 8-ке это решается просто, а вот вызывать что - то из Дельфи не так просто. Тут нужен запрос. Как его создать и вызвать из другой среды можно посмотреть поиском. Примерно так же, как и с перечислением. Толко запрос будет не очень простым.
    5.Если у Вас есть документ Контрагент всё резко упрощается. Нужно только задать правильное имя реквизита и проверит пункт 3.
    Успехов.

Поделиться этой страницей