1С вывод иерархии в табличный документ

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

  1. Подготовка макета
  2. Вывод отчета

На первом этапе построитель формирует макет, в котором располагает необходимые области, настраивает параметры, настраивает оформление.

Пример сгенерированного макета показан на рисунке 1.

Рисунок 1. Пример автоматически сгенерированного макета.

Для каждого измерения, участвующего в отчете, построитель создаст в макете область с именем, соответствующим имени измерения. Для иерархических измерений построитель также создаст области для вывода иерархии измерения с именем, состоящим из имени измерения плюс слово "Иерархия" ("Hierarchy"). Например, для вывода иерархических строк измерения "Номенклатура" будет создана область с именем "НоменклатураИерархия". Для вывода детальных записей построитель сгенерирует область с именем "Детали" ("Details"). Для вывода заголовка отчета будет создана область с именем "Заголовок" ("Header"). Для вывода подвала отчета будет создана область с именем "Подвал" ("Footer"). Для вывода шапки таблицы будет создана область с именем "ШапкаТаблицы" ("TableHeader"). Для вывода подвала таблицы будет создана область с именем "ПодвалТаблицы" ("TableFooter").

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

До тех пор, пока свойству построителя отчета "Макет" не установлено какое-либо значение, построитель автоматически генерирует макет при выводе отчета или чтении этого свойства. После установки свойству "Макет" любого макета построитель перестает автоматически создавать макеты. Для возобновления автоматического создания макета необходимо присвоить свойству "Макет" значение Неопределено.

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

Для установки макета целиком необходимо установить значение свойству "Макет".

Пример установки макета целиком:

В случае если имена областей соответствуют именам, принятым в построителе, никаких дополнительных настроек не требуется. В случае если имена отличаются, необходимо сообщить построителю о новых именах областей. Например, если область заголовка отчета в устанавливаемом макете имеет имя "ЗаголовокОтчетаОПродажах", то нам необходимо установить это имя в свойстве построителя "МакетЗаголовкаОтчета" ("ReportHeaderTemplate").

При установке отдельных частей макета следует заполнить соответствующие свойства требуемыми макетами.

Пример установки внешнего макета показан во внешней обработке rbempl.epf.

Все внешние обработки, описанные в данном разделе, находятся в каталоге 1CITSEXERBSample

ВЫ МОЖЕТЕ ПРЯМО СЕЙЧАС СКОПИРОВАТЬ ОБРАБОТКИ С ПРИМЕРАМИ
НА ЖЕСТКИЙ ДИСК ВАШЕГО КОМПЬЮТЕРА

alex81nzp
19.01.2012 14:26
Прочитано: 26230
Здравствуйте!
Никак не могу разобраться, как в табличном документе, который создается на основе "Макета табличного документа", организовать Группировки.
Есть такой код:
Код 1C v 8.х
и собственно сам макет

Чего не хватает, чтобы все группировалось по Подразделению?

Yandex
Возможно, вас также заинтересует
E_Migachev
19.01.2012 15:20
Ответ № 1
(0) alex81nzp, сделай проще:
1. скоприруй код запроса
2. зайди в конфигуратор и создай новый отчет
3. Используй конструктор печати
4. в нем укажи этот запрос и вывод в табл документ
5. смотри получившийся код *13
alex81nzp
20.01.2012 09:39
Ответ № 2
Спасибо за подсказку, но результат меня не устроил, фактически получилось тоже самое за исключением вот этого кусочка:
Код 1C v 8.х

Нужно чтобы получилось вот такой структуры (взято из настроек Произвольных отчетов):

Подразделение организации (Иерархия)
Должность, Количество, Ставка

То что формируется через запрос в консоли отчетов меня устраивает, но не устраивает того для кого это делается! Потому и начал рыть в макетах. Ситуация осложняется еще и тем, что справочник подразделений имеет сложную структуру, т.е. например "1 цех" имеет глубину вложений 2, а именно:
Например:
1 цех
— Бухгалтерия
— Служба ИТ
— — Отдел по работе с пользователями
— — Еще какой-нибудь отдел
— — — какая-нибудь группа
и т.д.

