|
|||
| BlackJack
06.02.13 — 20:17 |
Делаем простейший отчёт с СКД из одного поля, например:
Потом: Основная СКД указана. Не пойму, куда-то надо компоновщик макета присунуть? |
||
| BlackJack
1 — 07.02.13 — 10:48 |
Посмотрел как в УТ 11 используют. Переделал так
Отчет1=Отчеты.Отчет1.Создать();
Схема=Отчет1.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Отчет1.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
Отчет1.КомпоновщикНастроек.ЗагрузитьНастройки(Схема.ВариантыНастроек["Основной"].Настройки);
Отчет1.СкомпоноватьРезультат(Результат);
Всё равно такая же ошибка.
|
||
| BlackJack
2 — 08.02.13 — 12:05 |
Простой вроде вопрос. Никто не пользуется методом СкомпоноватьРезультат()? |
||
| GANR
3 — 08.02.13 — 12:46 |
(0) Задача какая стоит? |
||
|
BlackJack 4 — 08.02.13 — 13:00 |
(3) А ведь какой хороший вопрос. 🙂 Сразу стало понятно, что я в Результат подсунул таблицу значений, а не табличный документ. |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Мне нужно из заказа покупателя вывести счет на предоплату, по сумме предоплаты указанной в договоре с контрагентом. Очень понравилось писать отчеты на CKД, без кода тяп ляп и отчет готов. Но вот теперь хотелось бы вывести данные не в типовой макет, а в свой. Начал писать код и что то он не пошел, можете ли немного помочь?
| 1C | ||
|
Выходит ошибка
| 1C | ||
|
у меня два макета , один основной, где находится запрос, отбор и выбор данных, и дополнительный макет-как табличный документ «Счет»
пробовал подключать макет, не из внешнего отчета, а штатный макет из документа Счет, но ошибка выходит подобная.
Добавлено через 3 часа 35 минут
Если из обычной формы вывести эту же внешнюю обработку с макетом, то все хорошо выводится и открывается. https://forum.infostart.ru/forum9/topic80946/
| 1C | ||
|
Добавлено через 15 секунд
Если из обычной формы вывести эту же внешнюю обработку с макетом, то все хорошо выводится и открывается. https://forum.infostart.ru/forum9/topic80946/
| 1C | ||
|
Вернуться к обсуждению:
Как данные из СКД вывести в свой макет? 1С
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Contents
- 1 Когда нужны макеты в 1С СКД
- 2 Макет отчета без макета
- 3 Без макета никуда
- 4 Когда и макет бессилен. Постобработка в 1С и другие хитрости
- 5 Материалы для подготовки
В этой статье мы разберем использование макетов в 1С СКД. При разработке отчетов иногда возникает необходимость в более сложной компоновке результата (в табличный документ) чем это позволяют типовые средства. Например, это может быть формирование печатной формы документа типа ТОРГ-12 – и такое тоже можно сделать средствами СКД, особенно если необходимы такие возможности как произвольные отборы. Или это могут быть какие-то особенные элементы отчета, которые нельзя сделать, используя стандартные возможности 1С – например, собственные итоги.
Макет отчета без макета
Сначала рассмотрим с вами стандартные возможности подсистемы СКД в 1С, которые позволяют получить отчет заданной формы.
Первое чем определяется форма (структура) отчета в СКД это настройка группировок
С помощью выбранных полей можно определить, какая информация будет выводиться в отчет. В выбранных полях имеется возможность компоновки выводимых полей с помощью групп:


На закладке «Другие настройки» есть также много параметров, отвечающих за компоновку отчетов – расположение полей в группировке, расположение ресурсов, вывод общих итогов, отборов, параметров. Про все эти настройки вы можете прочитать в нашей статье.
С помощью вкладки «Условное оформление» нельзя поменять структуру отчета, но можно сделать визуальное оформление ячеек табличного документа – установить цвет, шрифт, ширину или высоту ячейки и другие параметры.
В этом разделе мы рассмотрели основные типовые средства СКД, с помощью которых можно настроить структуру и оформление табличного документа без использования макета. Если вы использовали все эти возможности, но не получили желаемый результат – переходите к использованию макетов. О чем мы поговорим в следующем разделе.
Без макета никуда
Итак, вы поняли, что без использования макетов ваш отчет реализовать не получится и приняли решение о его (их) использовании. Должен вас сразу предупредить – применение макетов в отчете на СКД в 1С часто не дает возможность пользователю изменять структуру отчета. То есть макеты, настроенные для одного варианта отчета, могут неправильно работать в другом варианте отчета, если поменялся состав группировок. Если вас устраивает такое ограничение, то продолжим.
Настройка макетов производится на закладке «Макеты». Существуют несколько видов макеты, которые показаны на рисунке:

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

