Версия для печати темы (https://pro1c.org.ua/index.php?s=e448eba40e59c0a90f4e90d45983b168&showtopic=17599)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Перебор Запросом Документов и табличной части в нем

Автор: progr33 18.04.14, 12:51

Добрый день!Подскажите как организовать в запросе с перебором документов обход табличной части этого документа
Это просто перебор документов :

#Область Запрос

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказПоставщику.Ссылка КАК Ссылка,
        |    ЗаказПоставщику.Номер,
        |    ЗаказПоставщику.Дата,
        |    ЗаказПоставщику.Проведен,
        |    ЗаказПоставщику.Контрагент,
        |    ЗаказПоставщику.Организация,
        |    ЗаказПоставщику.СуммаДокумента,
        |    ЗаказПоставщику.ЗаказДистрибьютора.(
        |        Номенклатура,
        |        КоличествоВУпаковке,
        |        МассаУпаковки,
        |        Количество,
        |        ВесВЗаказе,
        |        Упаковка
        |    )
        |ИЗ
        |    Документ.ЗаказПоставщику КАК ЗаказПоставщику
        |ГДЕ
        |    ЗаказПоставщику.Организация = &Организация
        |    И ЗаказПоставщику.Проведен = ИСТИНА
        |
        |УПОРЯДОЧИТЬ ПО
        |    Ссылка
        |АВТОУПОРЯДОЧИВАНИЕ";

    Запрос.УстановитьПараметр("Организация", Организация);

    РезультатЗапроса = Запрос.Выполнить();
    
    #КонецОбласти


Подскажите пожалуйста, что необходимо для перебора табличной части ЗаказДистрибьютора?.Заранее спасибо!!!

Автор: Vofka 18.04.14, 13:10

Надо сделать запрос к табличной части:

|ВЫБРАТЬ
|     *
|ИЗ
|     Документ.ЗаказПоставщику.ЗаказДистрибьютора КАК ТабличнаяЧасть
|ГДЕ
|     ТабличнаяЧасть.Ссылка.Организация = &Организация
|     И ТабличнаяЧасть.Ссылка.Проведен = ИСТИНА

Автор: Petre 18.04.14, 13:47

"Перебор" - это берем коллекцию и обходим элементы. Что значит "организовать в запросе с перебором документов обход табличной части этого документа"?

Автор: progr33 18.04.14, 13:47

Сделал так

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказПоставщику.Ссылка,
        |    ЗаказПоставщику.Номер КАК Номер,
        |    ЗаказПоставщику.Дата,
        |    ЗаказПоставщику.Проведен,
        |    ЗаказПоставщику.Контрагент КАК Контрагент,
        |    ЗаказПоставщику.Организация,
        |    ЗаказПоставщику.СуммаДокумента
        |ИЗ
        |    Документ.ЗаказПоставщику КАК ЗаказПоставщику
        |ГДЕ
        |    ЗаказПоставщику.Организация = &Организация
        |    И ЗаказПоставщику.Проведен = ИСТИНА
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ЗаказПоставщикуЗаказДистрибьютора.Ссылка,
        |    ЗаказПоставщикуЗаказДистрибьютора.Номенклатура,
        |    СУММА(ЗаказПоставщикуЗаказДистрибьютора.КоличествоВУпаковке) КАК КоличествоВУпаковке,
        |    СУММА(ЗаказПоставщикуЗаказДистрибьютора.МассаУпаковки) КАК МассаУпаковки,
        |    СУММА(ЗаказПоставщикуЗаказДистрибьютора.Количество) КАК Количество,
        |    СУММА(ЗаказПоставщикуЗаказДистрибьютора.ВесВЗаказе) КАК ВесВЗаказе
        |ИЗ
        |    Документ.ЗаказПоставщику.ЗаказДистрибьютора КАК ЗаказПоставщикуЗаказДистрибьютора
        |ГДЕ
        |ЗаказПоставщикуЗаказДистрибьютора.Ссылка.Организация = &Организация
        |    И ЗаказПоставщикуЗаказДистрибьютора.Ссылка.Проведен = ИСТИНА
        |
        |СГРУППИРОВАТЬ ПО
        |    ЗаказПоставщикуЗаказДистрибьютора.Ссылка,
        |    ЗаказПоставщикуЗаказДистрибьютора.Номенклатура
        |АВТОУПОРЯДОЧИВАНИЕ";

    Запрос.УстановитьПараметр("Организация", Объект.Дистрибьютор);



Теперь выгружаю в помещенную на форму табличную часть
Объект.Документы.Загрузить(РезультатЗапроса.Выгрузить());


Заполняет к сожалению только колонку ссылка , а до этого выгружало все


    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
          
Сообщить(ВыборкаДетальныеЗаписи..Контрагент);  -  ошибка не находит контрагента

    КонецЦикла;



Автор: Petre 18.04.14, 13:51

Цитата(progr33 @ 18.04.14, 14:47) *
Заполняет к сожалению только колонку ссылка , а до этого выгружало все

Имена свойств должны совпадать. Типы одноименных свойств не должны конфликтовать.

Автор: progr33 18.04.14, 14:10

Цитата(Petre @ 18.04.14, 13:51) *
Имена свойств должны совпадать. Типы одноименных свойств не должны конфликтовать.

Имена совпадают

Оказывается нужно было в запросе еще раз указать поля

|   ЗаказПоставщикуЗаказДистрибьютора.Ссылка.Номер,
|   ЗаказПоставщикуЗаказДистрибьютора.Ссылка.Дата,
|   ЗаказПоставщикуЗаказДистрибьютора.Ссылка.Контрагент,
|   ЗаказПоставщикуЗаказДистрибьютора.Ссылка.Организация,
|   ЗаказПоставщикуЗаказДистрибьютора.Ссылка.СуммаДокумента,

Автор: Petre 18.04.14, 15:15

Почему еще раз. Они ведь вообще были не указаны.

Автор: progr33 18.04.14, 15:50


Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua