8.х как правильно создать запрос по регистру сведений

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем IDOL, 18 апр 2012.

  1. TopicStarter Overlay
    IDOL
    Offline

    IDOL

    Регистрация:
    8 июл 2010
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Необходимо по регистру у которого есть регистратор создать отчет где было бы Начальное количество документов по измерению регистратора Конечное количество и движение с чего начать и за что зацепиться у меня что-то получилось но как- то не корректно


    Код:
    "ВЫБРАТЬ
    ИтоговыйЗапрос.КоличествоПоставленныхНаУчет КАК КоличествоПоставленныхНаУчет,
    ИтоговыйЗапрос.КоличествоПоставленныхКонечный КАК КоличествоПоставленныхКонечный,
    ИтоговыйЗапрос.КоличествоПоставленныхВпервые КАК КоличествоПоставленныхВпервые,
    ИтоговыйЗапрос.КоличествоСнятыхСУчета КАК КоличествоСнятыхСУчета,
    ИтоговыйЗапрос.КоличествоНаНач КАК КоличествоНаНач,
    ИтоговыйЗапрос.КоличествоСнятыхВыздоровлению КАК КоличествоСнятыхВыздоровлению,
    ИтоговыйЗапрос.КоличествоСнятыхУбытию КАК КоличествоСнятыхУбытию,
    ИтоговыйЗапрос.КоличествоСнятыхСмерти КАК КоличествоСнятыхСмерти,
    ИтоговыйЗапрос.КоличествоСнятыхСнятПоИзмДУ КАК КоличествоСнятыхСнятПоИзмДУ,
    ИтоговыйЗапрос.Организация КАК Организация,
    ИтоговыйЗапрос.Подразделение КАК Подразделение,
    ИтоговыйЗапрос.Пациент КАК Пациент,
    ИтоговыйЗапрос.Участок КАК Участок,
    ИтоговыйЗапрос.Диагноз КАК Диагноз 
    {ВЫБРАТЬ
    Организация.* КАК Организация,
    Подразделение.* КАК Подразделение,
    Пациент.* КАК Пациент,
    Участок.* КАК Участок,
    Диагноз.* КАК Диагноз}
    ИЗ
    (ВЫБРАТЬ
    СУММА (1) КАК КоличествоПоставленныхКонечный,
    СУММА(ВложенныйЗапрос.КоличествоСнятыхСУчета) КАК КоличествоСнятыхСУчета,
    СУММА(ВложенныйНачальные.КоличествоНаНач) КАК КоличествоНаНач,
    СУММА(ВложенныйВпервые.КоличествоПоставленныхВпервые) КАК КоличествоПоставленныхВпервые,
    СУММА(ВложенныйВызд.КоличествоСнятыхВыздоровлению) КАК КоличествоСнятыхВыздоровлению,
    СУММА(ВложенныйУбытие.КоличествоСнятыхУбытию) КАК КоличествоСнятыхУбытию,
    СУММА(ВложенныйСмерти.КоличествоСнятыхСмерти) КАК КоличествоСнятыхСмерти,
    СУММА(ВложенныйИзмДУ.КоличествоСнятыхСнятПоИзмДУ) КАК КоличествоСнятыхСнятПоИзмДУ,
    СУММА(ВложенныйНаУчет.КоличествоПоставленныхНаУчет)  КАК КоличествоПоставленныхНаУчет,
    //ВложенныйЗапрос.Диагноз КАК Диагноз,
    ДиспансерныйУчет.Регистратор.Организация КАК Организация,
    ДиспансерныйУчет.Регистратор.ПодразделениеКомпании КАК Подразделение,
    ДиспансерныйУчет.Пациент КАК Пациент,
    ДиспансерныйУчет.Участок КАК Участок,
    ДиспансерныйУчет.Диагноз КАК Диагноз 
    
    ИЗ
    РегистрСведений.ДиспансерныйУчет КАК ДиспансерныйУчет
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ДиспансерныйУчет.Период КАК Период,
    ДиспансерныйУчет.Диагноз КАК Диагноз,
    ДиспансерныйУчет.Статус КАК  Статус,
    1 КАК КоличествоНаНач
    ИЗ
    РегистрСведений.ДиспансерныйУчет КАК ДиспансерныйУчет
    ГДЕ
    ДиспансерныйУчет.Период <= &ДатаНач
    И ДиспансерныйУчет.Статус = &Статус
    И ДиспансерныйУчет.Регистратор.СлучайОбращения.ЗаконченныйСлучай = Ложь)КАК ВложенныйНачальные
    ПО ДиспансерныйУчет.Диагноз = ВложенныйНачальные.Диагноз
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ДиспансерныйУчет.Период КАК Период,
    ДиспансерныйУчет.Диагноз КАК Диагноз,
    1 КАК КоличествоПоставленныхНаУчет
    ИЗ
    РегистрСведений.ДиспансерныйУчет КАК ДиспансерныйУчет
    ГДЕ
    ДиспансерныйУчет.Период Между &ДатаНач и &ДатаКон
    И ДиспансерныйУчет.Статус = &Статус )как ВложенныйНаУчет
    ПО ДиспансерныйУчет.Диагноз = ВложенныйНаУчет.Диагноз
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ДиспансерныйУчет.Период КАК Период,
    ДиспансерныйУчет.Диагноз КАК Диагноз,
    1 КАК КоличествоПоставленныхВпервые
    ИЗ
    РегистрСведений.ДиспансерныйУчет КАК ДиспансерныйУчет
    ГДЕ
    ДиспансерныйУчет.Период Между &ДатаНач и &ДатаКон
    И ДиспансерныйУчет.Статус = &Статус
    И ДиспансерныйУчет.Впервые = 1)как ВложенныйВпервые
    ПО ДиспансерныйУчет.Диагноз = ВложенныйВпервые.Диагноз
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    //ДиспансерныйУчет.Регистратор КАК Регистратор,
    ДиспансерныйУчет.Диагноз КАК Диагноз,
    ДиспансерныйУчет.Период КАК Период,
    1 КАК КоличествоСнятыхСУчета
    ИЗ
    РегистрСведений.ДиспансерныйУчет КАК ДиспансерныйУчет
    ГДЕ
    ДиспансерныйУчет.Период МЕЖДУ &ДатаНач И &ДатаКон
    И (НЕ ДиспансерныйУчет.Статус = &Статус)) КАК ВложенныйЗапрос
    ПО ДиспансерныйУчет.Диагноз = ВложенныйЗапрос.Диагноз
    ///СнятВызд
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ДиспансерныйУчет.Регистратор КАК Регистратор,
    ДиспансерныйУчет.Период КАК Период,
    1 КАК КоличествоСнятыхВыздоровлению
    ИЗ
    РегистрСведений.ДиспансерныйУчет КАК ДиспансерныйУчет
    ГДЕ
    ДиспансерныйУчет.Период МЕЖДУ &ДатаНач И &ДатаКон
    И (НЕ ДиспансерныйУчет.Статус = &Статус)
    и ДиспансерныйУчет.СтатусСнят = &Выздоровления)как ВложенныйВызд
    ПО ДиспансерныйУчет.Регистратор = ВложенныйВызд.Регистратор.ДокументОснование
    //СнятУбытия
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ДиспансерныйУчет.Регистратор КАК Регистратор,
    ДиспансерныйУчет.Период КАК Период,
    ДиспансерныйУчет.СтатусСнят как СтатусСнят,
    1 КАК КоличествоСнятыхУбытию
    ИЗ
    РегистрСведений.ДиспансерныйУчет КАК ДиспансерныйУчет
    ГДЕ
    ДиспансерныйУчет.Период МЕЖДУ &ДатаНач И &ДатаКон
    И (НЕ ДиспансерныйУчет.Статус = &Статус)
    и ДиспансерныйУчет.СтатусСнят = &СнятПоУбытию )как ВложенныйУбытие
    ПО ДиспансерныйУчет.Регистратор = ВложенныйУбытие.Регистратор.ДокументОснование
    //СнятСмерти
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ДиспансерныйУчет.Регистратор КАК Регистратор,
    ДиспансерныйУчет.Период КАК Период,
    ДиспансерныйУчет.СтатусСнят как СтатусСнят,
    1 КАК КоличествоСнятыхСмерти
    ИЗ
    РегистрСведений.ДиспансерныйУчет КАК ДиспансерныйУчет
    ГДЕ
    ДиспансерныйУчет.Период МЕЖДУ &ДатаНач И &ДатаКон
    И (НЕ ДиспансерныйУчет.Статус = &Статус)
    и ДиспансерныйУчет.СтатусСнят = &СнятПоСмерти ) как ВложенныйСмерти
    ПО ДиспансерныйУчет.Регистратор = ВложенныйСмерти.Регистратор.ДокументОснование
    ///Снят ИзмДУ
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ДиспансерныйУчет.Регистратор КАК Регистратор,
    ДиспансерныйУчет.Период КАК Период,
    ДиспансерныйУчет.СтатусСнят как СтатусСнят,
    1 КАК КоличествоСнятыхСнятПоИзмДУ
    ИЗ
    РегистрСведений.ДиспансерныйУчет КАК ДиспансерныйУчет
    ГДЕ
    ДиспансерныйУчет.Период МЕЖДУ &ДатаНач И &ДатаКон
    И (НЕ ДиспансерныйУчет.Статус = &Статус)
    и ДиспансерныйУчет.СтатусСнят = &СнятПоИзмДУ) как ВложенныйИзмДУ
    ПО ДиспансерныйУчет.Регистратор = ВложенныйИзмДУ.Регистратор.ДокументОснование
    ГДЕ
    ДиспансерныйУчет.Период <= &ДатаКон
    И ДиспансерныйУчет.Статус = &Статус
    СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Период,
    ВложенныйЗапрос.Регистратор,
    ВложенныйВызд.Регистратор,
    ВложенныйВызд.Период,
    ВложенныйВпервые.Период,
    ДиспансерныйУчет.Регистратор.Организация,
    ДиспансерныйУчет.Регистратор.ПодразделениеКомпании,
    ДиспансерныйУчет.Пациент,
    ДиспансерныйУчет.Участок,
    ДиспансерныйУчет.Диагноз) КАК ИтоговыйЗапрос
    {ГДЕ
    ИтоговыйЗапрос.Организация.* КАК Организация,
    ИтоговыйЗапрос.Подразделение.* КАК Подразделение,
    ИтоговыйЗапрос.Пациент.* КАК Пациент,
    ИтоговыйЗапрос.Участок.* КАК Участок,
    ИтоговыйЗапрос.Диагноз.* КАК Диагноз}
    {УПОРЯДОЧИТЬ ПО
    Организация.* КАК Организация,
    Подразделение.* КАК Подразделение,
    Пациент.*,
    Участок.*,
    Диагноз.*}
    ИТОГИ
    СУММА(КоличествоСнятыхСУчета),
    СУММА(КоличествоПоставленныхВпервые),
    СУММА(КоличествоПоставленныхНаУчет),
    СУММА(КоличествоСнятыхВыздоровлению),
    СУММА(КоличествоСнятыхУбытию),
    СУММА(КоличествоСнятыхСмерти),
    СУММА(КоличествоСнятыхСнятПоИзмДУ),
    Сумма(КоличествоПоставленныхКонечный)
    ПО
    ОБЩИЕ
    {ИТОГИ ПО
    Организация.* КАК Организация,
    Подразделение.* КАК Подразделение,
    Пациент.*,
    Участок.*,
    Диагноз.*}"
    Всего на тесте 5 документов и 1 закрыт а результат дает в 2 раза больше по некоторым критериям что не так?
  2. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    с пунктуацией точно что-то не так..
  3. TopicStarter Overlay
    IDOL
    Offline

    IDOL

    Регистрация:
    8 июл 2010
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    ошибки на синтаксис не выдает. Получается так что я беру все документы до даты начала Считаю их количество потом выбираю документы по виду движения и те которые не закрыты беру на конец только что то так как хотелось не получается некоторые документы считает по два раза может у меня подход не правильный что то я запутался как правильно во вложенном запросе поступить с чего начать????????
  4. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    проблемы с синтаксисом у вас, а не у платформы. ;)
  5. TopicStarter Overlay
    IDOL
    Offline

    IDOL

    Регистрация:
    8 июл 2010
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Это я понял просто может кто то подскажет как считаются документы за период
  6. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    не совсем понятно зачем считать количество документов за период? вы опишите задачу, а не то, что должен выполнить запрос, может все по другому делается...
  7. TopicStarter Overlay
    IDOL
    Offline

    IDOL

    Регистрация:
    8 июл 2010
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Задача такая. Учет количества пациентов в поликлиники на Д учете. Документ которым ставиться на Д учет пациент. И в нем проставляется день явок до момента снятия с учета. С учета пациент снимается документом на основание текущего. Ведется Регистр сведений в который записывается Строки Вид Документа (Постановка Д учет), Взят, Пациент,
    Измерения
    Пациент
    Диагноз
    Специалист
    Реквизиты
    Статус (Взят, Снят)
    Причина Снятия

    А отчет должен быть следующий:
    Диагноз | Количество на начало периода | Снято за период | Количество на конец периода
  8. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Нелогично организованы регистры. Надо было кол-во посещений считать регистром накопления, а не сведений. А это гемор какой-то

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