1с табличный документ

Хотел написать красивую заметку в рубрику ‘Джуниор 1с’ о том, как в 1с работать с табличным документом под управляемые формы. Где на простом примере бы описал как создать макет, как его получить и заполнить его области и параметры, а затем вывести на форму в табличный документ. Но потом нашел у себя совершенно безумный отчет, который был сделан в оперативном режиме за 1 день (обычная задача, когда нужно срочно здесь и сейчас – и здесь уже приходиться жертвовать оптимизацией и здравым смыслом) и решил его взять за основу этой статьи. В конце статьи предоставлен отчет для скачивания!

Сложный макет отчета с группировками, детальными записями и итогами.

Итак, приведем основные шаги для успешного создания отчета с помощью табличного документа в 1с:

  • Создаем макет – тип табличный документ (создаем его у нужного объекта: отчета, внешнего отчета, обработки, справочника, внешний макет и т.д.);
  • В созданном макете описываем области и параметры этих областей. При необходимости указываем параметры расшифровки для ячеек;
  • В серверной функции создаем новый табличный документ, получаем созданный нами макет и производим его наполнение, с последовательным выводом информации в табличный документ. Из функции возвращаем табличный документ;
  • На форме создаем реквизит с типом ‘ТабличныйДокумент’ и выводим его на форму. Присваиваем ему полученное значение из вышеуказанной функции;
  • Наслаждаемся результатом.

Вкратце рассмотрим каждый этап.

Создаем наш макет табличного документа:

Конструктор макета.
Конструктор макета.

С помощью инструментов макета описываем его: создаем области, рисуем шапку, заполняем параметры и расшифровку:

Макет табличного документа.
Макет табличного документа.

Создаем на форме реквизит с типом ‘ТабличныйДокумент’, создаем команду формирования печатной формы и выводим все это дело на форму нашего отчета:

Форма отчета для вывода макета табличного документа.
Форма отчета для вывода макета табличного документа.

Отлично, теперь переходим непосредственного к самому программированию. В клиентской процедуре нашей команды прописываем отображение макета на форме и функцию, которая нам вернет готовый табличный документ с данными:

Самое интересно происходит здесь в процедуре ‘СформироватьНаСервере()’. Её полный код вы можете посмотреть в готовом отчете в конце этой статьи. Рассмотрим лишь основные её моменты.

Первое что мы должны сделать это создать новый табличный документ и получить наш макет:

Здесь важно понимать, как получить правильно макет. В данном примере таким способом получается макет внешнего отчета или обработки (РеквизитФормыВЗначение(“Объект”)). Макет у объекта конфигурации мы можем получить следующим образом:

Далее мы начинаем выводить области макета и отображать их в табличном документе:

Если есть необходимость то в полученной области мы заполняем параметры и расшифровку и только затем мы выводим область в табличный документ. В случае если будет заполнен параметр расшифровки, то по двойному щелчку в макете нам откроется значение расшифровки:

Заполнение параметров макета табличного документа.
Заполнение параметров макета табличного документа.

Вот таким вот образом мы шаг за шагом получаем данные и отображаем их в табличном документе.

Также дополнительно если мы хотим обеспечить сворачивание группы данных, как в макете на СКД, то для этого нам необходимо использовать методы табличного документа ‘НачатьГруппуСтрок’ и ‘ЗакончитьГруппуСтрок’:

Группировка строк в табличном документе.
Группировка строк в табличном документе.

Ну и в результате нашего алгоритма нам необходимо вернуть заполненный табличный документ, для отображении его на клиенте:

При необходимости указываем дополнительные параметры табличного документа и присваиваем его значение реквизиту формы. После чего автоматически обновится отображение на форме:

Отображение табличного документа.
Отображение табличного документа.

Если мы хотим вывести печатную форму отдельно вне формы, либо сохранить её на диск, то для этого достаточно использовать следующие методы макета: ‘Показать’ и ‘Записать’.

Как видите работать с табличным документом в 1с не сложно. С ним легко настроить любую печатную форму и сделать отчет. Конечно отчеты лучше сделать на системе компоновки данных, но если отчет сложный и тем более нет времени на СКД, то на помощь всегда придет макет табличного документа.

Отчет в данном примере сложный тем, что здесь собираются итоги по группировкам, которые в СКД мы с легкостью получили бы конструктором. Но на тот момент не было возможность сделать его через СКД, проще было набросать рабочее решение через макет.

Качайте отчет для примера! Но так как в нем описано получение данных и его вывод лучше не делать:). Возможно когда будет свободное время я его оптимизирую – а может быть и нет. Всем удачи! Пока!

Скачать файлыcraft1c_fin_AktSverkiSPodryadchikami.erf

Спонсор предоставленных материалов ютуб каналы Zona Комфорта и CRAFT1С! Подписывайся!

5+

4 комментария

  1. Кто-то из грота

    Отличная заметка!

    2+
  2. Users0

    неплохая заметка

    1+
  3. strange2007

    Добавьте описание сложных расшифровок. Эх… мне этого так не хватало в юности

    0
    1. Admin (Автор записи)

      Привет! Ок – могу даже отдельную заметку на эту тему сделать!

      0

Оставить комментарий

Ваш адрес email не будет опубликован.