Объект конфигурации Макет предназначен:
- для хранения различных форм представления данных какого-либо объекта конфигурации или всего прикладного решения;
- для создания печатной формы табличного документа, подчиненного какому-либо объекту конфигурации.
Макет может содержать:
- табличный или текстовый документ;
- двоичные данные;
- HTML-документ или Active Document;
- графическую или географическую схему;
- схему компоновки данных или макет оформления схемы компоновки данных.
Конструктор макета 1С
Конструктор макета позволяет создавать макеты, используемые как объектами прикладного решения, так и самим прикладным решением в целом. Макеты могут содержать различные данные, которые требуются для отображения информации в процессе работы.
Конструктор макетов позволяет создавать:
- пустые макеты (например, пустой макет табличного или текстового документа);
- макеты, содержащие некоторую информацию (например, макет, содержащий двоичные данные);
- макеты, содержащие ActiveDocument (например, документ Word, лист Excel или рисунок CorelDRAW);
- макеты, содержащие HTML-документы;
- макеты, содержащие графические схемы или географические схемы;
- макеты, содержащие схему компоновки данных и макет оформления компоновки данных;
- макеты, содержащие внешнюю компоненту.
ВАЖНО!
- В качестве макета нельзя использовать ActiveX элемент управления .
- При работе с конструктором макета необходимо выполнять загрузку из файла при работе с типами макета:
- Двоичные данные, Active document, Географическая схема, Графическая схема, Внешняя компонента.
Вызов конструктора макета:
- при создании нового макета объекта конфигурации (например, при создании нового макета справочника в окне конфигурации);
- при создании нового общего макета (дерево конфигурации, ветка "Общие макеты" - "Добавить").
Результатом работы конструктора будет являться готовый макет.
Особенности работы в 1С с ActiveX:
- Элементы управления ActiveX могут использоваться в диалоге формы без ограничения.
- Для обращения к свойствам элементов управления ActiveX из модуля формы используется свойство "ЭлементыФормы".
Порядок создания печатной формы 1С
Для создания макета печатной формы в общем случае необходимо описать:
- макет (графический);
- команду;
- программный код (в модуле менеджера и в модуле команды) согласно общему алгоритму:
- создать новый табличный документ (
ТабДок = Новый ТабличныйДокумент;
); - получить макет печатной формы;
- заполнить табличный документ, используя области из макета:
- получить область из макета;
- заполнить параметры области (если они есть);
- вывести область в табличный документ;
- настроить свойства табличного документа (ориентация страницы, отступы и т.д.);
- показать заполненный табличный документ пользователю.
- создать новый табличный документ (
Порядок создания печатной формы 1С:
- Создать в конфигураторе новый макет печатной формы для соответствующего документа ("Документы - <нужный документ> - Макеты - Добавить - Табличный документ").
Особенности настройки макета печатной формы
Особенности настройки макета печатной формы табличного документа в 1С:
- Желательно получить от заказчика форму в Exel (и затем вставить её во вновь создаваемый макет, что позволит сократить время на создание графического шаблона).
- Области макета могут создаваться как для строк, так и для колонок или отдельной ячейки.
- В общем случае макет может содержать следующие области:
- шапка;
- шапка таблицы;
- строка таблицы;
- подвал;
- подписи;
- подпись факсимиле.
- Для автопереноса текста в ячейке установить для соответствующей строки "Высота строк... - Автовысота строки", свойство ячейки "Размещение текста - Переносить".
- Ввод в ячейку формул для расчета значений (как в Exel) не реализован (можно только программно).
[свернуть] - Создать графический макет (шаблон) печатной формы (или средствами 1С, или скопировав из документа Exel)
Пример шаблона печатной формы[свернуть]
- В конфигураторе создать команду вызова печатной формы:
- "Документы - <нужный документ> - Команды - Добавить", дать имя;
- "Группа - <место вывода команды на форме>";
- "Тип параметра команды - <ссылка на нужный документ>";
- "Режим использования параметра":
Одиночный
- в параметр передается одна ссылка на документ (печать сразу нескольких документов невозможна);Множественный
- в параметр могут передаваться несколько ссылок на документы (одновременная печать нескольких документов);
- запустить приложение и проверить появление созданной кнопки на форме нужного документа.
Процедура обрaботки команды12345678910&НаКлиентеПроцедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)// ПараметрКоманды - значение (единичное или массив) от источника, в котором реализована команда// ПараметрыВыполненияКоманды - описывает структуру, передаваемую в обработчик команды:// Источник – окно (ОкноКлиентскогоПриложения) или форма (Форма, ФормаКлиентскогоПриложения)вызова команды;// Окно – тип ОкноКлиентскогоПриложения, в котором требуется открыть форму// Уникальность - уникальность формы:// Ложь - искать с ключом уникальности формы по умолчанию,// Истина - не искать форму вообще, любое другое значение устанавливает ключ уникальности, по которому будет произведен поиск.КонецПроцедуры[свернуть]
- Описать процедуру обработки команды на клиенте.
пример12345678910&НаКлиентеПроцедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)// 1. Создать новый табличный документТабДок = Новый ТабличныйДокумент;// 2. Передать ТабДок и ПараметрКоманды из клиента на сервер для обработки// (заполнить табличный документ данными на сервере)ОбработкаКомандыНаСервере(ПараметрКоманды, ТабДок);// 3. Показать пользователю заполненную на сервере печатную форму на клиентеТабДок.Показать();КонецПроцедуры[свернуть]
- Описать процедуру обработки команды на сервере:
-
получить макет печатной формы;
-
создать запрос для получения данных параметров печатной формы из базы;
-
заполнить табличный документ, используя области из макета:
-
получить область из макета;
-
заполнить параметры области (если они есть) (составные представления и табличные суммы - через объект
Структура
);
-
-
вывести область в табличный документ.
пример123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101&НаСервереПроцедура ОбработкаКомандыНаСервере(МассивДокументов,ТабДок)// 2. Получить макет печатной формыМакет = Документы.ЗаказКлиента.ПолучитьМакет("ПФ_MXL_СчетНаОплатуМой");// 2.1 Создать запрос для получения данных параметров печатной формы из базыЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| ЗаказКлиента.Номер КАК Номер,| ЗаказКлиента.Дата КАК Дата,| ЗаказКлиента.Организация.Наименование КАК Организация,| ЗаказКлиента.Организация.ИНН КАК ИНН,| ЗаказКлиента.Контрагент.Наименование КАК КонтрагентНаименование,| ЗаказКлиента.Контрагент.ИНН КАК КонтрагентИНН,| ЗаказКлиента.Организация.ОсновнойБанковскийСчет.Банк КАК Банк,| ЗаказКлиента.Организация.ОсновнойБанковскийСчет.НомерСчета КАК НомерСчета,| ЗаказКлиента.Организация.ОсновнойБанковскийСчет.Банк.Код КАК БИК,| ЗаказКлиента.Договор.Номер КАК НомерДоговора,| ЗаказКлиента.Договор.ДатаДоговора КАК ДатаДоговора,| ЗаказКлиента.Организация.Руководитель КАК Руководитель,| ЗаказКлиента.Товары.(| НомерСтроки КАК НомерСтроки,| Номенклатура КАК Номенклатура,| Количество КАК Количество,| Цена КАК Цена,| СтавкаНДС КАК СтавкаНДС,| Сумма КАК Сумма,| СуммаНДС КАК СуммаНДС,| СуммаВсего КАК СуммаВсего,| ЕдиницаИзмерения КАК ЕдиницаИзмерения| ) КАК Товары|ИЗ| Документ.ЗаказКлиента КАК ЗаказКлиента| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации| ПО ЗаказКлиента.Организация = Организации.Ссылка|ГДЕ| ЗаказКлиента.Ссылка В(&МассивДокументов)";Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);РезультатЗапроса = Запрос.Выполнить();Выборка = РезультатЗапроса.Выбрать();// 3. Заполнить табличный документ, используя области из макета:Пока Выборка.Следующий() Цикл// 3.1 получить область из макета;ОбластьШапка = Макет.ПолучитьОбласть("Шапка");// 3.2 заполнить параметры области (если они есть):// 3.2.1 составные представления - через объект СтруктураСтруктураПредставление = Новый Структура;СтруктураПредставление.Вставить("ПредставлениеОрганизации",""+Выборка.Организация+", ИНН:"+Выборка.ИНН);СтруктураПредставление.Вставить("ПредставлениеКонтрагента",""+Выборка.КонтрагентНаименование+", ИНН:"+Выборка.КонтрагентИНН);// 3.2.2 обычные параметры// или для каждого параметра, например// Область.Параметры.БИК = Выборка.БИК;// или специальным методомОбластьШапка.Параметры.Заполнить(Выборка);ОбластьШапка.Параметры.Заполнить(СтруктураПредставление);// 3.3 вывести область в табличный документ;ТабДок.Вывести(ОбластьШапка);// для остальных областей - аналогичноОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");ОбластьШапкаТаблицы.Параметры.Заполнить(Выборка);ТабДок.Вывести(ОбластьШапкаТаблицы) ;ВыборкаТовары = Выборка.Товары.Выбрать();СтруктураИтогов = Новый Структура("ИтогоСумма, ИтогоСуммаНДС, ИтогоСуммаВсего, ИтогоСуммаВсегоПрописью",0,0,0);Пока ВыборкаТовары.Следующий() ЦиклОбласть = Макет.ПолучитьОбласть("СтрокаТаблицы");Область.Параметры.Заполнить(ВыборкаТовары);СтруктураИтогов.ИтогоСумма = СтруктураИтогов.ИтогоСумма+ВыборкаТовары.Сумма;СтруктураИтогов.ИтогоСуммаНДС = СтруктураИтогов.ИтогоСуммаНДС+ВыборкаТовары.СуммаНДС;СтруктураИтогов.ИтогоСуммаВсего = СтруктураИтогов.ИтогоСуммаВсего+ВыборкаТовары.СуммаВсего;ТабДок.Вывести(Область);КонецЦикла;ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");ПараметрыПредметаИсчисления = "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2";СтруктураИтогов.ИтогоСуммаВсегоПрописью = ЧислоПрописью(СтруктураИтогов.ИтогоСуммаВсего, "ДП=Истина",ПараметрыПредметаИсчисления);ОбластьПодвал.Параметры.Заполнить(СтруктураИтогов);ТабДок.Вывести(ОбластьПодвал);ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");ОбластьПодписи.Параметры.Заполнить(Выборка);ТабДок.Вывести(ОбластьПодписи);КонецЦикла;КонецПроцедуры // ОбработкаКомандыНаСервере()[свернуть]
-