alex81nzp |
---|
Прочитано: 25753 |
Никак не могу разобраться, как в табличном документе, который создается на основе "Макета табличного документа", организовать Группировки.
Есть такой код:
Код 1C v 8.х
и собственно сам макет
Чего не хватает, чтобы все группировалось по Подразделению?
Yandex |
---|
Возможно, вас также заинтересует |
E_Migachev |
---|
Ответ № 1 |
1. скоприруй код запроса
2. зайди в конфигуратор и создай новый отчет
3. Используй конструктор печати
4. в нем укажи этот запрос и вывод в табл документ
5. смотри получившийся код *13
alex81nzp |
---|
Ответ № 2 |
Код 1C v 8.х
Нужно чтобы получилось вот такой структуры (взято из настроек Произвольных отчетов):
Подразделение организации (Иерархия)
Должность, Количество, Ставка
То что формируется через запрос в консоли отчетов меня устраивает, но не устраивает того для кого это делается! Потому и начал рыть в макетах. Ситуация осложняется еще и тем, что справочник подразделений имеет сложную структуру, т.е. например "1 цех" имеет глубину вложений 2, а именно:
Например:
1 цех
— Бухгалтерия
— Служба ИТ
— — Отдел по работе с пользователями
— — Еще какой-нибудь отдел
— — — какая-нибудь группа
и т.д.
в итоге при печати того же Штатного расписания, нужно чтобы в качестве группы шло название Цеха, а внутри вся его структура.
1 цех
— Бухгалтерия
. Бухгалтер, 3 шт., 10000 руб.
— Служба ИТ
— — Отдел по работе с пользователями
. Лоботряс, 10 шт., 5000 руб.
— — Еще какой-нибудь отдел
— — — Какая-нибудь группа
. Бездельник, 1, 3000 руб.
Вот как-то так Вопрос остается открытым Изменено 20.01.12 09:41:18
E_Migachev |
---|
Ответ № 3 |
alex81nzp |
---|
Ответ № 4 |
Подразделение организации (Иерархия)
Должность, Количество, Ставка
Результат выполнения запроса:
Вот в макете (в области данных) должно быть так же сгруппировано
Поля "Категория персонала" в Вашей конфигурации нет, не обращайте на него внимание.
2 раза 14 цех потому,что так занесено в штатном (в корень цеха)
Наверное так понятнее будет.
E_Migachev |
---|
Ответ № 5 |
alex81nzp |
---|
Ответ № 6 |
Вся эта каша из-за того что мне в отчет нужно добавить поле, которое вычисляется из содержимого другого поля, причем поле источник — строка из которой нужно брать определенную информацию, языка запросов тут явно не хватит.
Система компоновки данных в 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 );