Перейти к содержимому

Порядок сборки

Маршрут по конструктору: в каком порядке браться за закладки, чтобы дойти от пустого макета до кнопки «Печать» у пользователя. Каждый шаг отвечает на три вопроса — что сделать, по какому признаку шаг закончен и где разобраться подробно.

Последовательность не обязательная: возвращаться к запросам, когда макет уже нарисован, — нормальный ход, состав нужных полей обычно уточняется по ходу работы. Но именно этот порядок экономит переделки, потому что данные собираются под уже нарисованный шаблон, а не наоборот.

ШагЧто появляется у макетаГде делается
1. Описание, формат и объект метаданныхИмя формы, формат, привязка к объекту; автоматически созданные запросы и наборыОписание
2. Шаблон печатной формыОбласти и параметры — список того, что предстоит заполнитьМакет
3. Запросы, наборы и соединенияДанные, которых шаблону не хваталоЗапросы, Наборы, Соединения
4. Заполнение параметров областейСвязь параметров макета с полями наборовМакет
5. Порядок и способы вывода областейПовтор по строкам, шапка и подвал страниц, условия выводаМакет
6. События и функцииЛогика, которую не выразить настройкамиСобытия, Функции
7. Проверка тестовой печатьюУверенность, что форма собирается правильноКомандная панель
8. Блокировка и команда печатиКнопка «Печать» у пользователейКомандная панель

Тот же маршрут на живом примере разобран в главе Счет на оплату. Что делать с уже отданной пользователям формой — в разделе Доработка заблокированного макета.

Шаг 1. Описание, формат и объект метаданных

Заголовок раздела «Шаг 1. Описание, формат и объект метаданных»

Задача шага — объяснить программе, для чего собирается форма. Пока этого нет, работать не с чем: запросы не из чего строить, шаблон из объекта не загрузить, тест печати не запустить.

Что сделать

  1. Откройте PrintWizard → Макеты (PrintWizard) и нажмите «Создать».
  2. Введите наименование — оно попадёт в заголовок команды печати, если у объекта метаданных не задан свой.
  3. Выберите формат: табличный документ или офисный (.docx). Переключить его можно и позже, но у офисного формата доступны не все настройки областей и не все типы полей, поэтому определяться лучше сразу.
  4. Добавьте в таблицу «Объекты метаданных» объект, для которого делается форма, и включите у него признак в колонке «Печать».
  5. Если форма по смыслу журнал — реестр кассовых документов, опись, список отгрузок, — включите флажок «Это реестр»: тогда на все выделенные объекты выведется одна форма, а не по одной на каждый.

Готово, когда заполнено наименование, выбран формат и в таблице объектов метаданных есть хотя бы одна строка. При уходе с закладки программа сама построит запросы и наборы — отдельно по реквизитам шапки, отдельно по каждой табличной части.

Подробно — Описание.

Шаблон рисуется раньше данных намеренно: именно параметры шаблона показывают, какие поля придётся собрать. Начинать с запросов — значит собирать данные наугад.

Что сделать

  • Табличный документ — нарисуйте макет в редакторе на закладке «Макет», вставьте из электронной таблицы или загрузите готовый: из макета объекта, из общих макетов конфигурации, из файла .mxl на диске (см. Табличный документ).
  • Офисный документ — подготовьте файл во внешнем редакторе, разметив области и параметры конструкциями {v8 Область.Имя}, {v8 Параметр} и {/v8 Область.Имя}, запишите его и загрузите на закладке «Макет» (см. Офисный документ).
  • Проверьте таблицу «Области макета». Для офисного документа список обновляется после загрузки сам; для табличного при правках макета области иногда приходится обновлять вручную.

Готово, когда в таблице «Области макета» перечислены все области шаблона, а в таблице под ней — параметры выбранной области.

Подробно — Макет.

Теперь видно, каких данных не хватает. Запросы получают данные из информационной базы, наборы решают, в каком виде эти данные попадут в макет.

