Порядок сборки
Маршрут по конструктору: в каком порядке браться за закладки, чтобы дойти от пустого макета до кнопки «Печать» у пользователя. Каждый шаг отвечает на три вопроса — что сделать, по какому признаку шаг закончен и где разобраться подробно.
Маршрут
Заголовок раздела «Маршрут»Последовательность не обязательная: возвращаться к запросам, когда макет уже нарисован, — нормальный ход, состав нужных полей обычно уточняется по ходу работы. Но именно этот порядок экономит переделки, потому что данные собираются под уже нарисованный шаблон, а не наоборот.
| Шаг | Что появляется у макета | Где делается |
|---|---|---|
| 1. Описание, формат и объект метаданных | Имя формы, формат, привязка к объекту; автоматически созданные запросы и наборы | Описание |
| 2. Шаблон печатной формы | Области и параметры — список того, что предстоит заполнить | Макет |
| 3. Запросы, наборы и соединения | Данные, которых шаблону не хватало | Запросы, Наборы, Соединения |
| 4. Заполнение параметров областей | Связь параметров макета с полями наборов | Макет |
| 5. Порядок и способы вывода областей | Повтор по строкам, шапка и подвал страниц, условия вывода | Макет |
| 6. События и функции | Логика, которую не выразить настройками | События, Функции |
| 7. Проверка тестовой печатью | Уверенность, что форма собирается правильно | Командная панель |
| 8. Блокировка и команда печати | Кнопка «Печать» у пользователей | Командная панель |
Тот же маршрут на живом примере разобран в главе Счет на оплату. Что делать с уже отданной пользователям формой — в разделе Доработка заблокированного макета.
Шаг 1. Описание, формат и объект метаданных
Заголовок раздела «Шаг 1. Описание, формат и объект метаданных»Задача шага — объяснить программе, для чего собирается форма. Пока этого нет, работать не с чем: запросы не из чего строить, шаблон из объекта не загрузить, тест печати не запустить.
Что сделать
- Откройте PrintWizard → Макеты (PrintWizard) и нажмите «Создать».
- Введите наименование — оно попадёт в заголовок команды печати, если у объекта метаданных не задан свой.
- Выберите формат: табличный документ или офисный (
.docx). Переключить его можно и позже, но у офисного формата доступны не все настройки областей и не все типы полей, поэтому определяться лучше сразу. - Добавьте в таблицу «Объекты метаданных» объект, для которого делается форма, и включите у него признак в колонке «Печать».
- Если форма по смыслу журнал — реестр кассовых документов, опись, список отгрузок, — включите флажок «Это реестр»: тогда на все выделенные объекты выведется одна форма, а не по одной на каждый.
Готово, когда заполнено наименование, выбран формат и в таблице объектов метаданных есть хотя бы одна строка. При уходе с закладки программа сама построит запросы и наборы — отдельно по реквизитам шапки, отдельно по каждой табличной части.
Подробно — Описание.
Шаг 2. Шаблон печатной формы
Заголовок раздела «Шаг 2. Шаблон печатной формы»Шаблон рисуется раньше данных намеренно: именно параметры шаблона показывают, какие поля придётся собрать. Начинать с запросов — значит собирать данные наугад.
Что сделать
- Табличный документ — нарисуйте макет в редакторе на закладке «Макет», вставьте из электронной таблицы или загрузите готовый: из макета объекта, из общих макетов конфигурации, из файла
.mxlна диске (см. Табличный документ). - Офисный документ — подготовьте файл во внешнем редакторе, разметив области и параметры конструкциями
{v8 Область.Имя},{v8 Параметр}и{/v8 Область.Имя}, запишите его и загрузите на закладке «Макет» (см. Офисный документ). - Проверьте таблицу «Области макета». Для офисного документа список обновляется после загрузки сам; для табличного при правках макета области иногда приходится обновлять вручную.
Готово, когда в таблице «Области макета» перечислены все области шаблона, а в таблице под ней — параметры выбранной области.
Подробно — Макет.
Шаг 3. Запросы, наборы и соединения
Заголовок раздела «Шаг 3. Запросы, наборы и соединения»Теперь видно, каких данных не хватает. Запросы получают данные из информационной базы, наборы решают, в каком виде эти данные попадут в макет.
Что сделать
- Посмотрите запросы, созданные автоматически. Команда «Заполнить» пересоздаёт их по требованию — например, если запрос удалили по ошибке или в объекте появилась новая табличная часть.
- Добавьте недостающие запросы и дайте им понятные имена: под этими именами они видны на закладке «Наборы». Отбор по печатаемым объектам пишется через предопределённый параметр
&МассивОбъектов. - Обновите параметры и поля запроса — без состава полей набор не из чего собрать.
- Задайте вид набора: «Многострочная коллекция» для таблиц, «Первая строка» или «Последняя строка» для реквизитов шапки, «Соединение строк» — когда несколько значений нужно вывести перечислением через точку с запятой.
- Добавьте в наборы поля, которых не было в запросе: поле представления, нумератора, вычисляемое, поле алгоритма, свойства или контактной информации.
- Если данные приходят из разных запросов и их надо сопоставить построчно, свяжите наборы на закладке Соединения.
Готово, когда каждое значение, которое предстоит вывести в макет, находится в дереве доступных полей.
Подробно — Запросы, Наборы, Соединения.
Шаг 4. Заполнение параметров областей
Заголовок раздела «Шаг 4. Заполнение параметров областей»Выберите область на закладке «Макет» — под таблицей областей появятся её параметры. Каждому параметру нужно указать, откуда берётся значение.
Что сделать
- Нажмите «Заполнить» над таблицей параметров: программа подставит поля наборов, имена которых совпали с именами параметров. Параметр останется незаполненным, если подходящих полей нашлось несколько; для области с выводом по строкам коллекции совпадение ищется только в указанном наборе.
- Остальные параметры заполните вручную, выбрав тип значения:
| Тип значения | Когда нужен |
|---|---|
| Значение набора | Поле набора подставляется как есть |
| Конструктор строки | Значение собирается из нескольких полей и текста |
| Произвольный алгоритм | Значение вычисляется кодом |
| Данные QR-кода | Картинка QR-кода по заданным данным (см. QR-код) |
| Сумма прописью | Сумма словами с учётом валюты (см. Сумма прописью) |
- Задайте форматирование там, где нужен свой формат числа или даты.
Готово, когда у каждой области заполнены все параметры, которым нужно значение. Проверяется тестовой печатью — см. шаг 7.
Подробно — Макет, Доступные поля.
Шаг 5. Порядок и способы вывода областей
Заголовок раздела «Шаг 5. Порядок и способы вывода областей»Область может выводиться один раз, повторяться по строкам коллекции, попадать в колонтитул или не выводиться вовсе. Здесь печатная форма получает нужную структуру страниц.
Что сделать
- Задайте способ вывода каждой области: «Без повторений» — один раз; «По строкам коллекции» — по разу на каждую строку набора, набор указывается в колонке «Набор»; «Верхний» и «Нижний колонтитул» — только для офисного документа; «Перенос строки» — специальный случай, разобранный в отдельной главе.
- Проверьте порядок строк в таблице областей — в этом порядке области и выводятся. Он заполняется по макету, но его можно изменить.
- Для табличного документа настройте вывод при печати: какие области повторять в шапке и подвале каждой страницы, какие проверять на перенос на следующую страницу, где начинается новый раздел.
- Если область нужна не всегда, задайте условия вывода — правилами, без кода.
Готово, когда тестовая печать многостраничного документа даёт правильные повторы: таблица растёт по строкам, шапка и подвал повторяются на каждой странице, блок не разрывается посередине.
Подробно — Макет, Настройки печати.
Шаг 6. События и функции
Заголовок раздела «Шаг 6. События и функции»Шаг нужен не всегда. К нему переходят, когда логику не выразить настройками: значение зависит от условий, данные нужно дособрать в коде, вывод области — изменить по ходу формирования.
Что сделать
- Обработчики этапов формирования пишутся на закладке События — от
ПередИнициализациейдоПослеФормирования, включаяПередВыводомОбластииПослеВыводаОбластидля каждой выводимой области. - Код, который нужен в нескольких местах, вынесите в функции: они доступны из любого алгоритма макета.
Готово, когда тестовая печать проходит без ошибок исполнения, а журнал событий показывает ожидаемые данные на каждом этапе.
Шаг 7. Проверка тестовой печатью
Заголовок раздела «Шаг 7. Проверка тестовой печатью»Не ждите готовности формы целиком: тестовая печать работает на любом шаге, и по ней удобно проверять, туда ли встало очередное поле.
Что сделать
- Печать с выбором — программа спросит объект и соберёт по нему форму. Если макет изменён и не записан, она предложит записать его перед тестом.
- Печать — повторяет последний прогон по тем же объектам, без повторного выбора. Удобно, когда макет правится по кругу.
- Режим отладки — если результат расходится с ожидаемым и по самой форме непонятно почему. Исполнитель соберёт подробный журнал: какие запросы выполнялись, что попало в наборы, какие области выводились. Журнал виден на закладке «Журнал событий».
Готово, когда форма собирается по нескольким разным объектам, а не только по одному удачному.
Подробно — Настройка макета.
Шаг 8. Блокировка и команда печати
Заголовок раздела «Шаг 8. Блокировка и команда печати»Пока макет редактируется, пользователи печатную форму не видят. Блокировка завершает разработку и отдаёт форму пользователям.
Что сделать
- Нажмите Заблокировать. Запускается комплексная проверка макета: если она найдёт ошибки, они выводятся списком, и блокировка не выполняется, пока ошибки не устранены.
- Убедитесь, что на закладке Описание у нужного объекта включён признак в колонке «Печать».
- При необходимости настройте видимость готовой команды — для всех пользователей или по условиям на реквизиты источника — в Консоли команд.
Готово, когда в подменю «Печать» у объекта появилась команда и она формирует ожидаемую форму.
Дальнейшие правки вносятся не снятием блокировки, а через образ для разработки.
Доработка заблокированного макета
Заголовок раздела «Доработка заблокированного макета»Заблокированный макет не редактируется. Путей два, и они не равнозначны.
Снять блокировку — команда печати из подменю пропадёт, и пользователи останутся без формы на всё время правок.
Создать образ для разработки — служебную копию, в которой ведётся работа, пока основной макет продолжает печататься у пользователей. Это правильный путь.
- Создайте образ: при блокировке в верхней части формы появляется уведомление с гиперссылкой, по которой образ создаётся и сразу открывается.
- Правьте образ как обычный макет — в редактировании отличий нет. Заблокировать сам образ невозможно: в подменю «Печать» он не попадает.
- Перенесите изменения в основной макет: Отправить в макет переносит их и оставляет образ открытым, Закрыть образ переносит и удаляет образ. Переносить можно в любой момент, не дожидаясь окончания работ.
В списке макетов образы выделены синим курсивом, а к наименованию добавляется окончание «(для разработки)».
Подробно — Образ разработки.
Смена формата макета
Заголовок раздела «Смена формата макета»Формат переключается флажком «Макет в формате Open Office Documents (*.docx)» на закладке «Описание» в любой момент — но чем позже, тем больше переделок.
- Переключите флажок на закладке Описание.
- Создайте или загрузите шаблон в новом формате на закладке Макет.
- Области и параметры перезаполнятся из нового шаблона. Настройки заполнения параметров, у которых совпали имена, сохранятся; остальные придётся задать заново.
- Проверьте способы вывода областей: у офисного формата доступны не все настройки областей и не все типы полей, поэтому часть настроек табличного макета в
.docxне переедет.
Добавление поля в набор
Заголовок раздела «Добавление поля в набор»Ситуация: в макете нужно значение, которого в запросе нет.
- На закладке Наборы выберите набор и добавьте поле нужного типа — представления, нумератора, вычисляемое, алгоритма, свойства или контактной информации.
- Заполните настройки поля: имя, тип данных, шаблон или алгоритм — в зависимости от типа.
- На закладке Макет выберите область и её параметр, укажите тип значения «Значение набора» и выберите новое поле в дереве доступных полей.
Прежде чем добавлять поле, загляните в дерево доступных полей: функции по полю даты, итоги и агрегаты по числовым колонкам, нарастающий итог и процент к итогу считаются без нового поля и без кода.
Вывод области по строкам коллекции
Заголовок раздела «Вывод области по строкам коллекции»Самая частая задача макета: таблица в печатной форме должна расти по строкам данных.
- На закладке Наборы убедитесь, что у набора вид «Многострочная коллекция».
- На закладке Макет выберите область и задайте способ вывода «По строкам коллекции».
- В колонке «Набор» укажите набор — именно он определяет, какие построчные поля станут доступны в параметрах области.
- Заполните параметры области полями вида
НаборыДанных.[Набор].Строка.[Поле]; итоги по колонкам —НаборыДанных.[Набор].Итог.[Поле].[Агрегат].
Если построчных полей в дереве нет, проверьте две вещи: вид набора и колонку «Набор» у области. Без них построчные поля не предлагаются — подробнее в главе Доступные поля.