8.х Обращение к табличной части документа в тексте запроса

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

  1. TopicStarter Overlay
    UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    Есть запрос, который вытягивает остатки из регистра накопления. Одним из вытягиваемых измерений регистра является ссылка на документ у которого есть табличная часть. Необходимо первую строку данной таблицы включить в результат запроса. Как это реализовать?
  2. gamser
    Offline

    gamser Опытный в 1С

    Регистрация:
    27 окт 2006
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Код в студию
  3. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    а зачем она вам?
    если хотите этой строке посмотреть остаток, то делайте
    Код:
    ВЫБРАТЬ ПЕРВЫЕ 1
    *
    ИЗ
    Документы.<ИмяДокумента>.<ИмяТабличнойЧасти>
    ГДЕ
    Документы.<ИмяДокумента>.Ссылка = &Ссылка
    
    а потом сюда левым соединение РН, а если выводить эту строку в какой-нибудь отчет, то может быть легче ввести дополнительный реквизит в документ, который будет записываться при записи из ТЧ?
  4. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    1. Стоит понимать что при выборе данных из регистра Вы не сможете напрямую обратиться к табличной части документа, т.к. это поле таблицы базы данных имеет составной тип.
    2. Для организации нужного Вам запроса обратитесь во вложенном запросе к табличной части документа, Вас интересующей и запросите данные с ограничением количеста отбираемых записей, например в Вашем случае 1.
    Пример запроса
    Код:
    Функция ПолучитьРезультатЗапроса_ИдентификаторСPro()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Регистратор,
    |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Контрагент,
    |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ДоговорКонтрагента,
    |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.СуммаВзаиморасчетов,
    |    ВложенныйЗапрос.Номенклатура,
    |    ВложенныйЗапрос.ХарактеристикаНоменклатуры,
    |    ВложенныйЗапрос.Количество,
    |    ВложенныйЗапрос.Цена,
    |    ВложенныйЗапрос.Сумма,
    |    ВложенныйЗапрос.СтавкаНДС,
    |    ВложенныйЗапрос.СуммаНДС,
    |    ВложенныйЗапрос.Склад
    |ИЗ
    |    (ВЫБРАТЬ ПЕРВЫЕ 1
    |        РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
    |        РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |        РеализацияТоваровУслугТовары.Количество КАК Количество,
    |        РеализацияТоваровУслугТовары.Цена КАК Цена,
    |        РеализацияТоваровУслугТовары.Сумма КАК Сумма,
    |        РеализацияТоваровУслугТовары.СтавкаНДС КАК СтавкаНДС,
    |        РеализацияТоваровУслугТовары.СуммаНДС КАК СуммаНДС,
    |        РеализацияТоваровУслугТовары.Склад КАК Склад,
    |        РеализацияТоваровУслугТовары.Ссылка КАК Ссылка
    |    ИЗ
    |        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары) КАК ВложенныйЗапрос
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов
    |        ПО (ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Регистратор = ВложенныйЗапрос.Ссылка)
    |ГДЕ
    |    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Период МЕЖДУ &ДатаНачала И &ДатаОкончания";
    //Параметры запроса
    Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);// Дата
    Запрос.УстановитьПараметр("ДатаОкончания",ДатаОкончания);// Дата
    Результат = Запрос.Выполнить();
    
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
    //
    КонецЦикла;
    
    Возврат Результат;
    
    КонецФункции //ПолучитьРезультатЗапроса_ИдентификаторСPro
    
    
    Удачи!
  5. TopicStarter Overlay
    UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    mialord использую ваш вариант, в результате при внутреннем соединении запрос ничего не возвращает, при правом содержит выборку из регистров, при левом - выборку из таблицы значение. Получается, что он не находит соответствие по ссылке, по какой причине не понятно.
    Код:
    |ВЫБРАТЬ
    |НГЭО.ПЭ.Номер,
    |НГЭО.Размер,
    |ТабЧастьДок.НВ КАК ВА,
    |НГЭО.колво
    |ИЗ
    |(ВЫБРАТЬ ПЕРВЫЕ 1
    |ПЭНВ.НВ
    |ИЗ
    |Документ.ПЭ.НВтаб КАК ПЭНВ) КАК ТабЧастьДок
    |ПРАВОЕ СОЕДИНЕНИЕ РегистрНакопления.НГЭ.Остатки(&НаДату, ) КАК НГЭО
    |ПО НГЭО.ПЭ = ТабЧастьДок.ссылка";
    </span>
    </FONT></FONT></pre>

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