В этой статье я не буду расписывать какое сочетание в каком случае имеет смысл применять, потому что это не сильно интересно – это раз. Два – на этот счет есть документация от 1С и есть также хорошая шпаргалка в виде статьи на ИС.
Если мне нужно сделать отчет с использованием макетов, то я не запоминаю все варианты сочетаний, а руководствуюсь только следующими правилами:
- Макет поля. Практически никогда не нужен. Практически все можно сделать с помощью условного оформления. Разве что заполнить как-то хитро параметр расшифровки для этого поля.
- Макет группировки. Используется для строк (колонок), то есть для собственно вывода данных отчета. Используется в основном тип макета «заголовок»
- Макет заголовка группировки. Используется для вывода шапки (таблицы) отчета. Обычно использую этот макет только для первой группировки, чтобы «нарисовать» какую-то хитрую шапку для таблицы отчета (тип макета – заголовок). Если выбрать тип макета «подвал», то можно сделать подавал отчета – с подписями и т.п.
- Макет ресурсов. Используется для группировки заданной таблицей. Используется в основном тип макета «заголовок»
При добавлении любого макета вы можете привязать его к группировке или по имени или по набору полей.
Связывание макета с данными производится через параметры и параметры расшифровки.

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

Здесь мы добавили макет группировки для группировки первого уровня (настойки отчета на картинке ниже):

И добавили макет заголовка для этой же группировки. Получим результат:

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

И не будем задавать для него область

В этом случае заголовок не выводится как нам было нужно:

Когда и макет бессилен. Постобработка в 1С и другие хитрости
Теперь разберем несколько примеров, когда даже с помощью макетов в 1С не получится реализовать задачу.
Первый пример. Казалось бы, простая задача – для отчета с двумя группировками выводить разрыва страницы для каждой строки первой группировки, чтобы новое значение выводилось с новой страницы. Вроде обычная задача для макета – тут по идее нам пригодится макет группировки и тип макета «подвал». Рассмотрим на примере нашего отчета

Мы добавили нужный нам макет. Добавили в область для этого макета разрыв страницы. Чтобы выводился подвал группировки, дополнительно нужно указать его вывод (не только в начале, но и в конце)

В итоге получим

Как видно разрыв страницы не выводится. Видимо удаляется при формировании результата. Такое вот странное поведение системы. По крайней мере в релизе платформы 8.3.14.
Существует вариант решения, основанный на программном формировании отчета и поэлементном выводе. Суть решения заключается в следующем – добавляем новый параметр «разрыв страницы», добавляем группировку, в которую включаем в выбранные поля только этот параметр, выводим программно отчет с помощью поэлементного вывода, при этом анализируем – если выводится строка, содержащая наш параметр, то ее пропускаем и вместо нее выводим разрыв страницы.
Для нашего отчета мы поступим немного иначе – добавлять новую группировку не будем. Ее роль будет выполнять макет подвала, в которую мы выведем наш параметр разрыва.

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

Как видно разрыв страницы теперь выводится.
Второй пример достаточно экзотичный, но также демонстрирует в некотором смысле «бессилие» типовых средств 1С СКД. Суть задачи заключается в том, что в отчет нужно вывести два несвязанных набора данных горизонтально. Типовые средства в СКД позволяют выводить такие наборы только вертикально. По этим двум ссылка приведено решение, которое мы с вами разберем.
Шаг 1. Выводим наши наборы с помощью детальных записей вертикально

Аналогично задаются выбранные поля для расхода.
Шаг 2. Нам нужно разделить таблицы друг от друга. Для этого добавляем макеты заголовка группировки.