Что сделать

  1. Посмотрите запросы, созданные автоматически. Команда «Заполнить» пересоздаёт их по требованию — например, если запрос удалили по ошибке или в объекте появилась новая табличная часть.
  2. Добавьте недостающие запросы и дайте им понятные имена: под этими именами они видны на закладке «Наборы». Отбор по печатаемым объектам пишется через предопределённый параметр &МассивОбъектов.
  3. Обновите параметры и поля запроса — без состава полей набор не из чего собрать.
  4. Задайте вид набора: «Многострочная коллекция» для таблиц, «Первая строка» или «Последняя строка» для реквизитов шапки, «Соединение строк» — когда несколько значений нужно вывести перечислением через точку с запятой.
  5. Добавьте в наборы поля, которых не было в запросе: поле представления, нумератора, вычисляемое, поле алгоритма, свойства или контактной информации.
  6. Если данные приходят из разных запросов и их надо сопоставить построчно, свяжите наборы на закладке Соединения.

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

Подробно — Запросы, Наборы, Соединения.

Выберите область на закладке «Макет» — под таблицей областей появятся её параметры. Каждому параметру нужно указать, откуда берётся значение.

Что сделать

  1. Нажмите «Заполнить» над таблицей параметров: программа подставит поля наборов, имена которых совпали с именами параметров. Параметр останется незаполненным, если подходящих полей нашлось несколько; для области с выводом по строкам коллекции совпадение ищется только в указанном наборе.
  2. Остальные параметры заполните вручную, выбрав тип значения:
Тип значенияКогда нужен
Значение набораПоле набора подставляется как есть
Конструктор строкиЗначение собирается из нескольких полей и текста
Произвольный алгоритмЗначение вычисляется кодом
Данные QR-кодаКартинка QR-кода по заданным данным (см. QR-код)
Сумма прописьюСумма словами с учётом валюты (см. Сумма прописью)
  1. Задайте форматирование там, где нужен свой формат числа или даты.

Готово, когда у каждой области заполнены все параметры, которым нужно значение. Проверяется тестовой печатью — см. шаг 7.

Подробно — Макет, Доступные поля.

Область может выводиться один раз, повторяться по строкам коллекции, попадать в колонтитул или не выводиться вовсе. Здесь печатная форма получает нужную структуру страниц.

Что сделать

  1. Задайте способ вывода каждой области: «Без повторений» — один раз; «По строкам коллекции» — по разу на каждую строку набора, набор указывается в колонке «Набор»; «Верхний» и «Нижний колонтитул» — только для офисного документа; «Перенос строки» — специальный случай, разобранный в отдельной главе.
  2. Проверьте порядок строк в таблице областей — в этом порядке области и выводятся. Он заполняется по макету, но его можно изменить.
  3. Для табличного документа настройте вывод при печати: какие области повторять в шапке и подвале каждой страницы, какие проверять на перенос на следующую страницу, где начинается новый раздел.
  4. Если область нужна не всегда, задайте условия вывода — правилами, без кода.

Готово, когда тестовая печать многостраничного документа даёт правильные повторы: таблица растёт по строкам, шапка и подвал повторяются на каждой странице, блок не разрывается посередине.

Подробно — Макет, Настройки печати.

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

Что сделать

  • Обработчики этапов формирования пишутся на закладке События — от ПередИнициализацией до ПослеФормирования, включая ПередВыводомОбласти и ПослеВыводаОбласти для каждой выводимой области.
  • Код, который нужен в нескольких местах, вынесите в функции: они доступны из любого алгоритма макета.

Готово, когда тестовая печать проходит без ошибок исполнения, а журнал событий показывает ожидаемые данные на каждом этапе.

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

