8.х Флажки и запрос

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

Статус темы:
Закрыта.
  1. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если ФлажокОтпускПоУходуЗаРебёнком = Истина
    Тогда
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтпускПоУходуЗаРебенком.Номер КАК Номер,
    | ОтпускПоУходуЗаРебенком.Дата КАК Дата,
    | ОтпускПоУходуЗаРебенком.Организация КАК Организация,
    | ОтпускПоУходуЗаРебенком.Сотрудник КАК Сотрудник,
    | ""Отпуск по уходу за ребёнком"" КАК ВидОтпуска,
    | ОтпускПоУходуЗаРебенком.ДатаНачала,
    | ОтпускПоУходуЗаРебенком.ДатаОкончания,
    | ""-"" КАК КоличествоДней,
    | ""-"" КАК РабочийГодС,
    | ""-"" КАК РабочийГодПо,
    | ОтпускПоУходуЗаРебенком.Сотрудник.Должность КАК Должность,
    | ОтпускПоУходуЗаРебенком.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
    |ГДЕ
    | (ОтпускПоУходуЗаРебенком.ДатаНачала >= &ДатаНачала
    |	И ОтпускПоУходуЗаРебенком.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускПоУходуЗаРебенком.ДатаОкончания >= &ДатаНачала
    |	И ОтпускПоУходуЗаРебенком.ДатаОкончания <= &ДатаОкончания)
    | И ОтпускПоУходуЗаРебенком.Организация = &Организация";
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("Организация", Организация);
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    Иначе Если ФлажокЕжегодныйОтпуск = Истина
    Тогда
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация.Наименование КАК Организация,
    | ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия КАК ВидОтпуска,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    | ОтпускаОрганизацийРаботникиОрганизации.КоличествоДней,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС КАК РабочийГодС,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо КАК РабочийГодПо,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |ГДЕ
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия = &ЕжегодныйОтпуск
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Проведен
    | И НЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления
    | И (ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала >= &ДатаНачала
    |	И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания >= &ДатаНачала
    |	И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания)";
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", ЕжегодныйОтпуск);
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("ПометкаУдаления", );
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    
    Проблема в следующем: первый запрос выдает все хорошо, а, выбирая другой флажок, не выдает результат(
  2. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Код:
    Запрос = Новый Запрос;
    
    Если ФлажокОтпускПоУходуЗаРебенком Тогда
    Запрос.Текст = "ТекстЗапроса1"
    ИначеЕсли ФлажокЕжегодныйОтпуск Тогда
    Запрос.Текст = "ТекстЗапроса2"
    КонецЕсли;
    Запрос.УстановитьПараметр("")//Устанавливай параметры
    Результат = Запрос.Выполнить()
    
  3. AlbinaA
    Offline

    AlbinaA

    Регистрация:
    21 сен 2012
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Код:
    Запрос.УстановитьПараметр("ПометкаУдаления", );
    
    уберите эту строку..здесь похоже ошибка, так как второй параметр метода УстановитьПараметр является обязательным, а у вас он не задан.
  4. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    что-то не понимаю вас..)
  5. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Спасибо помогло)))
  6. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если ФлажокОтпускПоУходуЗаРебёнком = Истина
    Тогда
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтпускПоУходуЗаРебенком.Номер КАК Номер,
    | ОтпускПоУходуЗаРебенком.Дата КАК Дата,
    | ОтпускПоУходуЗаРебенком.Организация КАК Организация,
    | ОтпускПоУходуЗаРебенком.Сотрудник КАК Сотрудник,
    | ""Отпуск по уходу за ребёнком"" КАК ВидОтпуска,
    | ОтпускПоУходуЗаРебенком.ДатаНачала,
    | ОтпускПоУходуЗаРебенком.ДатаОкончания,
    | ""-"" КАК КоличествоДней,
    | ""-"" КАК РабочийГодС,
    | ""-"" КАК РабочийГодПо,
    | ОтпускПоУходуЗаРебенком.Сотрудник.Должность КАК Должность,
    | ОтпускПоУходуЗаРебенком.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
    |ГДЕ
    | (ОтпускПоУходуЗаРебенком.ДатаНачала >= &ДатаНачала
    |    И ОтпускПоУходуЗаРебенком.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускПоУходуЗаРебенком.ДатаОкончания >= &ДатаНачала
    |    И ОтпускПоУходуЗаРебенком.ДатаОкончания <= &ДатаОкончания)
    | И ОтпускПоУходуЗаРебенком.Организация = &Организация";
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускПоУходуЗаРебенком);
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    Иначе Если ФлажокЕжегодныйОтпуск = Истина
    Тогда
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация.Наименование КАК Организация,
    | ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия КАК ВидОтпуска,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    | ОтпускаОрганизацийРаботникиОрганизации.КоличествоДней,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС КАК РабочийГодС,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо КАК РабочийГодПо,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |ГДЕ
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия = &ЕжегодныйОтпуск
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Проведен
    | И НЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления
    | И (ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания)";
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускЕжегодный);
    Запрос.УстановитьПараметр("Организация", Организация);
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    Иначе Если ФлажокУчебныйОтпуск = Истина
    Тогда
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация.Наименование КАК Организация,
    | ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия КАК ВидОтпуска,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    | ОтпускаОрганизацийРаботникиОрганизации.КоличествоДней,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС КАК РабочийГодС,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо КАК РабочийГодПо,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |ГДЕ
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия = &ЕжегодныйОтпуск
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Проведен
    | И НЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления
    | И (ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания)";
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускУчебный);
    Запрос.УстановитьПараметр("Организация", Организация);
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    При выборе нескольких флажков необходимо вывести несколько результатов, помогите пожалуйста
  7. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Ну тогда просто вот такая рыба
    Код:
    Запрос = Новый Запрос;
    Если ФлажокОтпускПоУходуЗаРебенком Тогда
    Запрос.Текст = "ТекстЗапроса1"
    
    Запрос.УстановитьПараметр("")//Устанавливай параметры
    Результат = Запрос.Выполнить()
    ТабДок.Вывести();
    КонецЕсли;
    Если ФлажокЕжегодныйОтпуск Тогда
    
    Запрос.Текст = "ТекстЗапроса2"
    
    Запрос.УстановитьПараметр("")//Устанавливай параметры
    Результат = Запрос.Выполнить()
    ТабДок.Вывести();
    КонецЕсли;
    
  8. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    не получается, может потому что их три?
  9. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Покажите код
  10. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если ФлажокОтпускПоУходуЗаРебёнком
    Тогда
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтпускПоУходуЗаРебенком.Номер КАК Номер,
    | ОтпускПоУходуЗаРебенком.Дата КАК Дата,
    | ОтпускПоУходуЗаРебенком.Организация КАК Организация,
    | ОтпускПоУходуЗаРебенком.Сотрудник КАК Сотрудник,
    | ""Отпуск по уходу за ребёнком"" КАК ВидОтпуска,
    | ОтпускПоУходуЗаРебенком.ДатаНачала,
    | ОтпускПоУходуЗаРебенком.ДатаОкончания,
    | ""-"" КАК КоличествоДней,
    | ""-"" КАК РабочийГодС,
    | ""-"" КАК РабочийГодПо,
    | ОтпускПоУходуЗаРебенком.Сотрудник.Должность КАК Должность,
    | ОтпускПоУходуЗаРебенком.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком
    |ГДЕ
    | (ОтпускПоУходуЗаРебенком.ДатаНачала >= &ДатаНачала
    |    И ОтпускПоУходуЗаРебенком.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускПоУходуЗаРебенком.ДатаОкончания >= &ДатаНачала
    |    И ОтпускПоУходуЗаРебенком.ДатаОкончания <= &ДатаОкончания)
    | И ОтпускПоУходуЗаРебенком.Организация = &Организация";
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускПоУходуЗаРебенком);
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    КонецЕсли;
    Если ФлажокЕжегодныйОтпуск
    Тогда
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация.Наименование КАК Организация,
    | ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия КАК ВидОтпуска,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    | ОтпускаОрганизацийРаботникиОрганизации.КоличествоДней,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС КАК РабочийГодС,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо КАК РабочийГодПо,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |ГДЕ
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия = &ЕжегодныйОтпуск
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Проведен
    | И НЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления
    | И (ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания)";
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускЕжегодный);
    Запрос.УстановитьПараметр("Организация", Организация);
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    КонецЕсли;
    Если ФлажокУчебныйОтпуск
    Тогда
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация.Наименование КАК Организация,
    | ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия КАК ВидОтпуска,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    | ОтпускаОрганизацийРаботникиОрганизации.КоличествоДней,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС КАК РабочийГодС,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо КАК РабочийГодПо,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |ГДЕ
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия = &ЕжегодныйОтпуск
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Проведен
    | И НЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления
    | И (ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания)";
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускУчебный);
    Запрос.УстановитьПараметр("Организация", Организация);
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    КонецЕсли;
    
  11. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Ну смотрите - вы каждых раз - получает новый макет.
    Вынесете это за пределы проверки условия- т.е Вы получили макет, а затем от условий - начали в него выводить.
    А у Вас сейчас - есть условие - получили макет - вывели, затем - опять получили макет (то же самое что очистили) и опять заполнили и вывели. понимаете о чем я

    Просто строчку
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");

    Уберите ото всюду и поставьте в самом начале
  12. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    кажется, понимаю... сейчас попробую
  13. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Отпишитесь
  14. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    с макетом не получается никак, я думаю нужно вот тут мудрить
    Код:
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускПоУходуЗаРебенком);
    можно ли установить несколько параметров, тоесть ежегодный отпуск и по уходу..?

    а, и еще, если с макетом и получится, то придется каждый раз отчет перезапускать, он и должен обновляться при выборе другого флажка, потому что их и снимать можно, я так думаю
  15. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    В каждом цикле после заполнения макета добавь
    ТабДок.Показать() и у тебя при каждом условии, если 2 галки, например,стоит он заполнит и выведет 2 макета

    на счет нескольких условий сделай в запрос:
    Код:
    "| ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия В (&ЕжегодныйОтпуск)
    Код:
    ЕжегодныйОтпуск = Новый СписокЗначений();
    ЕжегодныйОтпуск.Вставить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускПоУходуЗаРебенком);
    ЕжегодныйОтпуск.Вставить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ЕжегодныйОтпуск);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск",ЕжегодныйОтпуск );
    
    на коленке написал, но должо сразу сработать
  16. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    на "вставить" ругается
  17. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Не вставить, а Добавить()
  18. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    наконец-то всё получилось, всем огромное спасибо... Сейчас найду где плюсануть)))
Статус темы:
Закрыта.

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