Имя: Пароль:
1C
1С v8
отчет на СКД, выборка по документам "путевой лист".
,
0 ZiK
 
09.03.17
09:14
Простой отчет на СКД, выборка по документам "путевой лист". Начальный остаток должен браться из первого путевого, конечный остаток из последнего. В январе отработал идеально. В феврале не могу понять, что он выдает. В марте тоже нормально. Документы по одной машине пробовала полностью отменять и пересчитывать в правильном порядке, результата нет.
январь https://hostingkartinok.com/show-image.php?id=37ea42afdf85ceb639801a40c114ebdf
февраль https://hostingkartinok.com/show-image.php?id=ad1c836c0466f2f57cf3d46a67fb2a51
март https://hostingkartinok.com/show-image.php?id=b35b8abd42740a469d976c8667c3817b

Роли остатков начальный и конечный заданы. Не знаю в какую сторону еще копнуть.
1 PCcomCat
 
09.03.17
09:35
Остатки как достаете?
2 PCcomCat
 
09.03.17
09:36
В запросе данные сортируете как надо на выходе?
3 ZiK
 
09.03.17
09:40
(2) Да. В запросе сортировке стоит по дате выезда.
4 Windyhead
 
09.03.17
09:59
Путевой лист это регистратор?
5 ZiK
 
09.03.17
10:09
6 Windyhead
 
09.03.17
10:27
(5) где родительское поле периода? Выбери секунду. тыщу раз уже пережевана эта тема
7 ZiK
 
09.03.17
10:45
(6) пробовала. не получается.

https://hostingkartinok.com/show-image.php?id=67cca737561dd7b0d2221c0bddffb3a9

Возможно что-то не то делаю? в рарусовском отчете периоды начинаются с дня.
8 Масянька
 
09.03.17
10:54
(7) Остатки берет из регистра? Или путевки?
Было такое (только очень давно) - в регистре и путевке разные остатки (задним числом правили диспетчера).
9 ZiK
 
09.03.17
11:01
(8) Все берётся из путевых листов, так что не должно влиять исправление задним числом (наши тоже этим грешат)
10 Windyhead
 
09.03.17
11:13
(9)Показывай запрос
11 Windyhead
 
09.03.17
11:14
в (7) бред
12 ZiK
 
09.03.17
11:18
ВЫБРАТЬ
    СУММА(уатПутевойЛистРасходГСМ.ОстатокПриВозвращении) КАК ОстатокПриВозвращении,
    СУММА(уатПутевойЛистРасходГСМ.ОстатокПриВыезде) КАК ОстатокПриВыезде,
    СУММА(уатПутевойЛистРасходГСМ.РасходПоGPS) КАК РасходПоGPS,
    СУММА(уатПутевойЛистРасходГСМ.РасходПоНорме) КАК РасходПоНорме,
    СУММА(уатПутевойЛистРасходГСМ.РасходПоФакту) КАК РасходПоФакту,
    СУММА(уатПутевойЛистРасходГСМ.Сдано) КАК Сдано,
    уатПутевойЛистРасходГСМ.Ссылка,
    СУММА(уатПутевойЛистРасходГСМ.Выдано) КАК Выдано,
    ВЫБОР
        КОГДА уатПутевойЛистРасходГСМ.ТС.ВидМоделиТС = &Оборудование
                И ПОДСТРОКА(уатПутевойЛистРасходГСМ.ТС.ГаражныйНомер, 1, 4) ПОДОБНО "%" + уатПутевойЛистРасходГСМ.Ссылка.ТранспортноеСредство.ГаражныйНомер + "%"
            ТОГДА уатПутевойЛистРасходГСМ.Ссылка.ТранспортноеСредство
        ИНАЧЕ уатПутевойЛистРасходГСМ.ТС
    КОНЕЦ КАК ТС_,
    уатПутевойЛистРасходГСМ.ГСМ КАК ГСМ
ПОМЕСТИТЬ ТчРасходГСМ
ИЗ
    Документ.уатПутевойЛист.РасходГСМ КАК уатПутевойЛистРасходГСМ
ГДЕ
    уатПутевойЛистРасходГСМ.Активен

