7.7 Уважаемые, помогите в создании отчета

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

  1. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте Уважаемые.Прошу Вас помощи в создании отчета, с использованием регистров.
    Начну всё по порядку: Имеется Один регистр: Регистр.Остатки - оборотный, который включает в себя:
    Измерения:
    асВидТоплива,
    асАвто,
    асСотрудник,
    Контрагент,
    ОборудованиеТС.
    Ресурсы:
    Пробег,
    Горючее,
    СколькоВыдано,
    РасходПоОборудованию,
    ОборудованиеЧасы,
    ЧасовУКонтрагента,
    Перерасход,
    Общий,
    СпидометрНачальный,
    СпидометрКонечный,
    ОстатокВБакеПоАвто,
    ОстатокВБакеПоОборудованию,
    НормаАвто.
    Реквизитов в нём нет.
    Движение по ним происходит в модуле путевого листа при процедуре Проведения, провожу движения методом:Регистр.Остатки.ДвиженияВыполнить()
    Хочу сделать отчет который выводил бы данные в определенном периоде, который я выберу:
    Наименование колонки откуда данные берутся в колонку.
    --------------------------------------------------------------------------------------------------------------------------------------------------------
    ФИО- рег.Остатки.асСотрудник,
    ----------------------------------------------------------------------------------------------------------------------------------------------------------
    Авто рег.Остатки.АсАвто,
    ---------------------------------------------------------------------------------------------------------------------------------------------------------
    Номер авто Думаю что можно взять с рег.Остатки.асАвто.ГосНомер
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------
    ВидТоплива рег.Остатки.асВидТоплива,
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Показания спидометра:
    На начало месяца рег.Остатки.СпидометрНачальный,но если мы будем делать
    группировку,то он должен быть неизменным и самым меньшим по
    данному авто в выбранном периоде.
    На конец месяца Рег.Остатки.СпидометрКонечный, тоже должен при группировке
    быть самым большим по данному авто из выбранного периода.
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Оборудование Рег.Остатки.ОборудованиеТС
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    РасходПоОборудованию Рег.Остатки.РасходПоОборудованию
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ПробегЗаВыбПериод рег.Остатки.Пробег
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    НормаНа100Км рег.Остатки.НормаАвто
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    СписаниеПоПутевкам рег.Остатки.СколькоВыдано
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Остаток на:
    начало Месяца рег.ОстатокВБакеПоАвто должны получить данные на дату
    Начала выбранного периода.
    На Конец месяца рег.ОстатокВБакеПоАвто тоже должны получить данные конца
    выбранного периода
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Вот вроде бы то что должно быть выведено изложил.
    Только может предложите как это всё осуществить.
    пробовал через запрос но выдодятся нули. пробовал через ТЗ, но в ней не придумал как это реализовать имеено чтобы значения при группировке не складывались и всё такое.
    Кто посоветует что и как его построить.
    Заранее Спасибо всем.
    Жду ответа, если будут вопросы буду сразу же отвечать.
  2. рамиль
    Offline

    рамиль Опытный в 1С

    Регистрация:
    12 мар 2006
    Сообщения:
    595
    Симпатии:
    0
    Баллы:
    26
    Ндаа , интересно. Вы практически предлагаете сделать за вас вашу работу.
  3. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Нет, я не предлагаю сделать просто для более детальности и ясности вопроса полностью всё описал, просто делаю через запрос у меня ничего не выходит выходит только шапка, не могу понять в чём дело. И при составлении например спидометра начального конечного остатка в баке на начала даты запроса у меня тоже загвоздка не могу понять как сделать всё.

    Например, сейчас создал отчет ради примера:
    вот код запроса
    //*******************************************
    // Процедура генерации запроса Сформировать.
    //
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Водитель = Регистр.Остатки.асСотрудник;
    |Авто = Регистр.Остатки.асАвто;
    |ВидТоплива = Регистр.Остатки.асВидТоплива;
    |СпидометрНачальный = Регистр.Остатки.СпидометрНачальный;
    |СпидометрКонечный = Регистр.Остатки.СпидометрКонечный;
    |ОборудованиеТС = Регистр.Остатки.ОборудованиеТС;
    |РасходПоОборудованию = Регистр.Остатки.РасходПоОборудованию;
    |ПробегЗаМесяц = Регистр.Остатки.Пробег;
    |НормаПоАвто = Регистр.Остатки.НормаАвто;
    |ПоПутевкам = Регистр.Остатки.СколькоВыдано;
    |ОстатокНаНачало = Регистр.Остатки.ОстатокВБакеПоАвто;
    |Группировка Водитель;
    |"//}}ЗАПРОС
    ;
    //Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;

    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
    // Заполнение полей Водитель
    Таб.ВывестиСекцию("Водитель");
    КонецЦикла;
    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Итого");
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
    КонецПроцедуры
    ВыбКонПериода=?(РабочаяДата()>ПолучитьДатуТА(),ПолучитьДатуТА(),РабочаяДата());
    ВыбНачПериода=НачМесяца(ВыбКонПериода);
    в табличной части написал просто запрос.авто, чтобы он выдал мне автомобили. Но ничего не выводится.
  4. рамиль
    Offline

    рамиль Опытный в 1С

    Регистрация:
    12 мар 2006
    Сообщения:
    595
    Симпатии:
    0
    Баллы:
    26
    Если есть телепаты со знанием 1С , то они вам помогут . А просто по тексту запроса , очень сложно найти ошибку. Дело даже не в том насколько правильно написан запрос , а насколько верно вы диагностируете ошибку.
  5. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Хорошо, тогда как мне быть с моим отчетом. который я описал . Что подскажите.

    Тогда подскажите мне как и что сделать первым и через какой метод либо через запрос либо через Тз. И как вывести проблемные места описаные мной
  6. рамиль
    Offline

    рамиль Опытный в 1С

    Регистрация:
    12 мар 2006
    Сообщения:
    595
    Симпатии:
    0
    Баллы:
    26
    начнем с того что по регистр у вас оборотный ,, а по нему остаток
    не получить.
  7. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Ок, тогда сейчас поменяю регистр оборотов на регистр остатков.

    Поменял на регистр остатков при проводении путевых листов изменил с Регист.ДвижениеВыполнить(), на Регистр.ПриходВыполнить, потому что расхода у меня нету. только приход,
    Если вам не трудно напишите кто нибудь код, таблицу я сам нарисую.
  8. рамиль
    Offline

    рамиль Опытный в 1С

    Регистрация:
    12 мар 2006
    Сообщения:
    595
    Симпатии:
    0
    Баллы:
    26
    Если движения только в сторону увеличения тогда вы правильно сделали регистр оборотным.
  9. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Тогда верну сейчас, регистр.Остатки с остатков в оборотный и опять поменяю в модуле на движениевыполнить.
  10. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Заметил что когда поменял регистры на остатки, и при добавлении в запрос функции например (конОст) тогда выводит данные регистра, а без функции не выводит, После смены Регистров на обороты, данные вообще не выводятся наверное из за неверное функции . Тогда как вывести данные при оборотном регистре.
  11. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Уважаемые, помогите создать отчет...или направьте кодом на правильный путь. Заранее всем спасибо, жду вашей помощи...
  12. рамиль
    Offline

    рамиль Опытный в 1С

    Регистрация:
    12 мар 2006
    Сообщения:
    595
    Симпатии:
    0
    Баллы:
    26
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Номенклатура = Регистр.Продажи.Номенклатура;
    |Поставщик = Регистр.Продажи.Поставщик;
    |Количество = Регистр.Продажи.Количество;
    |Функция КоличествоСумма = Сумма(Количество);
    |Группировка Номенклатура;
    |"//}}ЗАПРОС
  13. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Если возможно то можно на моем примере.

    Это я понимаю но у меня нету общего количества. которое нужно суммировать.
    А например как мне вывести значения регистра в запросе на даду создания запноса например спидометр начальный и он должен быть самым маленьким по каждой машине.....
  14. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Попробовал домабить КоличествоСумма, в оборотном регистре ,вывелись значения к примеру пробегЗамесяц.Только как быть с тем что например что то не нужно прибавлять а что то нужно.
  15. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Народ почему молчите....помогите человеку.
  16. TopicStarter Overlay
    SoK
    Offline

    SoK

    Регистрация:
    30 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Создал вот такой запрос:
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Водитель = Регистр.Остатки.асСотрудник;
    |Авто = Регистр.Остатки.асАвто;
    |ГосНомер=Регистр.Остатки.асАвто.ГосНомер;
    |ВидТоплива = Регистр.Остатки.асВидТоплива;
    |СпидометрНачальный = Регистр.Остатки.СпидометрНачальный;
    |СпидометрКонечный = Регистр.Остатки.СпидометрКонечный;
    |ОборудованиеТС = Регистр.Остатки.ОборудованиеТС;
    |РасходПоОборудованию = Регистр.Остатки.РасходПоОборудованию;
    |ПробегЗаМесяц = Регистр.Остатки.Пробег;
    |НормаПоАвто = Регистр.Остатки.НормаАвто;
    |ПоПутевкам = Регистр.Остатки.СколькоВыдано;
    |ОстатокНаНачало = Регистр.Остатки.ОстатокВБакеПоАвто;
    Какими методами сделать чтобы у меня При группировке по авто, Значения Спидометр начальный выбирался минимальный по определенному автомобилю с даты запроса, а спидометр конечный- максимальный по опред.авто по дату запроса.
    Потом чтобы норма по авто при группировке не суммировалась а оставалась неизменной.
    ПробегЗаМесяц суммировался.
    Расход по оборудованию тоже суммировался
    пока вроде всё.

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