8.х Запрос с условием на поле-ссылка

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Revencu, 7 авг 2013.

  1. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    У документа нет наименования.

    ДокументЗакупки.Контрагент.Наменование

    Вы запросы сами пытаетесь состряпать?
    У вас программист, обслуживающий базу 1С, есть? Объясните ему какую информацию надо получать из базы, а запросы пусть он набросает. Поскольку сейчас хотя запрос и будет работать, но (с точки зрения 1С) он не оптимальный.
  2. TopicStarter Overlay
    Revencu
    Offline

    Revencu

    Регистрация:
    7 авг 2013
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Получаю таблицу после запроса
    если не фильтровать по нужному условию, то можно в цикле перебирать нужные записи
    Например:
    Код:
     Set trade = CreateObject("V82.COMConnector")
    set cnn=trade.Connect("File='FILE_1CD')+"';Usr='USER';Pwd='PASS';")	
    set z=Cnn.Metadata.AccumulationRegisters
    set query = cnn.NewObject("Query")
    query.text="select Номенклатура,ДокументЗакупки from AccumulationRegister.Закупки"
    set q=query.execute.unload
    for i=0 to q.count-1
    set data=q.get(i)
    if cnn.String(data.get(1))="НАШЕ ЗНАЧЕНИЕ" then
    ...
    end if
    next
    
    Это решает как-то задачи (CNN.STRING()). Но если таблица большая - грузится очень долго.
    Поэтому и нужно выбрать только нужные записи.
    Так как же в запросе фильтровать нужные записи по составному полю?
  3. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    1. текст запроса, если удобнее, можно полностью писать на русском
    2. 1с умеет автоматом делат соединения таблиц и дает доступ к строкам таблиц справочников через ссылки, в вашем последнем запросе можно написать
    Код:
    query.text="select Номенклатура.Наименование,ДокументЗакупки.Номер, ДокументЗакупки.Дата from AccumulationRegister.Закупки ГДЕ Номенклатура.Код=&КодНоменклатуры"
    
    и установить параметром код нужной номенклатуры
    также можно работать не только с таблицами записей регистров накопения, но и с их так называемыми виртуальными таблицами (они очень напоминают VTF у SQL Server) - сильно жизнь упрощает. почитайте про язык запросов 1с - он сделан на базе sql, с одной стороны сокращен в части возможностей вставки/обновления и некоторых возможностей выборок, но расширен в части обращения к данным через несколько точек (порождает автоматом левые соединения)

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