СГРУППИРОВАТЬ ПО
    уатПутевойЛистРасходГСМ.Ссылка,
    уатПутевойЛистРасходГСМ.ГСМ,
    ВЫБОР
        КОГДА уатПутевойЛистРасходГСМ.ТС.ВидМоделиТС = &Оборудование
                И ПОДСТРОКА(уатПутевойЛистРасходГСМ.ТС.ГаражныйНомер, 1, 4) ПОДОБНО "%" + уатПутевойЛистРасходГСМ.Ссылка.ТранспортноеСредство.ГаражныйНомер + "%"
            ТОГДА уатПутевойЛистРасходГСМ.Ссылка.ТранспортноеСредство
        ИНАЧЕ уатПутевойЛистРасходГСМ.ТС
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    уатПутевойЛист.Ссылка КАК ПутевойЛист,
    уатПутевойЛист.ТранспортноеСредство КАК ТС,
    уатПутевойЛист.ТранспортноеСредство.ГосударственныйНомер КАК ГосНомер,
    уатПутевойЛист.ТранспортноеСредство.ГаражныйНомер КАК ГарНомер,
    уатПутевойЛист.Водитель1 КАК Водитель,
    уатПутевойЛист.ДатаВыезда КАК ДатаВыезда,
    уатПутевойЛист.ДатаВозвращения КАК ДатаВозвращения,
    ВЫБОР
        КОГДА уатПраваИНастройки.Значение = 1
            ТОГДА 1
        ИНАЧЕ ВЫБОР
                КОГДА уатПраваИНастройки.Значение = 2
                    ТОГДА 2
                ИНАЧЕ ВЫБОР
                        КОГДА уатПраваИНастройки.Значение = 3
                            ТОГДА 3
                        ИНАЧЕ 0
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК Точность,
    уатПутевойЛист.ТранспортноеСредство.ШифрТоплива КАК ШифрТоплива,
    ВЫБОР
        КОГДА уатПутевойЛист.ТранспортноеСредство.Модель.НаличиеСпидометра
            ТОГДА "Автомобиль " + уатПутевойЛист.ТранспортноеСредство.ГаражныйНомер + ", " + уатПутевойЛист.ТранспортноеСредство.ГосударственныйНомер
        ИНАЧЕ "Строительно-дорожная машина " + уатПутевойЛист.ТранспортноеСредство.ГаражныйНомер + ", " + уатПутевойЛист.ТранспортноеСредство.ГосударственныйНомер
    КОНЕЦ КАК Автомобиль,
    уатПутевойЛист.ТранспортноеСредство.Модель.Наименование КАК Модель,
    СУММА(ТчРасходГСМ.ОстатокПриВозвращении) КАК ОстатокПриВозвращении,
    СУММА(ТчРасходГСМ.ОстатокПриВыезде) КАК ОстатокПриВыезде,
    СУММА(ТчРасходГСМ.РасходПоGPS) КАК РасходПоGPS,
    СУММА(ТчРасходГСМ.РасходПоНорме) КАК РасходПоНорме,
    СУММА(ТчРасходГСМ.РасходПоФакту) КАК РасходПоФакту,
    ТчРасходГСМ.ГСМ КАК ГСМ,
    СУММА(ТчРасходГСМ.Выдано) КАК Выдано,
    ТчРасходГСМ.ТС_ КАК ТС_,
    НАЧАЛОПЕРИОДА(уатПутевойЛист.ДатаВыезда, МИНУТА) КАК ПериодМинута
ИЗ
    Документ.уатПутевойЛист КАК уатПутевойЛист
        ПОЛНОЕ СОЕДИНЕНИЕ Документ.уатПутевойЛист.РасходГСМ КАК уатПутевойЛистРасходГСМ
        ПО уатПутевойЛист.Ссылка = уатПутевойЛистРасходГСМ.Ссылка
            И уатПутевойЛист.ТранспортноеСредство = уатПутевойЛистРасходГСМ.ТС
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.уатПраваИНастройки КАК уатПраваИНастройки
        ПО уатПутевойЛист.Организация = уатПраваИНастройки.Объект
            И (уатПраваИНастройки.ПравоНастройка = ЗНАЧЕНИЕ(ПланВидовХарактеристик.уатПраваИНастройки.ТочностьОстатковТоплива))
        ПОЛНОЕ СОЕДИНЕНИЕ ТчРасходГСМ КАК ТчРасходГСМ
        ПО уатПутевойЛист.Ссылка = ТчРасходГСМ.Ссылка
ГДЕ
    уатПутевойЛистРасходГСМ.Ссылка.Проведен
    И уатПутевойЛистРасходГСМ.Ссылка.Рассчитан
    И уатПутевойЛистРасходГСМ.Активен
    И уатПутевойЛист.ДатаВыезда МЕЖДУ &ДатаНачала И &ДатаКонца
    И (&ОтображатьВыбывшиеТС
            ИЛИ уатПутевойЛистРасходГСМ.ТС.ДатаВыбытия = ДАТАВРЕМЯ(1, 1, 1))

