8.х внешний отчет

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

  1. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, хотел поинтересоваться. Создаю внешний отчет по двум запросам, нужно организовать выбор одного запроса если ... и выбор второго если... можно ли так задать в самом модуле отчета? И если да подскажите как, заранее премного благодарен
  2. Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    684
    Симпатии:
    7
    Баллы:
    29
    с помощью СКД создаете?
  3. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

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

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

    Регистрация:
    26 мар 2011
    Сообщения:
    2.174
    Симпатии:
    13
    Баллы:
    29
    и в чем проблема ?
    Если условие тогда
    ТексЗапроса=бла бла бла
    иначе текстзапроса=бла бла бла 2
    конецесли
  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. Dmitriy_76
    Offline

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

    Регистрация:
    26 мар 2011
    Сообщения:
    2.174
    Симпатии:
    13
    Баллы:
    29
    а где ТабДок.Показать() ?
  8. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    все, разобрался, маленький недочет на форме был...
  9. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    покажите пожалуйста пример с элементами формы(флажки), не могу организовать с ними работу. Дополнительно для этого требуется список значений или я что-то перепутал?
  10. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Форма обычная или управляемая?
    Флажки просто на форме или в таблице?
    Если в таблице, то это просто таблица на форме или она связана с табличной частью?
  11. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    форма которая во внешнем отчете создается, обычная кажется, флажки просто на форме..
  12. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Просто добавляете флажок на форму (меню Форма - Вставить элемент управления - Флажок). Тип данных - Булево.
    И все. Можете читать или устанавливать значение этого реквизита. Истина - флажок установлен, Ложь - сброшен.

    Вложения:

  13. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    не много не то, но все равно благодарен....
  14. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Ну, каков вопрос

    таков и ответ. :smile:
    Пример работы с флажками я показал :))

    Тем более перед этим задавал наводящие вопросы ))

    Уточняйте вопрос.
    Будет более уточненный ответ :)
  15. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    На форме несколько флажков, если значение истина, то ПолеСписка(являющийся списком значений) получить значение этого флажка(одного или нескольких), после необходимо вывести значения полученные в ПолеСписка в результат отчета макета.. вроде так
  16. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Может, я туплю под конец дня, но я ничего не понял )
  17. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

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

    Вложения:

    • 234.PNG
      234.PNG
      Размер файла:
      18,7 КБ
      Просмотров:
      50
    • 324.PNG
      324.PNG
      Размер файла:
      17,9 КБ
      Просмотров:
      53
  18. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Например, так:

    Код:
    Процедура ФлажокУчебныйОтпускПриИзменении(Элемент)
    
    Если ФлажокУчебныйОтпуск Тогда
    ЭлементыФормы.ТабличноеПоле.Значение.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускУчебный);
    Иначе
    НайденноеЗначение = ЭлементыФормы.ТабличноеПоле.Значение.НайтиПоЗначению(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускУчебный);
    ЭлементыФормы.ТабличноеПоле.Значение.Удалить(НайденноеЗначение);
    КонецЕсли;
    
    КонецПроцедуры
    
    [off]Немного нерационально, конечно, многократное обращение через точку :)), но главное - суть ))[/off]
    Но если все это выводится в отчет, надо ли предварительно значения выводить в поле списка?
    Можно сразу формировать отчет, анализируя значения самих флажков.
    Разве только, что этот список нужен еще для чего-то...
  19. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

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

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