Здравствуйте Уважаемые.Прошу Вас помощи в создании отчета, с использованием регистров.
Начну всё по порядку: Имеется Один регистр: Регистр.Остатки - оборотный, который включает в себя:
Измерения:
асВидТоплива,
асАвто,
асСотрудник,
Контрагент,
ОборудованиеТС.
Ресурсы:
Пробег,
Горючее,
СколькоВыдано,
РасходПоОборудованию,
ОборудованиеЧасы,
ЧасовУКонтрагента,
Перерасход,
Общий,
СпидометрНачальный,
СпидометрКонечный,
ОстатокВБакеПоАвто,
ОстатокВБакеПоОборудованию,
НормаАвто.
Реквизитов в нём нет.
Движение по ним происходит в модуле путевого листа при процедуре Проведения, провожу движения методом:Регистр.Остатки.ДвиженияВыполнить()
Хочу сделать отчет который выводил бы данные в определенном периоде, который я выберу:
Наименование колонки откуда данные берутся в колонку.
--------------------------------------------------------------------------------------------------------------------------------------------------------
ФИО- рег.Остатки.асСотрудник,
----------------------------------------------------------------------------------------------------------------------------------------------------------
Авто рег.Остатки.АсАвто,
---------------------------------------------------------------------------------------------------------------------------------------------------------
Номер авто Думаю что можно взять с рег.Остатки.асАвто.ГосНомер
---------------------------------------------------------------------------------------------------------------------------------------------------------------
ВидТоплива рег.Остатки.асВидТоплива,
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Показания спидометра:
На начало месяца рег.Остатки.СпидометрНачальный,но если мы будем делать
группировку,то он должен быть неизменным и самым меньшим по
данному авто в выбранном периоде.
На конец месяца Рег.Остатки.СпидометрКонечный, тоже должен при группировке
быть самым большим по данному авто из выбранного периода.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Оборудование Рег.Остатки.ОборудованиеТС
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
РасходПоОборудованию Рег.Остатки.РасходПоОборудованию
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ПробегЗаВыбПериод рег.Остатки.Пробег
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
НормаНа100Км рег.Остатки.НормаАвто
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
СписаниеПоПутевкам рег.Остатки.СколькоВыдано
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Остаток на:
начало Месяца рег.ОстатокВБакеПоАвто должны получить данные на дату
Начала выбранного периода.
На Конец месяца рег.ОстатокВБакеПоАвто тоже должны получить данные конца
выбранного периода
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Вот вроде бы то что должно быть выведено изложил.
Только может предложите как это всё осуществить.
пробовал через запрос но выдодятся нули. пробовал через ТЗ, но в ней не придумал как это реализовать имеено чтобы значения при группировке не складывались и всё такое.
Кто посоветует что и как его построить.
Заранее Спасибо всем.
Жду ответа, если будут вопросы буду сразу же отвечать.
Ндаа , интересно. Вы практически предлагаете сделать за вас вашу работу.
Нет, я не предлагаю сделать просто для более детальности и ясности вопроса полностью всё описал, просто делаю через запрос у меня ничего не выходит выходит только шапка, не могу понять в чём дело. И при составлении например спидометра начального конечного остатка в баке на начала даты запроса у меня тоже загвоздка не могу понять как сделать всё.
Например, сейчас создал отчет ради примера:
вот код запроса
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|Водитель = Регистр.Остатки.асСотрудник;
|Авто = Регистр.Остатки.асАвто;
|ВидТоплива = Регистр.Остатки.асВидТоплива;
|СпидометрНачальный = Регистр.Остатки.СпидометрНачальный;
|СпидометрКонечный = Регистр.Остатки.СпидометрКонечный;
|ОборудованиеТС = Регистр.Остатки.ОборудованиеТС;
|РасходПоОборудованию = Регистр.Остатки.РасходПоОборудованию;
|ПробегЗаМесяц = Регистр.Остатки.Пробег;
|НормаПоАвто = Регистр.Остатки.НормаАвто;
|ПоПутевкам = Регистр.Остатки.СколькоВыдано;
|ОстатокНаНачало = Регистр.Остатки.ОстатокВБакеПоАвто;
|Группировка Водитель;
|"//}}ЗАПРОС
;
//Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей Водитель
Таб.ВывестиСекцию("Водитель");
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
ВыбКонПериода=?(РабочаяДата()>ПолучитьДатуТА(),ПолучитьДатуТА(),РабочаяДата());
ВыбНачПериода=НачМесяца(ВыбКонПериода);
в табличной части написал просто запрос.авто, чтобы он выдал мне автомобили. Но ничего не выводится.
Если есть телепаты со знанием 1С , то они вам помогут . А просто по тексту запроса , очень сложно найти ошибку. Дело даже не в том насколько правильно написан запрос , а насколько верно вы диагностируете ошибку.
Хорошо, тогда как мне быть с моим отчетом. который я описал . Что подскажите.
Цитата(рамиль @ 30.8.2007, 8:40)

Ндаа , интересно. Вы практически предлагаете сделать за вас вашу работу.
Тогда подскажите мне как и что сделать первым и через какой метод либо через запрос либо через Тз. И как вывести проблемные места описаные мной
начнем с того что по регистр у вас оборотный ,, а по нему остаток
не получить.
Ок, тогда сейчас поменяю регистр оборотов на регистр остатков.
Поменял на регистр остатков при проводении путевых листов изменил с Регист.ДвижениеВыполнить(), на Регистр.ПриходВыполнить, потому что расхода у меня нету. только приход,
Если вам не трудно напишите кто нибудь код, таблицу я сам нарисую.
Если движения только в сторону увеличения тогда вы правильно сделали регистр оборотным.
Тогда верну сейчас, регистр.Остатки с остатков в оборотный и опять поменяю в модуле на движениевыполнить.
Заметил что когда поменял регистры на остатки, и при добавлении в запрос функции например (конОст) тогда выводит данные регистра, а без функции не выводит, После смены Регистров на обороты, данные вообще не выводятся наверное из за неверное функции . Тогда как вывести данные при оборотном регистре.
Уважаемые, помогите создать отчет...или направьте кодом на правильный путь. Заранее всем спасибо, жду вашей помощи...
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Номенклатура = Регистр.Продажи.Номенклатура;
|Поставщик = Регистр.Продажи.Поставщик;
|Количество = Регистр.Продажи.Количество;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Номенклатура;
|"//}}ЗАПРОС
Если возможно то можно на моем примере.
Цитата(рамиль @ 30.8.2007, 10:12)

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