Шаг 3. Копируем модуль формирования отчета из статьи и дорабатываем его для своего отчета. Тезисно, что мы делаем в модуле:
- Выводим программно отчет в табличный документ
- Находим таблицу 1 и таблицу 2 (приход и расход)
- Если строк в таблице 2 больше чем в таблице 1, добавляем недостающие строки (пустые)
- Копируем область таблицы 2 из вертикального положения в горизонтальное
- Корректируем ширину колонок по данным колонок из таблицы 1
- Удаляем таблицу 2 из вертикального положения
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.Настройки;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,,Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
СтрокВТаблице = ДокументРезультат.ВысотаТаблицы;
НачалоОбластиТаблицы1 = 0;
НачалоОбластиТаблицы2 = 0;
Для ПерваяСтрока = 1 По СтрокВТаблице Цикл
ТекущаяСтрокаТабДока = ДокументРезультат.Область("R" + ПерваяСтрока + "C1");
Если ТекущаяСтрокаТабДока.Текст = "Расход" Тогда
НачалоОбластиТаблицы1 = ТекущаяСтрокаТабДока.Верх;
ИначеЕсли ТекущаяСтрокаТабДока.Текст = "Приход" Тогда
НачалоОбластиТаблицы2 = ТекущаяСтрокаТабДока.Верх;
Прервать;
КонецЕсли;
КонецЦикла;
ВысотаТаблицы1 = НачалоОбластиТаблицы2 - 1;
ВысотаТаблицы2 = СтрокВТаблице - НачалоОбластиТаблицы2 + 1;
КоличествоКолонокВТаблице = ДокументРезультат.ШиринаТаблицы;
Если ВысотаТаблицы2 > ВысотаТаблицы1 Тогда
// Добавляем в таблицу фиктивные строки
ОбластьИсточник = ДокументРезультат.Область(СтрокВТаблице + 1,,СтрокВТаблице + ВысотаТаблицы2 - ВысотаТаблицы1 + 1,);
ОбластьПриемник = ДокументРезультат.Область(НачалоОбластиТаблицы2 - 1,,ВысотаТаблицы2,);
ДокументРезультат.ВставитьОбласть(ОбластьИсточник, ОбластьПриемник, ТипСмещенияТабличногоДокумента.ПоВертикали);
НачалоОбластиТаблицы2 = НачалоОбластиТаблицы2 + ВысотаТаблицы2 - ВысотаТаблицы1 + 1;
СтрокВТаблице = ДокументРезультат.ВысотаТаблицы;
КонецЕсли;
ОбластьИсточник = ДокументРезультат.Область(НачалоОбластиТаблицы2,1,СтрокВТаблице,КоличествоКолонокВТаблице);
ОбластьПриемник = ДокументРезультат.Область(1,КоличествоКолонокВТаблице + 1,ВысотаТаблицы2,2 * КоличествоКолонокВТаблице);
ДокументРезультат.ВставитьОбласть(ОбластьИсточник, ОбластьПриемник);
Для н = 1 По КоличествоКолонокВТаблице Цикл
ДокументРезультат.Область("C" + (КоличествоКолонокВТаблице + н)).ШиринаКолонки = ДокументРезультат.Область("C" + н).ШиринаКолонки
КонецЦикла;
ДокументРезультат.УдалитьОбласть(ОбластьИсточник);
КонецПроцедуры
Материалы для подготовки
Продвинутый курс по 1С СКД
Макеты СКД
Используем макеты в СКД
Макет СКД – примеры типовых вариантов
ИТС: Использование предопределенных макетов
ИТС: Использование макетов оформления
Черно-белый макет оформления
Группировка измерений в заголовках СКД
Содержание:
1. Настройка заголовка и подвала отчета
2. Настройка оформления полей и настройка группировок отчета
3. Настройка заголовка группировки
Система компоновки данных в 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С СКД настройках для Основного варианта.
В итоге с помощью настройки макетов мы изменили отчет с такого вида:
На такой:
В настройке предопределенных макетов нет ничего сложного, как может показаться на первый взгляд. Нужно просто прочитать инструкцию и реализовать несколько простых примеров. И можно будет активно использовать этот инструмент в своей работе.
Специалист компании ООО «Кодерлайн»
Кирилл Карцев.