Работа с макетами в 1С 8.3
Создание макета в 1С 8.3
Если ваша конфигурация имеет поддержку 1С. т.е. она типовая, то вам нужно будет снять её с поддержки при внесении туда изменений. Именно из-за этого при создании печатной формы с применением макета, многие предпочитают использовать внешнюю печатную форму.
На примере мы рассмотрим вариант с изменением конфигурации, т.к. процесс создания макета в конфигурации делается точно так же.
Алгоритм действий при создании макета:
Находим подраздел «Макеты» и щелкаем по нему правой кнопкой мыши, нажимаем «добавить».
В открытом диалоговом окне нужно будет придумать и ввести имя документа и его синоним. Автоматически система сделает синоним таким же, как и имя, но вы можете поменять его на другой при желании. В данном случае мы выберем тип макета «Табличный документ». После того, как вы нажмёте «Готово», возникнет окно, напоминающее обычный лист в Excel.
Начиная с этого пункта вы будете формировать тот внешний вид документа, который бы хотели видеть в конечном итоге. Таблицы в 1С составляются, как правило, из областей с переменными, в которые и вводятся данные из документов. Сделаем новую область и дадим ей наименование. Для этого нужно:
Таким образом мы дали платформе понять, о какой области идет речь при обращении по указанному имени. Теперь добавим в область для вывода конкретных данных переменные, к примеру, «Документ№» и «Номер». Пока что это просто текст, который можно только вывести на экран без изменений.
Этих начальных знаний вполне хватит, чтобы полностью сформировать простой макет.
Изменение макета в 1С 8.3
В меню 1С есть обширный перечень средств редактирования, который позволяет создавать макеты, отвечающие всем требованиям к печатным формам. Функционал каждой кнопки можно узнать, наведя на неё курсор, а расположение всей раскладки управляющих элементов редактируется пользователем так, как это удобно именно ему. Таким образом, в 1С даже начинающий специалист сможет быстро настроить новый макет.
А сейчас ответим на вопрос: «Что нужно сделать, чтобы начать редактировать?». Во-первых, нужно найти тот макет, который вы собрались менять. Если это отчёт или внешняя обработка, тогда макет должен быть в файле. Во всех остальных случаях его следует искать в конфигураторе. Если в структуре объекта отсутствуют макеты, то нужно разобраться, где вызывается функция вывода на печать и располагается шаблон. Найдя шаблон, вы можете начать его редактировать. 1С обладает достаточно большим перечнем возможностей по изменению шаблонов:
Отчёты и печатные формы не требуют особых умений и знаний от программиста, а учитывая, что макеты используются в 1С любой конфигурации, навыки работы с ними пригодятся каждому, кто планирует развиваться и работать в этой области.
Макеты в 1С 8.2 — это не сложно (Часть 1 — Создание макета)
Допустим, Вам необходимо вывести подобный отчет:
Для формирования данного отчета необходим один справочник «Сотрудники» с реквизитами «ДатаРождения», «Должность». Пусть фамилия, имя и отчество сотрудника хранятся вместе в одном поле по умолчанию – «Наименование». Для указания должности сотрудника существует другой простой справочник «Должности» с полями по умолчанию. Структура необходимых справочников приведена на рисунке ниже.
Теперь создадим новый отчет и назовем его «СписокСотрудников». Перейдем на вкладку «Макеты» и создадим новый макет типа «ТабличныйДокумент».
Перед нами откроется пустой табличный документ, готовый к работе. Теперь нам нужно представить необходимый отчет в виде макета.
Для этого сначала скопируем исходный отчет в чистый табличный документ, т.е. в макет отчета. Получится что-то вроде этого:
Приведем макет в порядок – сделаем выравнивание заголовков по центру, для таблицы зададим отображение границ и удалим из таблицы все данные, кроме первой записи. Она у нас будет для образца.
Разобьем готовый отчет на области следующим образом:
Для каждой области необходимо присвоить соответствующее имя, для этого необходимо выделить нужную область (в данном случае все области представляют собой группы строк) и нажать на кнопку с пиктограммой, или комбинацию клавиш Ctrl+Shift+N. В появившемся окне нужно вписать имя данной области. Назовем области так, как они указаны на рисунке.
Теперь те ячейки таблицы, в которых должны выводиться данные из информационной базы, необходимо обозначить как содержащие шаблон. Для этого выделяется это поле, и в контекстном меню (правая клавиша мыши) выбирается «Свойства». В выпадающем списке свойства ячейки «Заполнение» необходимо выбрать «Шаблон» (пример на рисунке ниже).
После этого если в тексте ячейки встретится выражение в квадратных скобках, то оно будет восприниматься системой 1С как параметр. Например, если текст ячейки следующий:
то для вывода текста «Меня зовут Иван» достаточно параметру «МоеИмя» присвоить значение «Иван».
В нашем случае шаблоном будет дата вывода отчета, а также все столбцы из строки, содержащей данные сотрудника. В итоге после всех манипуляций макет отчета будет выглядеть следующим образом:
На этом создание макета завершено. Теперь нужно программно сформировать отчет из сформированных областей и отобразить его.
Основы формирования табличного документа на основе макета
Обычно табличный документ формируется на основе макета как из строительных блоков. Макет представляет собой шаблон для формирования печатной формы. Построение макета производится в конфигураторе в специальном табличном редакторе. Разработчик может создавать области, изменять высоту строк и ширину колонок, задавать форматирование ячеек и всего табличного документа, включать в макет рисунки, диаграммы и сводные таблицы.
Области макета предназначены для однократного или многократного вывода, например, ниже представлен макет для печати расходной накладной:
Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7.7, в ячейку нельзя вписать выражение. В версии 8.0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию «Параметры» объекта «ТабличныйДокумент».
Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы. К области можно обратиться по имени или по координатам. Можно также обращаться к пересечению областей, используя вертикальную черту (как в версии 7.7).
Общая схема
Общая схема формирования печатной формы на основе макета:
Пример вывода табличного документа
Ниже приведен пример формирования печатной формы расходной накладной из модуля документа:
Процедура Печать(ТабДок) Экспорт
//создание нового табличного документа
ТабДок = Новый ТабличныйДокумент ;
//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная. ПолучитьМакет («Основной»);
//получим область «Заголовок» как новый табличный документ (!)
Область = Макет. ПолучитьОбласть («Заголовок»);
//выведем заполненную область «Заголовок» в табличный документ
ТабДок. Вывести (Область);
//выведем область «Шапка» в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть(«Шапка»));
//получение области «Строка»
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть(«Строка»);
//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл
//заполнение параметров области из строки табличной части
Область.Параметры. Заполнить (СтрСостава);
//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);
//вывод области «Подвал»
Область = Макет.ПолучитьОбласть(«Подвал»);
Область.Параметры.ИтогоКоличество = Состав.Итог(«Количество»);
Область.Параметры.ИтогоСумма = Состав.Итог(«Сумма»);
ТабДок.Вывести(Область);
//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;
//покажем табличный документ на экране
ТабДок. Показать ();
Основные методы
Основные методы формирования итогового табличного документа следующие:
Получение всех параметров макета + маленькие хитрости
Маленькие хитрости передачи параметров в макеты печатных форм.
Без претензий на изобретение – тут ничего нового, просто накопилось, потому и решил написать эту заметку.
Первый звонок от клиента на базовой БП вызвал лёгкое недоумение – ежели бы ошибка была в релизе, то шквал звонков был бы практически обеспечен, а тут тишина, только один, но …подключился, посмотрел – действительно, сваливается по ошибке:
Решение – маленькая хитрость, параметр должен остаться в макете, но в печатную форму выводиться не должен. Путей решения увиделось два:
Результат – можно писать любой текст, где захочется, главное, чтобы параметр остался в макете:
Дальше возникают всякие «вредные» мысли: если существует вероятность того, что макет может каким-либо «волшебным» образом измениться, зачем заставлять людей мучиться вытворением хитростей, типа описанной выше?
Если рисуем свою печатную форму и знаем, что с макетом может произойти всё, что угодно, то не стоит использовать конструкции вывода параметров типа:
Лучше собрать возможные параметры в структуру и заполнить параметры макета не несколько строк, как выше, а как то так:
Теперь, чтобы быстро использовать эти варианты с заполнением ячейки всеми параметрами формы или создания структуры, родилась идея использовать обработку, которая составит строку для шаблона ячейки параметров, или строку для создания фиксированной структуры для модуля печатной формы.
Параметры шаблона нужны для случаев, когда заполнением параметров напрямую (через структуру) управлять нельзя, например, конфигурация на поддержке, снимать нельзя в силу каких-то вполне объективных причин, а пользователю зачем-то нужно периодически менять макет.
Может быть ещё вариант – есть какой-то макет, в котором туча параметров, пропустить которые по недогляду вполне возможно, но очень не хотелось бы.
По итогам получилась обработка, в которую можно вывести все параметры общего маета, или макета из файла с итоговыми строками параметров и строки, для копипаста в текст конструктора структуры:
Может быть и другая ситуация – есть макет, там туча параметров, и не хочется пропустить какой-нибудь.


















