alex81nzp
19.01.2012 14:26

Прочитано: 25753
Здравствуйте!
Никак не могу разобраться, как в табличном документе, который создается на основе "Макета табличного документа", организовать Группировки.
Есть такой код:
Код 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

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

Система компоновки данных в 1С (СКД) позволяет настраивать предопределенные макеты отчета скд.

В СКД существует четыре типа предопределенных макетов:

· Макет заголовка группировки;

Подробное описание этих макетов можно посмотреть по ссылке https://its.1c.ru/db/metod8dev/content/1811/hdoc.

Представлю краткое описание этих макетов:

1. «Макет поля» используется для оформления конкретных полей. Тут все просто. Берем поле, указываем ячейку и оформляем ячейку в нужном формате.

2. «Макет группировки» имеет несколько типов: «Заголовок», «Подвал», «Заголовок иерархии» и т.п. Он используется для оформления группировок (для заголовка группировки есть отдельный тип макета).

Если вдуматься, то тоже — довольно простой макет. Для макета группировки нужно указать либо имя группировки отчета, либо список оформляемых полей. Тип макета группировки обозначает область группировки, к которой применяется оформление (Заголовок, подвал, Заголовок иерархии и т.п.)


3. «Макет заголовка группировки». Содержит такие же типы, как и макет группировки, только используется для оформления заголовка группировок отчета, в то время как «Макет группировки» используется для оформления самих группировок.

4. «Макет ресурсов». Используется для оформления ресурсов группировок.

Настройки, которые можно сделать с помощью предопределенных 1С СКД макетов:

1. Настройка заголовка и подвала отчета.

2. Настройка оформления полей и группировок отчета.

3. Настройка макета заголовка отчета.

Рассмотрим эти настройки на примере.

1. Настройка заголовка и подвала отчета

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

Сделать это довольно просто с помощью «макета группировки».

Для примера сделаем отчет 1С:УТ 11 по заказам клиентов. Он будет выводить данные по выполнению заказов.

Имеем вот такой вариант отчета:


Нужно в отчет добавить заголовок и подвал.

Для этого добавим две группировки в 1С СКД макет: «Заголовок» и «Подвал».

Для корректного отображения нужно:

· Из новых группировок убрать «автополе», чтобы не выводились данные в этих группировках.

· В шаблоне текста «Заголовка» указать выводимые параметры периода, а в выражениях 1С макета параметрах настроить нужный формат дат.

· Ширину заголовка лучше задать до нормального вида.

· И для новых группировок выставить специальный 1С макет оформления «Без оформления». Это нужно, чтобы штатные настройки оформления не пересекались с текущими.

Настройка Заголовка выглядит так:

Получился такой вариант:

Настроим подвал. Тут настройка еще проще:

В итоге мы получили настроенный заголовок и подвал в отчете СКД.

2. Настройка оформления полей и настройка группировок отчета

Теперь настроим поля и проведем настройку группировки отчета.

Поле контрагента сделаем выделенным и добавим сведения из дополнительной информации карточки контрагента 1С.

Для этого настроим макет поля для «ЗаказКлиента.Контрагент» следующим образом. Высоту сделаем в две строки. Второй строкой выводим дополнительную информацию контрагента.

То есть через «Макет поля» можно настраивать выражения в практически любом виде.

Попробуем сделать тоже самое с макетом группировки.

Настроим группировку строк с Заказами клиентов. Добавим макет группировки для группы «ГруппаЗаказов»

В текущей настройке в заказе клиента исправлено представление номера и даты, также добавлен оборот заказа клиента (Приход-Расход).

К складу добавлен вывод типа склада.

В итоге получаем вот такой результат (немного уехала шапка, но это мы исправим позже):

3. Настройка заголовка группировки

Добавим макет заголовка группировки. Настроим формат заголовка группировки в нужном нам виде. Например, вот так:

Получился вот такой заголовок основной группировки отчета:

Названия группировок были заданы в 1С СКД настройках для Основного варианта.

В итоге с помощью настройки макетов мы изменили отчет с такого вида:

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

Столкнулся давеча с проблемой: есть печатная форма с макетом табличного документа (далее макет), из которого собирается результирующий ТабДок (далее результат). В макете задана сложная иерархия группировок колонок, при этом количество колонок результата не увеличивается, т.е. результат растёт только в длину (например, добавляются строки табличной части), а ширина ограничена шириной заранее нарисованного макета. В связи с этим стоит логичный вопрос о том, как вывести в результат заданные в макете группировки . Наверняка многие знают, что если просто выводить области макета в результат, то группировки, будут теряться. А программно прописывать уровни для каждой колонки и выводить их по отдельности в цикле, в данном случае абсолютно лишено необходимости.

Значит, пришло время стряхивать пыль с бубна и каким-то образом задабривать богов 1С.

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

Далее работающий код с подробными комментариями. Во вложении обработка с примерами макетов и этим самым кодом.

Процедура КнопкаВыполнитьНажатие ( Кнопка )

Макет = ПолучитьМакет ( "Макет" );

ОбластьШапка = Макет . ПолучитьОбласть ( "Шапка" );

ТабДок = новый ТабличныйДокумент ;

//После вывода в ТабДок макета с группировками, в ТабДоке устанавливаются все группировки макета

//Если выводить не макет, а область макета, то группировки не переносятся

//Т.е. при применении метода " ПолучитьОбласть " группировки в данной области не учитываются, как будто их не было

//Группировки колонок в новом табличном документе устанавливаются ПЕРВЫМ выведенным в него табдоком ,

//в котором есть хотябы одна строка, поэтому выводить макет с группировками обязательно нужно в самом начале

//и в макете помимо самой группировки должны быть строки

ТабДок . Вывести ( ПолучитьМакет ( " СохраненныеГрупировкиКолонок " ));

ТабДок . Вывести ( ОбластьШапка );

//удалим строки макета " СохраненныеГрупировкиКолонок ", т.к. они нам нужны были только для того,

//чтобы установить в новом табдоке нужную нам группировку колонок

//Важно! — если после удаления строк из документа удалить все строки, то группировка колонок тоже очистится,

//поэтому удаляем "лишние" строки, только после того, как вывели в табдок , хотя бы одну "не лишнюю" строку

//обязательно указываем тип смещения отличный от " БезСмещения " иначе очищенная от текста область останется в нашем табдоке

ТабДок . УдалитьОбласть ( ТабДок . Область ( 1 ,, 1 ,), ТипСмещенияТабличногоДокумента . ПоГоризонтали );

//на всякий случай проверим что с группировкой строк тоже всё в порядке

ТабДок . Вывести ( Макет . ПолучитьОбласть ( "Строка" ), 0 );

ТабДок . Вывести ( Макет . ПолучитьОбласть ( "Строка" ), 1 );