7.7 Запрос в отчете

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Irina3gger, 20 июл 2017.

  1. TopicStarter Overlay
    Irina3gger
    Offline

    Irina3gger

    Регистрация:
    20 июл 2017
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток. Очень нужна помощь разобраться с запросом в отчете.
    Суть в чем, есть Справочник.Объеты в каждом объекте есть ДоговорНаПроектирование - он только один, и может быть неограниченное количество ДопСоглашений.
    На данный момент в запросе (написанный предыдущем программистом) после формирования выводятся Даты начала проекта и окончания проекта из Справочника по объекту. Но мне нужно чтоб выводились даты из ДопСоглашений если они есть, а если их нет то пусть тянет из Справочника.
    Когда я пыталась сделать чтоб дата подтягивалась из Доп Соглашений, то она подтягивалась, но только подтягивалась именно то доп соглашение которое было оформлена с промежуток времени который я указываю перед началом оформления.
    Судя из того что я поняла то это проблема в запросе, но я знаю как правильно его написать, помогите пожалуйста.

    Вот модуль моего документа, помогите разабратся

    Процедура Сформировать()
    Таб = СоздатьОбъект("Таблица");
    СоздатьОбъект("Регистр.АктОбъемРабот");
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "
    |Период С НачПер По ОконПер;
    |ТекДок = Регистр.Обороты.ТекущийДокумент;
    |Документы = Регистр.Обороты.Документ;
    |СуммаДог = Регистр.Обороты.СуммаДог;
    |СуммаДопСогл = Регистр.Обороты.СуммаДопСогл;
    |_Объект = Регистр.Обороты.Объект;
    |Объект = Регистр.Обороты.Объект.Наименование;
    |Код = Регистр.Обороты.Объект.Код;
    |Заказчик = Регистр.Обороты.Объект.Заказчик;
    |Отдел = Регистр.Обороты.Объект.Отдел;
    |Стадия = Регистр.Обороты.Объект.Стадия;
    |Примеч = Регистр.Обороты.Объект.Прим;
    |Условие (Стадия.Код <> Строка(1));
    |Гип = Регистр.Обороты.Объект.Гип;
    |ИстФин = Регистр.Обороты.Объект.ИстФин;
    |Назначение = Регистр.Обороты.Объект.Назначение;
    |Район = Регистр.Обороты.Объект.Район;
    |Вотчет = Регистр.Обороты.Объект.Вотчет;
    |ПризнакПодпис = Регистр.Обороты.ПризнакПодпис;
    |Группировка Отдел Упорядочить По Отдел.Код;
    |Группировка Документы Упорядочить По Документы.ДатаДок;
    |Группировка Вотчет Упорядочить По Вотчет.Код;
    |Группировка Объект;
    |Группировка ТекДок;
    |Функция ОбщСуммаДог = Приход(СуммаДог);
    //|Функция ОбщСуммаДопСогл = Приход(СуммаДопСогл);
    |"
    ;
    Если ПустаяСтрока(ВНаим) <> 1 Тогда
    ТекстЗапроса = ТекстЗапроса+"Условие(Найти(Врег(Объект), Врег(СокрЛП(Внаим))) > 0);";
    КонецЕсли;
    Если ТекИстФин.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса+"Условие(ИстФин = ТекИстФин);";
    КонецЕсли;
    Если ТекЗаказчик.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса+"Условие(Заказчик = ТекЗаказчик);";
    КонецЕсли;
    Если ТекНазнач.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса+"Условие(Назначение = ТекНазнач);";
    КонецЕсли;
    Если ТекРайон.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса+"Условие(Район = ТекРайон);";
    КонецЕсли;
    Если ТекОтдел.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса+"Условие(Отдел = ТекОтдел);";
    КонецЕсли;
    Если ВывАрхив = 1 Тогда
    ТекстЗапроса = ТекстЗапроса+"Условие (ТекДок.Объект.Архив = Перечисление.Признак.Да);";
    КонецЕсли;
    Запрос.Выполнить(ТекстЗапроса);
    Таб.ВывестиСекцию("Маст");
    Таб.ВывестиСекцию("Шапка");
    Номер = 0;
    Прим = "";
    Пока Запрос.Группировка(1) = 1 Цикл
    Таб.ВывестиСекцию("Отдел");
    _СуммаДог = 0;
    Пока Запрос.Группировка(2) = 1 Цикл
    Пока Запрос.Группировка(3) = 1 Цикл
    Пока Запрос.Группировка(4) = 1 Цикл
    Прим = "";
    КолПодпис = 0;
    КолНеПодпис = 0;
    ДатаНеПодписАкт = "";
    ДатаПодписАкт = "";
    Пока Запрос.Группировка(5) = 1 Цикл
    Если Запрос.Документы.Вид() = "ДоговорНаПроектирование" Тогда
    СуммаДог = Запрос.СуммаДог;
    ДогДатаС = Запрос.Документы.НачПроект;
    ДогДатаПо = Запрос.Документы.ОконПроект;
    КонецЕсли;
    Если Запрос.Документы.Вид() = "ДопСоглашение" Тогда
    Если Запрос.Документы.Сумма <> 1 Тогда
    СуммаДог = Запрос.Документы.Сумма;
    КонецЕсли;
    //ДогДатаС = Запрос.Документы.ДатаСоставления;
    //ДогДатаПо = Запрос.Документы.ДатаПолучения;
    ДатаНачПлан = Запрос.Документы.НачПроект;
    ДатаОконПлан = Запрос.Документы.ОконПроект;
    Прим = "Доп. согл " + Запрос.Документы.НомерДоговора;
    КонецЕсли;
    КонецЦикла;
    Если ПустаяСтрока(Стоим) <> 1 Тогда
    Если Число(СуммаДог) > Число(Стоим) Тогда
    //Сообщить("1");
    Номер = Номер + 1;
    Таб.ВывестиСекцию("Данные");
    _СуммаДог = _СуммаДог + СуммаДог;
    КонецЕсли;
    Иначе
    //Сообщить("2");
    Номер = Номер + 1;
    Таб.ВывестиСекцию("Данные");
    _СуммаДог = _СуммаДог + СуммаДог;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.508
    Симпатии:
    533
    Баллы:
    204
    ДопСоглашение это подчиненный справочник ДоговорНаПроектирование или это периодический реквизит?
  3. TopicStarter Overlay
    Irina3gger
    Offline

    Irina3gger

    Регистрация:
    20 июл 2017
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    и у документ.ДоговорНаПроектирование,
    и у документ.ДопСоглашение есть Реквизит шапки под названием "Объект", который как я понимаю связан со Справочником Объект
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.508
    Симпатии:
    533
    Баллы:
    204
    телепатировать не видя структуры конфигурации.. это магия 5го уровня...
    в любом случае в запросе вы не увидите документов вне периода запроса.

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