Версия для печати темы (https://pro1c.org.ua/index.php?s=54b84968e2b760697b1d926a55d96956&showtopic=20139)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Помогите с запросом

Автор: kosalex 08.10.14, 8:51

Добрый день! Есть два регистра сведений весовая1 и весовая2.

Период - Секунда
НомерВагона - Измерение,
Брутто - Ресурс

Нужно построить отчет и показать там время Перевесок и тарировок вагонов.

Колонки отчета:

НомерВагона|ДатаПрибытия|Перевеска1(Период)|УстановкаПоВыгрузку|......|Перевеска2(Период)|.....|Тарировка1(Период)|......|Тарировка2(Период)|...

Как понять из какой таблицы весовая1 или весовая2 брать "период"? Т.е. время когда произошла перевеска1,перевеска2,тарировка1,тарировка2?

Имею вот что: тыц

ВЫБРАТЬ
    ПростойВагона.НомерВагона,
    ПростойВагона.ПрибытияВагона,
    ПростойВагона.УстановкаПодВыгрузку,
    ПростойВагона.ОкончаниеВыгрузки,
    ПростойВагона.ПрибытиеДокументовПослеДекларирования,
    ПростойВагона.ПрибытиеИнструкцийВОтправкуПОРПВ,
    ПростойВагона.УстановкаПодПогрузку,
    ПростойВагона.ОкончаниеПогрузки,
    ПростойВагона.ПрибытиеДокументовПослеТаможирования,
    ПростойВагона.ВозвратПВстКраматорск,
    ПростойВагона.Ответственный
ПОМЕСТИТЬ ВТ_РСПростой
ИЗ
    РегистрСведений.ПростойВагона КАК ПростойВагона
ГДЕ
    ПростойВагона.Период >= &ДатаНачала
    И ПростойВагона.Период <= &ДатаОкончания
    И ПростойВагона.НомерВагона = &НомерВагона
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_РСПростой.НомерВагона,
    ВТ_РСПростой.ПрибытияВагона КАК ПрибытиеВагона,
    ПериодыПеревески.Перевеска1,
    РАЗНОСТЬДАТ(ВТ_РСПростой.ПрибытияВагона, ВТ_РСПростой.УстановкаПодВыгрузку, СЕКУНДА) / 3600 КАК ВремяДоУстановкиПодВыгрузку,
    ВТ_РСПростой.УстановкаПодВыгрузку,
    ВТ_РСПростой.ОкончаниеВыгрузки,
    РАЗНОСТЬДАТ(ВТ_РСПростой.УстановкаПодВыгрузку, ВТ_РСПростой.ОкончаниеВыгрузки, СЕКУНДА) / 3600 КАК ВремяВыгрузки,
    ПериодыТарировки.Тарировка_1,
    ВТ_РСПростой.ПрибытиеДокументовПослеДекларирования КАК ПрибытиеДокументовДекларирования,
    ПериодыТарировки.Тарировка_1 КАК Тарировка_2,
    ВТ_РСПростой.УстановкаПодПогрузку,
    РАЗНОСТЬДАТ(ВТ_РСПростой.ОкончаниеВыгрузки, ВТ_РСПростой.УстановкаПодПогрузку, СЕКУНДА) / 3600 КАК ВремяВОжиданииПогрузки,
    ВТ_РСПростой.ОкончаниеПогрузки,
    РАЗНОСТЬДАТ(ВТ_РСПростой.УстановкаПодПогрузку, ВТ_РСПростой.ОкончаниеПогрузки, СЕКУНДА) / 3600 КАК ВремяПогрузки,
    ПериодыПеревески.Перевеска2,
    ВТ_РСПростой.ПрибытиеДокументовПослеТаможирования КАК ВремяПрибытияДокументовТаможирования,
    ВТ_РСПростой.ПрибытиеИнструкцийВОтправкуПОРПВ КАК ПрибытиеИнструкции,
    ВТ_РСПростой.ВозвратПВстКраматорск КАК СдачаНаСтКраматорск,
    РАЗНОСТЬДАТ(ВТ_РСПростой.ПрибытияВагона, ВТ_РСПростой.УстановкаПодВыгрузку, СЕКУНДА) / 3600 + РАЗНОСТЬДАТ(ВТ_РСПростой.УстановкаПодВыгрузку, ВТ_РСПростой.ОкончаниеВыгрузки, СЕКУНДА) / 3600 + РАЗНОСТЬДАТ(ВТ_РСПростой.ОкончаниеВыгрузки, ВТ_РСПростой.УстановкаПодПогрузку, СЕКУНДА) / 3600 + РАЗНОСТЬДАТ(ВТ_РСПростой.УстановкаПодПогрузку, ВТ_РСПростой.ОкончаниеПогрузки, СЕКУНДА) / 3600 + РАЗНОСТЬДАТ(ВТ_РСПростой.ОкончаниеПогрузки, ВТ_РСПростой.ВозвратПВстКраматорск, СЕКУНДА) / 3600 КАК ВсегоЧасовПростоя
ИЗ
    ВТ_РСПростой КАК ВТ_РСПростой
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ВЫБОР
                КОГДА ВесоваяСевернаяСрезПоследних.Период > ЮжнаяЖДВесоваяСрезПоследних.Период
                    ТОГДА ВесоваяСевернаяСрезПоследних.Период
                ИНАЧЕ ЮжнаяЖДВесоваяСрезПоследних.Период
            КОНЕЦ КАК Тарировка_1,
            ЮжнаяЖДВесоваяСрезПоследних.НомерВагона КАК НомерВагона
        ИЗ
            РегистрСведений.ВесоваяСеверная.СрезПоследних КАК ВесоваяСевернаяСрезПоследних
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЮжнаяЖДВесовая.СрезПоследних КАК ЮжнаяЖДВесоваяСрезПоследних
                ПО ВесоваяСевернаяСрезПоследних.НомерВагона = ЮжнаяЖДВесоваяСрезПоследних.НомерВагона
        ГДЕ
            (ВесоваяСевернаяСрезПоследних.Брутто = 0
            И ВесоваяСевернаяСрезПоследних.Нетто = 0
            И ВесоваяСевернаяСрезПоследних.Тара > 0
                        И ВесоваяСевернаяСрезПоследних.НомерВагона = &НомерВагона)
            ИЛИ (ЮжнаяЖДВесоваяСрезПоследних.Брутто = 0
            И ЮжнаяЖДВесоваяСрезПоследних.Тара > 0
            И ЮжнаяЖДВесоваяСрезПоследних.Нетто = 0
            И ЮжнаяЖДВесоваяСрезПоследних.НомерВагона = &НомерВагона) КАК ПериодыТарировки

        ПО ВТ_РСПростой.НомерВагона = ПериодыТарировки.НомерВагона
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ВЫБОР
                КОГДА ВесоваяСевернаяСрезПоследних.Период > ЮжнаяЖДВесоваяСрезПоследних.Период
                    ТОГДА ВесоваяСевернаяСрезПоследних.Период
                ИНАЧЕ ЮжнаяЖДВесоваяСрезПоследних.Период
            КОНЕЦ КАК Перевеска1,
            ВЫБОР
                КОГДА ВесоваяСевернаяСрезПоследних.Период < ЮжнаяЖДВесоваяСрезПоследних.Период
                    ТОГДА ЮжнаяЖДВесоваяСрезПоследних.Период
            КОНЕЦ КАК Перевеска2,
            ВесоваяСевернаяСрезПоследних.НомерВагона КАК НомерВагона
        ИЗ
            РегистрСведений.ВесоваяСеверная.СрезПоследних(&Период, НомерВагона = &НомерВагона) КАК ВесоваяСевернаяСрезПоследних
                ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЮжнаяЖДВесовая.СрезПоследних(&Период, НомерВагона = &НомерВагона) КАК ЮжнаяЖДВесоваяСрезПоследних
                ПО ВесоваяСевернаяСрезПоследних.НомерВагона = ЮжнаяЖДВесоваяСрезПоследних.НомерВагона
        ГДЕ
            ЮжнаяЖДВесоваяСрезПоследних.Брутто > 0
            И ЮжнаяЖДВесоваяСрезПоследних.Тара > 0) КАК ПериодыПеревески
        ПО ВТ_РСПростой.НомерВагона = ПериодыПеревески.НомерВагона

Автор: Savcenko_Anton 31.10.14, 10:24

Так по условию

ВЫБОР
                КОГДА ВесоваяСевернаяСрезПоследних.Период > ЮжнаяЖДВесоваяСрезПоследних.Период
                    ТОГДА ВесоваяСевернаяСрезПоследних.Период
                ИНАЧЕ ЮжнаяЖДВесоваяСрезПоследних.Период
            КОНЕЦ КАК Тарировка_1

выбирается время тарировки и

ВЫБОР
                КОГДА ВесоваяСевернаяСрезПоследних.Период > ЮжнаяЖДВесоваяСрезПоследних.Период
                    ТОГДА ВесоваяСевернаяСрезПоследних.Период
                ИНАЧЕ ЮжнаяЖДВесоваяСрезПоследних.Период
            КОНЕЦ КАК Перевеска1,
            ВЫБОР
                КОГДА ВесоваяСевернаяСрезПоследних.Период < ЮжнаяЖДВесоваяСрезПоследних.Период
                    ТОГДА ЮжнаяЖДВесоваяСрезПоследних.Период
            КОНЕЦ КАК Перевеска2,

выбирается перевеска 1 и перевеска 2

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua