7.7 Создание отчёта. Работа с табличной частью документов.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем iirespektii, 13 ноя 2012.

  1. TopicStarter Overlay
    iirespektii
    Offline

    iirespektii

    Регистрация:
    13 ноя 2012
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Привет всем. Программирую в 1с совсем недавно, до этого момента никаких проблем не было, но вот столкнулся с такой проблемой...Необходимо создать отчёт по документам "ПлатнаЗаУслугу", вывести в определённый период заказанную услугу и её стоимость...Вот мой код:
    Код:
    //*******************************************
    Процедура Сформировать()
    Таб=СоздатьОбъект("Таблица");
    Таб.ВывестиСекцию("Все<");
    
    Док = СоздатьОбъект("Документ.ПлатаЗаУслугу");
    Док.ВыбратьДокументы(ДатаН, ДатаК);
    Пока Док.ПолучитьДокумент() = 1 Цикл
    
    ТабличнаяЧасть=СоздатьОбъект("ТаблицаЗначений");
    Док.ВыгрузитьТабличнуюЧасть(ТабличнаяЧасть);
    Номер=Док.ПолучитьАтрибут("НомерДок");
    //номер берётся из шапки, тут всё нормально
    // Дальнейшая обработка Док.ТекущийДокумент()
    СтоимостьУсл=Док.ПолучитьАтрибут("Стоимость");
    //вот тут проблема, я хочу получить значение, а получаю лишь пустое значение
    Предупреждение(СтоимостьУсл);//выводитсся пустое значение
    Таб.ВывестиСекцию("УслугаУ");
    КонецЦикла;
    Таб.ВывестиСекцию("Все>");
    Таб.Показать();
    
    КонецПроцедуры



    Подскажите что не так?
  2. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    А что нужно получить? Отчет в разрез строк документа или итоговую стоимость по документу?
    Если по строкам, то нет цикла:
    [CODE1C]
    ТабличнаяЧасть.ВыбратьСтроки();
    Пока ТабличнаяЧасть.ПолучитьСтроку() = 1 Цикл
    СтоимостьУсл = ТабличнаяЧасть.Стоимость;
    Таб.ВывестиСекцию("УслугаУ");
    КонецЦикла;
    [/CODE1C]

    Если стоимость по всем строкам, то можно так:
    Код:
    СтоимостьУсл = ТабличнаяЧасть.Итог("Стоимость");
    P.S. И табличную часть выгружать необязательно. Работает и так:
    [CODE1C]
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку() = 1 Цикл
    СтоимостьУсл = Док.Стоимость;
    КонецЦикла;
    [/CODE1C]

    P.P.S. И зачем вам ПолучитьАтрибут? Можно просто
    Код:
    Номер = Док.НомерДок.
  3. SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Стоимость это реквизит документа?
    ВЫ отладчиком посмотрите что у вас там получается.
    Открываете отладчик напротив строки
    Номер=Док.ПолучитьАтрибут("НомерДок");
    В желтом поле 2 раза кликаете появляется шлагбаум. Запускаете 1с. Запускаете обработку, нажимаете соформировать(или что там у вас), у вас должно вернуться опять в отладчик. В отладчике выделяем
    Док.ВыгрузитьТабличнуюЧасть(ТабличнаяЧасть);
    или просто табличную часть и нажимаем shift F9 , у вас должен показать что за табличную часть выгружает и тогда все поймете.
  4. TopicStarter Overlay
    iirespektii
    Offline

    iirespektii

    Регистрация:
    13 ноя 2012
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Спасибо, большое помогли
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    "Спасибо" на форуме обычно выражается кнопочной у сообщения которое вам помогло.

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