8.х Правельный запрос для отчета

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем zayaroslava, 12 июл 2010.

  1. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    Подскажите как написать правельный запрос для отчета:
    Есть данные:

    ВЫБРАТЬ
    Отчет_Планы.СтадияЗаказа,
    Отчет_Планы.ВремяОперации,
    Отчет_Планы.СтадияЗаказа2,
    Отчет_Планы.ВремяОперации2,
    Отчет_Планы.СтадияЗаказа3,
    Отчет_Планы.ВремяОперации3,
    Отчет_Планы.СтадияЗаказа4,
    Отчет_Планы.ВремяОперации4,
    Отчет_Планы.СтадияЗаказа5,
    Отчет_Планы.ВремяОперации5,
    Отчет_Планы.ЗаказНаПроизводство.Номер
    ИЗ
    Документ.ОтчетПроизводства.ТабличнаяЧастьПланы КАК Отчет_Планы
    ==============
    Необходимо суммировать Все "ВремяОперацииX"(задано в формате Дата) относительно "ЗаказНаПроизводство.Номер".т.е

    ЗакаПроизводства
    |
    |
    |
    |--ОбщееВремяОперации


    Вроде все просто,но нет знаний в области запросов в 1с =( ..подскажите как решить..
  2. DimkaAV
    Offline

    DimkaAV

    Регистрация:
    24 июн 2010
    Сообщения:
    43
    Симпатии:
    0
    Баллы:
    1
    Х.м... а как понимать - "ВремяОперацииX"(задано в формате Дата)" ?
  3. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    Несколько реквизитов в документе: ВремяОперации1,ВремяОперации2,ВремяОперации3 и.т.д.задано в формате Дата т.е xx.xx.xxxx вот их надо суммировать ... относительно др.реквизита Заказ..все эт для Отчета...я не знаю,может это можно как-то решить конструктором и ниче не писать руками...подскажите кто знает....
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    т.е у вас есть 2 поля

    01.04.2010
    25.04.2010

    Что должно быть суммой этих 2х полей?
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    "неправильно ты Дядя Федр, бутерброд ешь" (с) кот Матроскин

    ничего не мешает хранить в поле значения вида:

    01.01.0001 00:00:15
    01.01.0001 00:00:35
    ........................

    и уж их складывать/вычитать.....
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    вот такой формат был указан ....за что купил, за то продал
  7. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    Извините ошибся Формат: Время,а не Даты

    6:00:00
    7:00:00 и.т.д

    Попробывал сам начать с суммирования . написал след:
    =======
    ВЫБРАТЬ
    Отчет_Планы.ЗаказНаПроизводство,
    Отчет_Планы.ВремяОперации,
    Отчет_Планы.ВремяОперации2,
    СУММА(Отчет_Планы.ВремяОперации+Отчет_Планы.ВремяОперации2) КАК Общее
    ИЗ
    Документ.ОтчетРуководителяПроизводства.ТабличнаяЧастьПланы КАК ОтчетРуководителяПроизводстваТабличнаяЧастьПланы
    ========
    Невозможно вывести т.к. есть ошибка: {(5, 8)}: Неверные параметры "+"
    Не получилось,возник вопрос а в запросе вообще можно время суммировать ? или надо как-то разбивать на секунды и в секундах складывать?
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    можно и в часах суммировать, но агрегатная функция, однако, не умеет даты суммировать вообще никак
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Я былы лучще сделал так
    //добавил бы еще 2 поля


    ВЫБРАТЬ
    Отчет_Планы.СтадияЗаказа,
    Отчет_Планы.ВремяОперации,
    Отчет_Планы.СтадияЗаказа2,
    Отчет_Планы.ВремяОперации2,
    Отчет_Планы.СтадияЗаказа3,
    Отчет_Планы.ВремяОперации3,
    Отчет_Планы.СтадияЗаказа4,
    Отчет_Планы.ВремяОперации4,
    Отчет_Планы.СтадияЗаказа5,
    Отчет_Планы.ВремяОперации5,
    Отчет_Планы.ЗаказНаПроизводство.Номер,
    "Общее время" Как СТадияОбщегоВремеи,
    ЧАС(Отчет_Планы.ВремяОперации)+ЧАС(Отчет_Планы.ВремяОперации2)+ЧАС(Отчет_Планы.ВремяОперации3) КАК ОбщееВремя
    ИЗ
    Документ.ОтчетПроизводства.ТабличнаяЧастьПланы КАК Отчет_Планы

    и уже работал с ними, гляньте может так устроит. Ну еще бы там на естьNULL проверочку бы
  10. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    ========

    Не правильно считает когда время указано с минутами :

    не учитывает минуты т.е ВремяРперации1 = 3:30:00,а время Операции2 = 1:30 ...ваш запрос считает ОБщее = 4 часа....
    Возможно это исправить?
  11. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну на первый взгляд добавить еще одно поле с минутами
    ЧАС(Отчет_Планы.ВремяОперации)+ЧАС(Отчет_Планы.ВремяОперации2)+ЧАС(Отчет_Планы.ВремяОперации3) КАК ОбщееВремя
    МИНУТА(Отчет_Планы.ВремяОперации)+МИНУТА(Отчет_Планы.ВремяОперации2)+МИНУТА(Отчет_Планы.ВремяОперации3) КАК ОбщееВремяМинуты
  12. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    +) да..но как все это в одну колонку(переменную) запихнуть
  13. Korolev
    Offline

    Korolev Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    ну типа:
    Код:
    Время = Выборка.Час + ":" + Выборка.Минута;
    
    Хотя смотря как вы отчет делаете.. %)
  14. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Вот с этим то и надо голову поломать. Агрегатная же функция то же не знает как сложить минуты с часами? дело в том что 60 мин это + 1 часу уже и т.д.
  15. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    я вот не помню только, можно ли использовать остаток от деления в запросе? А так получается, сложить количество минут, потом разделить на 60, целую часть прибавить к часам, а остаток в минуты
  16. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    А как это все написать в запросе =)
    :unsure:
  17. duh
    Offline

    duh Опытный в 1С

    Регистрация:
    21 янв 2009
    Сообщения:
    74
    Симпатии:
    0
    Баллы:
    26
    Функция языка запросов РАЗНОСТЬДАТ предназначена для получения разницы между двумя датами.
    первый параметр - выражение типа Дата
    второй параметр - выражение типа Дата
    третий параметр - тип разности, одно из Секунда, Минута, Час, День, Неделя, Месяц, Квартал, Год, Декада, Полугодие.
  18. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    МНе нужна Сумма а не разность...
  19. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    остатка от деления нет в запросах, тогда надо просто делить и использовать ВЫРАЗИТЬ. Т.е., для примера, если допустим 200 минут, то получается

    Код:
    ВЫРАЗИТЬ(200/60 КАК ЧИсло(10,0)) КАК КоличествоЧасов
    
    
    дальше сам :)
  20. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    СпасИбоо!! получилось вот так :

    ВЫРАЗИТЬ((МИНУТА(Отчет_Планы.ВремяОперации) + МИНУТА(Отчет_Планы.ВремяОперации2) + МИНУТА(Отчет_Планы.ВремяОперации3)) /60 КАК ЧИсло(10,0)) + ЧАС(Отчет_Планы.ВремяОперации) + ЧАС(Отчет_Планы.ВремяОперации2) + ЧАС(Отчет_Планы.ВремяОперации3) КАК КоличествоЧасов
    ==============
    По ходу решения возник другой вопрос :
    Мне необходимо делать все эти вычесления только при условии,что Отчет_Планы.СтадияЗаказа = "Условие1" Пробывал такую конструкцию:
    ......
    ГДЕ
    Отчет_Планы.СтадияЗаказа = "Условие1"
    ----
    НЕ получается,
    пробывал так :

    ВЫБРАТЬ
    КОГДА Отчет_Планы.СтадияЗаказа = "Условие1" тогда

    Отчет_Планы.ЗаказНаПроизводство КАК НОмерЗАказа,
    Отчет_Планы.ВремяОперации,
    Отчет_Планы.ВремяОперации2,
    Отчет_Планы.ВремяОперации3,
    Отчет_Планы.ВремяОперации4,
    Отчет_Планы.ВремяОперации5,
    Отчет_Планы.СтадияЗаказа,
    (ВЫРАЗИТЬ((МИНУТА(Отчет_Планы.ВремяОперации) + МИНУТА(Отчет_Планы.ВремяОперации2) + МИНУТА(Отчет_Планы.ВремяОперации3)) / 60 КАК ЧИСЛО(10, 0))) + ЧАС(Отчет_Планы.ВремяОперации) + ЧАС(Отчет_Планы.ВремяОперации2) + ЧАС(Отчет_Планы.ВремяОперации3) КАК КоличествоЧасов
    Конец
    ИЗ
    Документ.ОтчетРуководителяПроизводства.ТабличнаяЧастьПланы КАК Отчет_Планы

    =====

    Подскажите как правильно прописать условаия отбора,если условаие это строка ?

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