1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-24 08:02:20 +02:00
1c-homeworks/homework-6-3.md
2020-09-29 10:05:05 +03:00

5.9 KiB

Задание к занятию "Итоги и группировки"

Задача "Реестр документов Поступление"

Описание задачи

Создать внешнюю обработку РеестрДокументовПоступление. Обработка формирует и выводит на экран Текстовый документ с перечнем документов Поступление за указанный период. Возможные итоги регулируются настройками обработки.

Требования к результату

Прикрепить .epf файл внешней обработки для формирования реестра документов Поступление. Выгрузить базу в .dt файл и прикрепить в качестве результата.

Процесс выполнения

  1. Использовать файл *.cf конфигурацию из прошлого задания.
  2. Создать общий макет РеестрДокументовПоступление. Тип макета - текстовый документ. В макете добавить области:
    • Для вывода периода формирования реестра;
    • Для вывода детальных записей по документам Поступление. Выводить данные по ссылке документа, контрагенту и сумме документа;
    • Для возможности отображения итогов по контрагенту и общих итогов. Итоги выводить после детальных записей. Если в обработке указана возможность выводить итоги по контрагенту и детальные записи, то в детальных записях по документам должен контрагент отсутствовать. Общие итоги выводятся в конце отчета
  3. Создать внешнюю обработку РеестрДокументвоПоступление, в которой:
    • Добавить реквизиты формы:
      • ДатаС и ДатаПо - тип дата. Разместить на форме в виде полей для выбора даты;
      • ДетальныеЗаписи, ИтогиПоКонтрагенту и ОбщиеИтоги - тип булево и разместить на форме в виде флажков;
    • Добавить команду Реестр и соответствующую кнопку разместить на форме;
    • Для команды перекрыть действие в котором реализовать:
      • если на форме не выбран ни один флажок, то возврат и вывести подходящее сообщение;
      • создать объект Запрос;
      • анализировать значения реквизитов периода для формирования строки условия запроса. Например если ДатаС не заполнена, а ДатаПо заполнена пишем в строковую переменную
        "ГДЕ Документ.Дата <=&ДатаПо". Также рассмотреть варианты когда обе даты не заполнены, обе даты заполнены или заполнена только ДатаС. Строку условия записываем в
        переменную для конкатенации со строкой общего запроса;
      • в этой же проверке устанавливаем используемые параметры для запроса. Например - для случая выше устанавливаем параметр только для ДатаПо -
        Запрос.УстановитьПараметр("ДатаПо", КонецДня(ДатаПо));
      • создать текст запроса, который может быть в двух вариантах. Проверяем условием. Если установлен параметр ДетальныеЗаписи, формируем текст запроса в виде итогов по
        детальным записям. При установленном флажке ИтогиПоКонтрагенту добавляем в текст запроса итоги по контрагенту. Если установлен флажок ОбщиеИтоги, добавляем в текст итоги по ОБЩИЕ. Второй вариант текста запроса - если не установлен флажок ДетальныеЗаписи, а установлен ИтогиПоКонтрагенту, то формировать текст запроса в виде
        группировки по контрагенту. При этом если установлен флажок ОбщиеИтоги, то добавлять в текст итоги по ОБЩИЕ;
      • Сделать в нужном месте (где применяется условие) операцию конкатенации строки запроса с переменной, которая содержит сформированную строку с условием по датам;
      • выполнить обработку данных и вывод в макет;
      • создать документы Поступление в системе различными датами и протестировать корректный вывод макета на экран;