Что сделать

  1. Печать с выбором — программа спросит объект и соберёт по нему форму. Если макет изменён и не записан, она предложит записать его перед тестом.
  2. Печать — повторяет последний прогон по тем же объектам, без повторного выбора. Удобно, когда макет правится по кругу.
  3. Режим отладки — если результат расходится с ожидаемым и по самой форме непонятно почему. Исполнитель соберёт подробный журнал: какие запросы выполнялись, что попало в наборы, какие области выводились. Журнал виден на закладке «Журнал событий».

Готово, когда форма собирается по нескольким разным объектам, а не только по одному удачному.

Подробно — Настройка макета.

Пока макет редактируется, пользователи печатную форму не видят. Блокировка завершает разработку и отдаёт форму пользователям.

Что сделать

  1. Нажмите Заблокировать. Запускается комплексная проверка макета: если она найдёт ошибки, они выводятся списком, и блокировка не выполняется, пока ошибки не устранены.
  2. Убедитесь, что на закладке Описание у нужного объекта включён признак в колонке «Печать».
  3. При необходимости настройте видимость готовой команды — для всех пользователей или по условиям на реквизиты источника — в Консоли команд.

Готово, когда в подменю «Печать» у объекта появилась команда и она формирует ожидаемую форму.

Дальнейшие правки вносятся не снятием блокировки, а через образ для разработки.

Заблокированный макет не редактируется. Путей два, и они не равнозначны.

Снять блокировку — команда печати из подменю пропадёт, и пользователи останутся без формы на всё время правок.

Создать образ для разработки — служебную копию, в которой ведётся работа, пока основной макет продолжает печататься у пользователей. Это правильный путь.

  1. Создайте образ: при блокировке в верхней части формы появляется уведомление с гиперссылкой, по которой образ создаётся и сразу открывается.
  2. Правьте образ как обычный макет — в редактировании отличий нет. Заблокировать сам образ невозможно: в подменю «Печать» он не попадает.
  3. Перенесите изменения в основной макет: Отправить в макет переносит их и оставляет образ открытым, Закрыть образ переносит и удаляет образ. Переносить можно в любой момент, не дожидаясь окончания работ.

В списке макетов образы выделены синим курсивом, а к наименованию добавляется окончание «(для разработки)».

Подробно — Образ разработки.

Формат переключается флажком «Макет в формате Open Office Documents (*.docx)» на закладке «Описание» в любой момент — но чем позже, тем больше переделок.

  1. Переключите флажок на закладке Описание.
  2. Создайте или загрузите шаблон в новом формате на закладке Макет.
  3. Области и параметры перезаполнятся из нового шаблона. Настройки заполнения параметров, у которых совпали имена, сохранятся; остальные придётся задать заново.
  4. Проверьте способы вывода областей: у офисного формата доступны не все настройки областей и не все типы полей, поэтому часть настроек табличного макета в .docx не переедет.

Ситуация: в макете нужно значение, которого в запросе нет.

  1. На закладке Наборы выберите набор и добавьте поле нужного типа — представления, нумератора, вычисляемое, алгоритма, свойства или контактной информации.
  2. Заполните настройки поля: имя, тип данных, шаблон или алгоритм — в зависимости от типа.
  3. На закладке Макет выберите область и её параметр, укажите тип значения «Значение набора» и выберите новое поле в дереве доступных полей.

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

Самая частая задача макета: таблица в печатной форме должна расти по строкам данных.

  1. На закладке Наборы убедитесь, что у набора вид «Многострочная коллекция».
  2. На закладке Макет выберите область и задайте способ вывода «По строкам коллекции».
  3. В колонке «Набор» укажите набор — именно он определяет, какие построчные поля станут доступны в параметрах области.
  4. Заполните параметры области полями вида НаборыДанных.[Набор].Строка.[Поле]; итоги по колонкам — НаборыДанных.[Набор].Итог.[Поле].[Агрегат].

Если построчных полей в дереве нет, проверьте две вещи: вид набора и колонку «Набор» у области. Без них построчные поля не предлагаются — подробнее в главе Доступные поля.