Автор: 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