в итоге при печати того же Штатного расписания, нужно чтобы в качестве группы шло название Цеха, а внутри вся его структура.
1 цех
— Бухгалтерия
. Бухгалтер, 3 шт., 10000 руб.
— Служба ИТ
— — Отдел по работе с пользователями
. Лоботряс, 10 шт., 5000 руб.
— — Еще какой-нибудь отдел
— — — Какая-нибудь группа
. Бездельник, 1, 3000 руб.

Вот как-то так Вопрос остается открытым Изменено 20.01.12 09:41:18

E_Migachev
20.01.2012 10:41
Ответ № 3
(2) alex81nzp, я правильно понял? — тебе нужено чтобы у каждого внутреннего подразделения ставился отступ больше чем у предудущего?
alex81nzp
23.01.2012 07:02
Ответ № 4
(3) E_Migachev, тут дело не в отступах, попробуйте сделать запрос в консоли отчетов из первого поста, с вот такой настройкой:

Подразделение организации (Иерархия)
Должность, Количество, Ставка

Результат выполнения запроса:

Вот в макете (в области данных) должно быть так же сгруппировано

Поля "Категория персонала" в Вашей конфигурации нет, не обращайте на него внимание.
2 раза 14 цех потому,что так занесено в штатном (в корень цеха)

Наверное так понятнее будет.

E_Migachev
24.01.2012 11:12
Ответ № 5
(4) alex81nzp, все-равно как-то не ясно что хочешь*09, сделай тот же запрос через конструктор и будет то же самое или в СКД.
alex81nzp
24.01.2012 13:42
Ответ № 6
(5) E_Migachev, Простите, самое главное то я и не написал *12

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

Обход результата запроса по группировкам доступен при использовании конструкции Итоги по языка запросов.

При этом итоговые поля (суммы, количество), могут отсутствовать — производится просто группировка по нужным полям, либо по общим итогам — служебное поле «ОБЩИЕ»( флажок «Общие итоги»)

Конструктор запроса

Группировка добавляется на вкладке «Итоги», обратите внимание на флажок «Общие итоги», здесь же можно задать функцию итогов.

Не стоит путать функции группировки на вкладке «Группировки» с вкладкой «Итоги» (в общем случае для получения итогов группировка может не производится, либо производится по другому полю и с использованием другой функции) — это расчет итоговых показателей над готовой выборкой, а не группировка входных данных.

Не стоит использовать итоги, если в этом нет необходимости:

  • это замедляет выполнение запроса
  • при выборке доступны все поля запроса, но значение незадействованных на вкладке полей равно «Неопределено», что может быть не верно истолковано в процессе отладки и работы

Для использования механизма сводной таблицы платформы

  • наоборот обязательно необходимы итоги запроса (определяет доступные поля группировки и ресурсы) иначе конструктор сводной таблицы будет пустым

В тексте запроса конструкция находится в нижней части:

Группировки могут быт вложенные, поэтому для выборки из запросов необходимо последовательно вызывать метод Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам).

Последняя группировка будет данными выборки, для которой вызов идет без параметра, либо с параметром ОбходРезультатаЗапроса.Прямой (по умолчанию).

Для примера, вывод результата произведем в табличный документ.

Чтобы вывести группировки в табличном документе, воспользуемся методом НачатьАвтогруппировкуСтрок(). После завершения вывода вызывается ЗакончитьАвтоГруппировкуСтрок() иначе группировка не сработает. Уровень группировки определяет второй параметр метода Вывести() табличного документа

Пример кода

Результат будет выглядеть вот так:

Для того, чтобы свернуть табличный документ можно вызывать метод ПоказатьУровеньГруппировокСтрок( )

Ни одно, даже самое верное дело не двигается без рекламы… Обычно думают, что надо рекламировать только дрянь,- хорошая вещь и так пойдет. Это самое неверное мнение. Реклама — это имя вещи… Реклама должна напоминать бесконечно о каждой, даже чудесной вещи… Думайте о рекламе!»

— В.В. Маяковский , Статья «Агитация и реклама»

Оцените статью
Много толка
Добавить комментарий