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

13.09.24

Разработка - Работа с интерфейсом

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

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

Создаем внешний отчет. Реквизитов не требуется. Формы тоже.

 

 

Создаем свой макет. И, как видите, создаем схему компоновки данных. Вы спросите: а как же «без СКД»? Отвечаю, схема компоновки нужна, только чтобы заполнить параметры. Иначе для отражения и ввода параметров придется создавать свою форму. Нет уж! Пускай штатные механизмы поработают для нас! Если отчет не требует ввода параметров, то и схема компоновки данных нам не потребуется.

Наборы данных пустые, структура отчета тоже:

 

 

 

Заполняем только нужные нам для отчета параметры:

 

 

Далее переходим к обработке команды «Сформировать». Обрабатывается эта команда в модуле объекта в процедуре ПриКомпоновкеРезультата.

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


 

Чтобы фига не показывалась, начните формирование отчета так:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;

Если отчет все же потребовал ввод параметров, то нам нужно вытащить параметры из настроек отчета:

КомпоновщикНастроек.ЗагрузитьНастройки(КомпоновщикНастроек.ПолучитьНастройки());
Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;
Период = Параметры.Найти("Период").Значение;
НачалоПериода = Период.ДатаНачала;
КонецПериода = Период.ДатаОкончания;

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

 

 

Cобираем табличный документ:

	//Получаем данные для печати
		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода);
		Запрос.УстановитьПараметр("ОкончаниеПериода",КонецПериода);
		Запрос.Текст = ПолучитьТекстЗапроса();
		РезультатЗапроса = Запрос.Выполнить();
		
	// Заполняем табличный документ	
		ТабДок = Новый ТабличныйДокумент;
		Макет = ПолучитьМакет("Макет");
		
		ОбластьШапка = Макет.ПолучитьОбласть("ОбластьШапка");
		ОбластьСтрока = Макет.ПолучитьОбласть("ОбластьСтрока");
		ОбластьПодвал = Макет.ПолучитьОбласть("ОбластьПодвал");
		
		ОбластьШапка.Параметры.ДатаПриказа = Формат(ТекущаяДата(),"ДФ='dd.MM.yyyy'");
		ТабДок.Вывести(ОбластьШапка);
		
		Выборка = РезультатЗапроса.Выбрать();
		i=0;
		Пока Выборка.Следующий() Цикл
			i=i+1;
			ОбластьСтрока.Параметры.Заполнить(Выборка);
			ОбластьСтрока.Параметры.нпп = i;
			ТабДок.Вывести(ОбластьСтрока);
		КонецЦикла;
		
		СтруктураРуководитель = ПолучитьСтруктуруРуководителя(Справочники.Организации.НайтиПоНаименованию("ООО XYZ"));
		
		ОбластьПодвал.Параметры.РуководительДолжность = СтруктураРуководитель.Должность;
		ОбластьПодвал.Параметры.РуководительФИО = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(СтруктураРуководитель.ФизическоеЛицо);

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

Передаем наш табличный документ на вывод:

		ДокументРезультат.Очистить();
		ДокументРезультат.Вывести(ТабДок);
КонецПроцедуры

И вот результат наших трудов:

 

 

В печатную форму могут пробраться параметры:

 


 

Избавимся от них через Настройки à Другие настройки В СКД:

 

 

Доклад окончен.

 

Протестировано на Платформе 8.3.25.1374. Управление торговлей 11.5.12.270. 

Отчет Без СКД Управляемые формы Свой макет Управление Торговлей

См. также

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62935    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    18806    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10190    7    7    

10

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

20.08.2024    16460    mrXoxot    43    

120

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    7146    smielka    37    

100

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    14631    900    elcoan    47    

117

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

10.04.2023    11856    162    acces969    31    

124

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    5638    kalyaka    6    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. rambomax 16.09.24 08:44 Сейчас в теме
Я не понял смысла: если это "СКД", то в "схеме" есть свои "макеты", которые сделают именно то, что на финальной картинке.
Если не хочется делать с помощью "СКД" - зачем есть кактус и вообще использовать слово "СКД"?
SoLRoN; strelec13; kupala; +3 Ответить
2. umah 77 16.09.24 14:15 Сейчас в теме
(1) Я не люблю макеты из СКД. Этот инструмент как будто пришельцы делали. Отсюда и поиск альтернатив.
3. rambomax 16.09.24 16:21 Сейчас в теме
(2) Насколько я понимаю - "альтернатива" это обычный "отчёт" или "внешний отчёт", где "макеты", "форма отчёта" и т.п.
СКД это очень простой в понимании инструмент, которые делали умные люди, пытаясь крестить "ужа" и "ежа". В итоге получилось, в целом, неплохо. Проблема в том, что толкового и, главное, понятного обычному человеку "от сохи", руководства до сих пор нет.
Конкретно о том, как любой "обычный" отчёт перевести с любыми "макетами" на СКД, немного нудно, но понятно рассказывает на канале УЦ №1 Сергей Рафаэльевич Арутюнов совершенно бесплатно и чтобы сделать то, что показано в статье конкретно этого небольшого ролика совершенно достаточно.
SoLRoN; strelec13; jovvy-ingrp; +3 Ответить
4. Pashekka 17.09.24 22:40 Сейчас в теме
(3) Ссылочку можно на видео?
5. rambomax 18.09.24 17:26 Сейчас в теме
6. Serg O. 297 19.09.24 09:21 Сейчас в теме
(2) Вы не любите кошек ?
- просто Вы не умеете их готовить.

Печатные формы в типовых конфигурациях часто делаются без СКД
и это а-ля "OLD-стайл" версии 1С 7.7

в Вашей статье ничего такого не увидел,
а что-то типа "в обход СКД, используя СКД"...
очень странный способ
8. webester 26 25.09.24 10:57 Сейчас в теме
(6)
Печатные формы в типовых конфигурациях часто делаются без СКД и это а-ля "OLD-стайл" версии 1С 7.7
И это вполне себе норм. Но в некоторых случаях можно прикрутить СКД. Вот как БСП предлагает решать проблему(свой сложный макет) автора. Не всегда это подходит, но в целом мне кажется интересным. Чем в данном конкретном случае который на скрине автора не устроил СКД и свой макет, мне непонятно. Не осилил, штатное решение и набросал велосипед, как умел?
7. strelec13 21 20.09.24 13:36 Сейчас в теме
Этот инструмент как будто пришельцы делали
. Раньше привык по старинке в ручную писать "Заполняем табличный документ". Боялся "пришельцы" (макеты от СКД) или ленился подружиться(изучить) с "пришельцы". Когда освоил макеты от СКД, оказалось это просто и инструменты от "пришельцы" оказались намного умней и компактней кода "Заполняем табличный документ" руками. И описанный подход автором будет отпугивать начинающих в освоении макетов от СКД или воспитывать ленивость у начинающих в освоении передовых технологий на примере макетов в СКД.
9. Vinzor 107 28.09.24 23:19 Сейчас в теме
Немало печатных форм, где есть СКД + Макет печатной формы.
В СКД закидываются вводные данные, процессор компоновки формирует результат, например, "Дерево значений".
Потом отдельная процедура длинным кодом на встроенном языке выводит это в макет.
Например, тот же "Расчетный листок" в ЗУПе.

Явление такого сочетания есть, и вряд ли исчезнет в обозримом будущем
Оставьте свое сообщение