[РЕШЕНО] Вывести в ТЧ данные по запросу

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

  1. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    Добрый день, подскажите, делаю запрос, выбираю данные,
    и потом эти данные нужно добавить в табличную часть документ, но данные не добавляются, что делаю не так? (КА 1.1.49.1, платформа 8.2.19.102)

    данные есть, и это проверено

    Код:
        Запрос = Новый Запрос;
        Запрос.Текст ="ВЫБРАТЬ
                      |    ВнутреннийЗаказТовары.Номенклатура как Номенклатура,
                      |    ВнутреннийЗаказТовары.Ссылка как ВЗ,
                      |    ВнутреннийЗаказТовары.Продукция как Продукция,
                      |    ВнутреннийЗаказТовары.ЗаказПокупателя,
                      |    ВнутреннийЗаказТовары.Количество
                      |ИЗ
                      |    Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
                      |    ГДЕ     ВнутреннийЗаказТовары.Продукция  = &Продукция
                      |    и ВнутреннийЗаказТовары.ЗаказПокупателя = &Заказ";
                     
                     
        ПродукцияКод ="00000014213";
        Продукция = Справочники.Номенклатура.НайтиПоКоду(ПродукцияКод);
           
       
        ЗаказПокупателя = Документы.ЗаказПокупателя.НайтиПоНомеру("УСП0051_015", Дата(2013, 12, 23)).ПолучитьОбъект();
        Заказ = ЗаказПокупателя.Ссылка;
       
        Запрос.УстановитьПараметр("Продукция", Продукция);
        Запрос.УстановитьПараметр("Заказ", Заказ);
       
        Шапка = Запрос.Выполнить().Выбрать();
        Пока Шапка.Следующий() Цикл
    
        Для Каждого Строка Из Объект.Материалы Цикл
             
            Строка                     = Объект.Материалы.Добавить();   
            Строка.Номенклатура        = Шапка.Номенклатура;
       
        КонецЦикла;   
        КонецЦикла;  
    
  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а запрос возвращает данные?
    --- Объединение сообщений, 25 сен 2014 ---
    судя по всему у вас УФ
  3. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Формы управляемые ?
  4. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    А Объект.Материалы это что?

    Я просто не вижу где бы это было определенно. Только Заказы
    ЗаказПокупателя = Документы.ЗаказПокупателя.НайтиПоНомеру("УСП0051_015", Дата(2013, 12, 23)).ПолучитьОбъект();
    Заказ = ЗаказПокупателя.Ссылка;

    Вы этот код где выполняете в обработке или в каком модуле формы или объекта
  5. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    нет, не управляемые

    запрос возвращает данные, если вывести в сообщить после шапка.следующий
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    И сразу зачем Вам
    ЗаказПокупателя = Документы.ЗаказПокупателя.НайтиПоНомеру("УСП0051_015", Дата(2013, 12, 23)).ПолучитьОбъект();
    Заказ = ЗаказПокупателя.Ссылка;

    Разве Документы.ЗаказПокупателя.НайтиПоНомеру("УСП0051_015", Дата(2013, 12, 23)) не сразу ссылку возвращает?
  7. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26

    я делаю это в обработке заполнения табличных частей


    Объект.Материалы - это табличная часть объекта, из которого вызывается обработка, через заполнить


    вот полностью текст обработки:

    Код:
    Процедура Инициализировать (Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта) Экспорт
           
       
        Запрос = Новый Запрос;
        Запрос.Текст ="ВЫБРАТЬ
                      |    ВнутреннийЗаказТовары.Номенклатура как Номенклатура,
                      |    ВнутреннийЗаказТовары.Ссылка как ВЗ,
                      |    ВнутреннийЗаказТовары.Продукция как Продукция,
                      |    ВнутреннийЗаказТовары.ЗаказПокупателя,
                      |    ВнутреннийЗаказТовары.Количество
                      |ИЗ
                      |    Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
                      |    ГДЕ     ВнутреннийЗаказТовары.Продукция  = &Продукция
                      |    и ВнутреннийЗаказТовары.ЗаказПокупателя = &Заказ";
                     
                     
        ПродукцияКод ="00000014213";
        Продукция = Справочники.Номенклатура.НайтиПоКоду(ПродукцияКод);
           
       
        ЗаказПокупателя = Документы.ЗаказПокупателя.НайтиПоНомеру("УСП0051_015", Дата(2013, 12, 23)).ПолучитьОбъект();
        Заказ = ЗаказПокупателя.Ссылка;
       
        Запрос.УстановитьПараметр("Продукция", Продукция);
        Запрос.УстановитьПараметр("Заказ", Заказ);
       
        Шапка = Запрос.Выполнить().Выбрать();
       
       
        СтруктураПоиска = Новый СТруктура();
        СтруктураПоиска.Вставить("Номенклатура");
        Пока Шапка.Следующий() Цикл
            Номенклатура = Шапка.Номенклатура;
            Для каждого Строка Из Объект.Материалы Цикл
            Строка.Номенклатура = Номенклатура;
        КонецЦикла;
        КонецЦикла;
       
           
    КонецПроцедуры
    
    --- Объединение сообщений, 25 сен 2014 ---
    ну .... наверное сразу...просто не знала
  8. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    И вот это не совсем понимаю
    Для Каждого Строка Из Объект.Материалы Цикл

    Строка = Объект.Материалы.Добавить();
    Строка.Номенклатура = Шапка.Номенклатура;

    КонецЦикла;

    Допустим у Вас сейчас в ТЧ материалы ничего нет и Вам надо ее заполнить. тогда же в этот цикл Вы не попадете
    --- Объединение сообщений, 25 сен 2014 ---
    В первом коде было что Вы добавляете строки.
    Во втром перезаполняете без добавления .
    так что именно делаете?
  9. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    а как мне попасть?

    я вот это и хочу узнать,

    как мне из запроса, табличную часть заполнить
  10. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Если заполнить то в первом запросе должно быть вот так
    Код:
    Шапка = Запрос.Выполнить().Выбрать();
    Пока Шапка.Следующий() Цикл
    
    Строка = Объект.Материалы.Добавить(); 
    Строка.Номенклатура = Шапка.Номенклатура;  
    КонецЦикла;
  11. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    вот так наверное правильно

    Код:
    Пока Шапка.Следующий() Цикл
            Объект.Материалы.Добавить();
            Сообщить(Шапка.Номенклатура);
                Для каждого Строка Из Объект.Материалы Цикл
    
  12. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    А Во втором

    Код:
    СтруктураПоиска = Новый СТруктура();
    СтруктураПоиска.Вставить("Номенклатура");
    Пока Шапка.Следующий() Цикл
    Номенклатура = Шапка.Номенклатура;
    Строка = Объект.Материалы.Добавить();
    Строка.Номенклатура = Номенклатура;
    КонецЦикла;
    --- Объединение сообщений, 25 сен 2014 ---
    Да подствьте как я Вам написал
    Вам не надо Для каждого Строка Из Объект.Материалы Цикл

    Вот эта Ваша строка Для каждого Строка Из Объект.Материалы Цикл это когда Вы обходите все строки в ТЧ
    Вам же я насколько понял есть ТЧ пустая и вам ее надо заполнить
    bluntschi нравится это.
  13. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Можно воспользоваться еще функцией Выгрузить(), но колонки ТЧ и в запросе должны совпадать.
    bluntschi нравится это.
  14. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    спасибо вам большое, все получилось!

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