8.х Вывод в ВПФ данных, которых нет непосредственно в документе

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

  1. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Уважаемые коллеги, подскажите, пожалуйста. Что-то туплю :oops:
    БП-3.0.41.60
    создал ВПФ к документу РеализацияУслугПоПереработке (см. вложение).
    в самом документе на закладке Материалы заказчика есть только номенклатура и количество, цены-суммы - нет (но сумма есть в проводках документа).
    А вот как вытянуть эти суммы в ПФ - никак не соображу.
    Подскажите, плз.
    Спасибо!
    --- Объединение сообщений, 30 ноя 2015 ---
    файл, который забыл вложить

    Вложения:

  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Читать запросом регистр бухгалтерии.
    nickvv нравится это.
  3. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    что-то не очень получается.
    вот запрос, но что-то не то:
    Код:
         "ВЫБРАТЬ
         |    Хозрасчетный.Регистратор,
         |    Хозрасчетный.НомерСтроки,
         |    Хозрасчетный.Сумма
         |ПОМЕСТИТЬ ВрТаб
         |ИЗ
         |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
         |ГДЕ
         |    Хозрасчетный.Регистратор = &Ссылка"
    
    подскажите, плз, что не так
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    эээ....для чего в ВрТаб помещали результат? делайте обычный запрос на выборку результата.
    nickvv нравится это.
  5. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    а как потом обойти табличную часть? не в цикле же запрос делать?
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    стройте запрос к табличной части, соединяйте с регистром.
    nickvv нравится это.
  7. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    а можно чуть подробнее?
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Код:
    Выбрать
    Рег.поле1,
    Рег.поле2
    Из Регистр.ИмяРегистра КАК Рег
    Левое Соединение Документ.ИмяДокумента.ТабличнаяЧасть Как ТЧДокумента
    По Рег.Регистратор = ТЧДокумента.Ссылка
    И Рег.Поле1 = ТЧдокумента.Поле1
    nickvv нравится это.
  9. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Спасибо! Понял
  10. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Вот что получилось:
    Код:
        //заполняем строки ТЧ
        ОбластьСтроки = МакетОбработки.ПолучитьОбласть("СтрокаТЧ");
        НомерСтроки = 0;
       
        МойЗапрос = Новый Запрос();
        МойЗапрос.Текст="ВЫБРАТЬ
         |    Хозрасчетный.НомерСтроки,
         |    Хозрасчетный.Сумма
         |    Хозрасчетный.Субконто2
         |ИЗ
         |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
         |Левое Соединение Документ.РеализацияУслугПоПереработке.МатериалыЗаказчика Как ТЧДокумента
         |По Хозрасчетный.Регистратор = &Ссылка
         |И Хозрасчетный.НомерСтроки = &ТЧдокумента.НомерСтроки";
        
         МойЗапрос.УстановитьПараметр("ТЧДокумента",СсылкаНаДокумент.МатериалыЗаказчика);
         МойЗапрос.УстановитьПараметр("Ссылка",СсылкаНаДокумент);
         РезультатВыборки = МойЗапрос.Выполнить();
         Выборка = РезультатВыборки.Выбрать();
        
         Пока Выборка.Следующий() Цикл
       
        //Для Каждого ТекущаяСтрока Из СсылкаНаДокумент.МатериалыЗаказчика Цикл
            НомерСтроки = НомерСтроки + 1;
            ОбластьСтроки.Параметры.НомерСтроки = НомерСтроки;
            ОбластьСтроки.Параметры.Номенклатура = Выборка.Субконто2;
            ОбластьСтроки.Параметры.Количество = Выборка.Количество;
            ОбластьСтроки.Параметры.Сумма = Выборка.Сумма;
           
            ТабличныйДокумент.Вывести(ОбластьСтроки);
        КонецЦикла;
    
    Но в итоге ругается на Неправильный псевдоним Хозрасчетный.Субконто2
    Как же надо вытянуть наименование номенклатуры?
    --- Объединение сообщений, 1 дек 2015 ---
    Код:
        МойЗапрос.Текст="ВЫБРАТЬ
         |    Хозрасчетный.НомерСтроки,
         |    Хозрасчетный.Сумма
         |    Хозрасчетный.Субконто2 КАК Номенклатура
         |ИЗ
         |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
         |Левое Соединение Документ.РеализацияУслугПоПереработке.МатериалыЗаказчика КАК ТЧДокумента
         |По Хозрасчетный.Регистратор = &Ссылка
         |И Хозрасчетный.НомерСтроки = ТЧдокумента.НомерСтроки";
    
    тоже ругается на неправильный псевдоним Хозрасчетный.Субконто2
    Последнее редактирование: 1 дек 2015
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Номер строки ТЧ документа в общем случае не равен номеру строки в наборе записей подчиненного регистра.

    "Не правильно ты, Дядя Фёдр, бутерброд ешь" (с) Кот Матроскин.

    Должно быть как-то так:
    Код:
    ВЫБРАТЬ
        ХозрасчетныйДвиженияССубконто.СубконтоДт2 КАК Номенклатура,
        ХозрасчетныйДвиженияССубконто.Сумма
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, , Регистратор = &СсылкаНаДокумент, , ) КАК ХозрасчетныйДвиженияССубконто
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияУслугПоПереработке.МатериалыЗаказчика КАК РеализацияУслугПоПереработкеМатериалыЗаказчика
            ПО ХозрасчетныйДвиженияССубконто.СубконтоДт2 = РеализацияУслугПоПереработкеМатериалыЗаказчика.Номенклатура
                И ХозрасчетныйДвиженияССубконто.СчетКт = РеализацияУслугПоПереработкеМатериалыЗаказчика.СчетУчета
    В условиях соединения СчетДт/СчетКт - в зависимости от проводки, из которых необходимо взять суммы, СубконтоДт2/СубконтоКт2 - соответственно.

    По-хорошему, регистр нужно еще по счету ограничить.
    nickvv нравится это.
  12. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    А как количество вытянуть? непосредственно в ХозрасчетныйДвиженияССубконто - количества нет, а если пишу
    Код:
        МойЗапрос.Текст="ВЫБРАТЬ
         |    ХозрасчетныйДвиженияССубконто.СубконтоКт2 КАК Номенклатура,
         |    ХозрасчетныйДвиженияССубконто.Сумма,
         |    ХозрасчетныйДвиженияССубконто.Регистратор.МатериалыЗаказчика.Количество
    
    ,
    ругается, что нельзя обращаться к вложенной таблице через поле составного типа
  13. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    ХозрасчетныйДвиженияССубконто.КоличествоДт/ХозрасчетныйДвиженияССубконто.КоличествоКт - в зависимости от того, с какой стороны указан счет учета материалов в проводке.

    Возможно, еще понадобится группирока строк, т.к. в общем случае, в ТЧ документа могут быть дубли номенклатуры с разным количеством/суммой

    p.s. очень сильно поможет в составлении запросов консоль запросов. найти можно либо на ИТС, либо на просторах интернета.
    nickvv нравится это.
  14. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Спасибо!
    Почти всё получилось, остался последний штрих: итоги в выведенной таблице.
    Количество собираю так:
    Код:
    ОбластьПодвал.Параметры.КоличествоИтог = СсылкаНаДокумент.МатериалыЗаказчика.Итог("Количество");
    а как собрать сумму, ведь на ТЧ документа не сошлешься: в ТЧ документа сумм нет.
    Выборка.Итог("Сумма") - не выводит
  15. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Если обход через выборку, то сделать переменную СуммаИтого и накапливать в ней суммы по строкам, если через ТЗ, то ТЗ.Итог("КолонкаТЗ").
    nickvv нравится это.
  16. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Спасибо! Всё получилось

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