СГРУППИРОВАТЬ ПО
    уатПутевойЛист.Ссылка,
    уатПутевойЛист.ТранспортноеСредство,
    уатПутевойЛист.ТранспортноеСредство.ГосударственныйНомер,
    уатПутевойЛист.ТранспортноеСредство.ГаражныйНомер,
    уатПутевойЛист.Водитель1,
    уатПутевойЛист.ДатаВыезда,
    уатПутевойЛист.ДатаВозвращения,
    уатПутевойЛист.ТранспортноеСредство.ШифрТоплива,
    уатПутевойЛист.ТранспортноеСредство.Модель.Наименование,
    ВЫБОР
        КОГДА уатПутевойЛист.ТранспортноеСредство.Модель.НаличиеСпидометра
            ТОГДА "Автомобиль " + уатПутевойЛист.ТранспортноеСредство.ГаражныйНомер + ", " + уатПутевойЛист.ТранспортноеСредство.ГосударственныйНомер
        ИНАЧЕ "Строительно-дорожная машина " + уатПутевойЛист.ТранспортноеСредство.ГаражныйНомер + ", " + уатПутевойЛист.ТранспортноеСредство.ГосударственныйНомер
    КОНЕЦ,
    ТчРасходГСМ.ГСМ,
    ВЫБОР
        КОГДА уатПраваИНастройки.Значение = 1
            ТОГДА 1
        ИНАЧЕ ВЫБОР
                КОГДА уатПраваИНастройки.Значение = 2
                    ТОГДА 2
                ИНАЧЕ ВЫБОР
                        КОГДА уатПраваИНастройки.Значение = 3
                            ТОГДА 3
                        ИНАЧЕ 0
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ,
    ТчРасходГСМ.ТС_,
    НАЧАЛОПЕРИОДА(уатПутевойЛист.ДатаВыезда, МИНУТА)

УПОРЯДОЧИТЬ ПО
    ГСМ,
    ШифрТоплива,
    ТС_,
    ТС,
    ДатаВыезда


(11) Бред в чем?
13 ZiK
 
09.03.17
11:21
Кучу сортировок добавила уже сейчас, изначально было только по ДатеВыезда. Периоды были Минута, Час, День, Неделя, Декада, Месяц, Квартал, Полугодие, Год (по аналогии с рарусовским отчетом). Что с ними, что без них ничего не меняется.
14 Насон Грядущий
 
09.03.17
14:09
Если проблема проявилась только в одном месяце, может стоит обратить внимание на данные?
Например оставьте только одну машину (1003)
Отменяйте по очереди путевые листы (начните с 1392) пока не найдете документ который вызывает косяк - а дальше уже будет понятно что нужно исправить в запросе.
15 ZiK
 
09.03.17
14:31
(14) пробовала. Тогда начальный остаток 17, т.е. следующего путевого листа.  Такое ощущение, что не видит первые за месяц.   Возможно имеет значение то, что они выписаны заранее, но ведь это нигде не используется? И фактически таблица расхода ГСМ заполняется намного позже.
16 Масянька
 
09.03.17
14:46
(15) А если нарисовать простую выборку (без СКД) - за период вывести путевку, остаток на начало, остаток на конец?
17 ZiK
 
09.03.17
15:50
Если в консоли смотреть запрос, то документы идут в правильном порядке. Изначально в скд не было ролей начального и конечного остатка, а первое и последнее значение находились при помощи функции в общем модуле (первое - последнее значение массива) Результат был точно такой же.
18 Масянька
 
09.03.17
16:25
(17) Судя по всему, проблема в СКД.
19 ZiK
 
10.03.17
05:16
(18) И вариантов решения нет? Попробовала прикрутить остатки из регистров, фигня полная. Начальные остатки не введены были.
20 Тындр
 
10.03.17
05:36
(17) Почему бы не сделать один запрос для начальных остатков и один для конечных? Определяем дату самого первого документа в месяце минмумм()  затем смотрим в нем остаток. Плохо только то, что заранее нужно знать состав группировок. Ну тут я не уверен, что клиент очень хочет знать сколько 92 бенза было во всех машинах вместе. И с другой стороны, так как в одной машине только один бензин, то наверно можно смело складывать остатки по машинам даже если он этого хочет.
21 ZiK
 
10.03.17
06:26
(20) Ну как раз таки клиент очень хочет знать, сколько было всего 92-го и сколько осталось (а также 95-го, 98-го и ДТ). И еще сколько внутри группировок видов топлива по каждому шифру топлива. И на одной машине может быть два вида топлива (отопитель зачастую работает на отличном от основного). Или поехал в командировку и заправился другим. Этот отчет в основном для бухгалтерии, и, как они любят говорить "у нас математика должна сходиться".
Попробую отдельными запросами вытащить остатки...
22 Масянька
 
10.03.17
08:08
(19) Я бы все-таки навела порядок...
Начальные остатки не так сложно ввести. А потом работать с регистрами.
23 Тындр
 
10.03.17
09:44
(21) "Поехал в командировку и заправился другим" - да, неожиданно )) По фифо списывается? Какой кошмар.
24 ZiK
 
10.03.17
12:10
(23) Машинки есть хорошие, новые. Бензин по талонам по месту максимум 95, в командировках шикуют, 98 заправляют )))
25 ZiK
 
10.03.17
12:13
(23) А по поводу списывания - так нет же фактических остатков. Сколько пришло за месяц, столько и ушло, на начало 0 на конец 0. За путевку 100 литров залил, 100 потратил, с учетом проблем нет.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.