Счет на оплату
Практическое знакомство с конструктором начнём с простой печатной формы. В этом примере действия разработчика разобраны подробно, шаг за шагом; в следующих примерах они будут только кратко перечисляться. Поэтому глава пригодится и новичку, который конструктор ещё не видел, и тому, кому нужно освежить порядок работы.
Разработаем печатную форму «Счет на оплату» для конфигурации «Бухгалтерия предприятия».

Пример печатной формы «Счет на оплату». QR-код для оплаты и колонка скидки в этой главе не разбираются — про код см. QR-код
Визуальное конструирование
Заголовок раздела «Визуальное конструирование»Создадим новый элемент в справочнике «Макеты (PrintWizard)». В открывшемся конструкторе на закладке Описание введём наименование макета Счет на оплату и при необходимости заполним остальные реквизиты.
В таблице «Метаданные» добавим строку (кнопка Добавить) и укажем документ «Счет на оплату покупателю» (Документ.СчетНаОплатуПокупателю) — именно для него создаётся печатная форма.

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

Макет печатной формы “Счет на оплату”
Отрисуйте макет, разметьте области и создайте параметры, как на рисунке выше. Подробно работа с этой закладкой описана в главе Макет.
Состав областей обновляется по мере редактирования макета: разметили новую область — она появляется в таблице «Области макета»; изменили содержимое области — обновляется список её параметров. Кнопки «Заполнить» над таблицей «Области макета» и «Обновить» над таблицей «Параметры области» пересобирают состав принудительно.
Отслеживается не всякая правка: после удаления или перестановки строк макета таблица областей может разойтись с ним — например, остаться со строкой области, которой в макете больше нет. Пересборка такую строку не убирает, и это не недосмотр: повтор области разрешён, вторая строка с тем же именем означает второй вывод той же области, и отличить намеренный повтор от лишней строки программа не может. Лишнюю строку удалите в таблице областей вручную — см. Макет.
Всего на макете выделено 6 областей:
| Имя области | Описание данных |
|---|---|
| БанкРеквизиты | Банковские реквизиты организации для оплаты счета |
| Заголовок | Реквизиты счета, представление сторон (организации, контрагента) |
| Шапка | Шапка табличной части товаров и услуг |
| Строка | Строки табличной части товаров и услуг |
| Подвал | Подвал табличной части товаров и услуг |
| Подписи | Подписи со стороны организации |
Разберём заполнение каждой области отдельно.
Два способа получить поле
Заголовок раздела «Два способа получить поле»Прежде чем переходить к областям, стоит зафиксировать главное правило: не каждое недостающее поле требует правки запроса.
| Что нужно | Как получить |
|---|---|
| Реквизит по ссылке — банк организации, полное наименование контрагента, единица измерения номенклатуры | Развернуть ссылочное поле в дереве доступных полей и выбрать нужный реквизит. Запрос править не требуется |
| Вычисление — сумма без НДС, признак, значение по условию | Дописать запрос набора |
| Данные из другой таблицы, отбор, группировка | Дописать запрос набора |
Ссылочное поле в дереве разворачивается на любую глубину: СтруктурнаяЕдиница → Банк → Код. Подробно дерево доступных полей описано в главе Доступные поля.
Область БанкРеквизиты
Заголовок раздела «Область БанкРеквизиты»Начнём с вывода банковских реквизитов. Данные берутся из наборов, а наборы — из запросов; но если объект метаданных указан на закладке «Описание», первые запросы и наборы программа создаёт сама.
Обратите внимание: закладки «Запросы» и «Наборы» в заголовке имеют цифру «(4)» — это число строк в основной таблице закладки. Перейдём на закладку Запросы и посмотрим, что программа добавила автоматически:
- Шапка
- Товары
- ВозвратнаяТара
- РеквизитыКодаДляОплаты
Для нашего примера хватит первых двух. Запросы «ВозвратнаяТара» и «РеквизитыКодаДляОплаты» рекомендуется удалить — чтобы не собирать данные, которые не понадобятся.

Запросы для формирования печатной формы
Теперь найдём сведения о банковском счёте. Один из способов найти нужный реквизит — посмотреть на имена и типы данных полей в наборе «Шапка». Можно также открыть форму документа и посмотреть заголовок искомого поля, но учтите: заголовки и имена реквизитов совпадают не всегда, а иногда сильно расходятся. Как раз наш случай.
В составе полей набора Шапка есть поле СтруктурнаяЕдиница с типом СправочникСсылка.БанковскиеСчета. Похоже, это то, что нужно. Проверить можно двумя путями: выполнить запрос в консоли запросов и посмотреть результат — или сразу связать поле с параметром области и напечатать пробную форму.
Пойдём вторым путём:
- переходим на закладку Макет;
- активизируем нужную ячейку в табличном документе или строку области «БанкРеквизиты»;
- активизируем строку «БанкПредставление» в таблице «Параметры области»;
- двойным кликом в колонке «Значение» открываем форму «Доступные поля»;
- выбираем
НаборыДанных→Шапка→СтруктурнаяЕдиница.

Выбор поля в форме «Доступные поля»
Проверим результат: в командной панели формы нажимаем «Печать с выбором», указываем документ — и программа формирует печатную форму. Если макет изменён и не записан, форма предложит записать его сама. Повторить печать по тому же документу можно кнопкой «Печать», без повторного выбора.
Тест показывает, что реквизит подходит, но он содержит ссылку на банковский счёт, а вывести нужно реквизиты банка и организации. Здесь и пригодится разворачивание ссылочных полей: в форме «Доступные поля» раскрываем узел СтруктурнаяЕдиница, внутри него — узел Банк, и выбираем нужный реквизит.
Заполним параметры области:
| Параметр области | Поле |
|---|---|
| БанкПредставление | Шапка → СтруктурнаяЕдиница → Банк → Наименование |
| БанкБИК | Шапка → СтруктурнаяЕдиница → Банк → Код |
| БанкКоррСчет | Шапка → СтруктурнаяЕдиница → Банк → КоррСчет |
| ОрганизацияБанкСчет | Шапка → СтруктурнаяЕдиница → НомерСчета |
| ОрганизацияНаименование | Шапка → Организация → НаименованиеПолное |
| ОрганизацияИНН | Шапка → Организация → ИНН |
| ОрганизацияКПП | Шапка → Организация → КПП |
Запрос «Шапка» при этом не меняется.

Связь параметров области “БанкРеквизиты” с данными
Область Заголовок
Заголовок раздела «Область Заголовок»Для этой области не хватает представления контрагента. Можно было бы связать параметр «КонтрагентПредставление» напрямую с полем Контрагент, но связывать параметр с полем ссылочного типа не рекомендуется.
Поэтому выбираем Шапка → Контрагент → НаименованиеПолное.
Здесь же удобно привести к нужному виду номер и дату счёта. Если номер должен печататься без префикса информационной базы, открываем настройку форматирования (колонка справа от колонки «Значение»), переходим на закладку «Строка» и включаем «Подготовить номер на печать». Настройка убирает префиксы и лидирующие нули; отдельными флажками можно оставить префикс информационной базы или организации.

Настройка форматирования номера счета
Дату счёта форматируем на закладке «Дата». Полный перечень настроек — в главе Форматирование.
Область Строка
Заголовок раздела «Область Строка»Область «Шапка» параметров не содержит, её настройку пропускаем и переходим к области «Строка».
Документ «Счет на оплату покупателю» может содержать одну и более строк табличной части, поэтому область «Строка» должна печататься столько раз, сколько строк в документе. В таблице «Области макета» на закладке Макет меняем «Способ вывода» области «Строка» на «По строкам коллекции» и указываем набор Товары.
Параметры этой области заполняются почти сами: программа подставляет поля набора, имена которых совпадают с именами параметров. Остальное дозаполняем вручную:
| Параметр области | Поле |
|---|---|
| ТоварНаименование | Товары → Номенклатура → Наименование |
| ЕдИзм | Товары → Номенклатура → ЕдиницаИзмерения → Наименование |

Настройки области “Строка” и связь параметров области
На этом этапе стоит задать форматирование числовых полей, чтобы значения выглядели аккуратно: для «Количество» — Длина = 15, Точность = 3; для «Цена» и «Сумма» — Длина = 15, Точность = 2.
Область Подвал
Заголовок раздела «Область Подвал»В области «Подвал» две сложности:
- отдельно рассчитать сумму без НДС, НДС и с НДС;
- вывести сумму с НДС прописью.
Первая — как раз тот случай, когда без правки запроса не обойтись: это вычисление, а не реквизит по ссылке. Дополним запрос «Товары» (текст такого фрагмента тоже можно попросить у ассистента — открытый запрос он видит целиком):
ВЫБОР КОГДА Т.Ссылка.СуммаВключаетНДС ТОГДА Т.Сумма - Т.СуммаНДС ИНАЧЕ Т.Сумма КОНЕЦ КАК СуммаБезНДС, ВЫБОР КОГДА Т.Ссылка.СуммаВключаетНДС ТОГДА Т.Сумма ИНАЧЕ Т.Сумма + Т.СуммаНДС КОНЕЦ КАК СуммаСНДСРедактировать запрос можно несколькими способами:
- конструктором запроса — по кнопке «Конструктор запроса»;
- вручную в расширенном редакторе — по кнопке «Открыть в редакторе»;
- в форме «Консоль запросов»;
- вручную в поле «Текст запроса».
Самый наглядный — конструктор запроса. Но рекомендуем консоль запросов: в ней можно не только доработать запрос, но и сразу посмотреть собранные данные на примере выбранных документов.
Дальше сопоставляем все параметры области «Подвал», кроме «СуммаПрописью». Итоговые суммы берутся из ветви Итог набора-коллекции — считать их в запросе не нужно: например, НаборыДанных.Товары.Итог.СуммаБезНДС.Сумма.
Для параметра «СуммаПрописью» настройка такая:
- Тип параметра = Сумма прописью
- в форме настройки значения:
- Значение =
НаборыДанных.Товары.Итог.СуммаСНДС.Сумма - Валюта =
НаборыДанных.Шапка.ВалютаДокумента - в форме настройки поля «По умолчанию»:
- Добавить название предмета исчисления = Истина
- Добавить название десятичных частей предмета исчисления = Истина
- Валюта = Российский рубль
- эта настройка используется, если в документе валюта по каким-то причинам не заполнена
- Значение =

Настройка суммы прописью
В результате настройка области выглядит так:

Настройки области “Подвал” и связь параметров области
Кроме суммы, у ветви Итог есть и другие агрегаты — среднее, максимум, нарастающий итог, процент к итогу. Они описаны в главе Доступные поля.
Область Подписи
Заголовок раздела «Область Подписи»Требуется вывести ФИО подписантов в виде «Иванов И. И.». Отдельные поля с фамилией и инициалами для этого не нужны: достаточно взять поле с полным ФИО и задать ему форматирование.
- для параметра «РуководительФИО» выбираем
Шапка→Руководитель→ поле с полным ФИО (в демонстрационной базе этоНаименование); - открываем настройку форматирования (крайняя правая колонка), переходим на закладку «Строка»;
- в настройке «Вариант вывода ФИО» выбираем нужный шаблон — «Фамилия И. О.».

Настройка варианта вывода ФИО
Так же настраиваем параметр «БухгалтерФИО». В результате:

Настройки области “Подписи” и связь параметров области
Настройка команды печати
Заголовок раздела «Настройка команды печати»Настройка закончена — выполним финальный тест кнопкой «Печать с выбором» в командной панели. Если всё сделано верно, печатная форма формируется полностью.
Осталось добавить команду печати у документа. На закладке Описание активизируем строку «Счет на оплату покупателю» в таблице «Метаданные» и ставим флажок в колонке с пиктограммой принтера. После этого станут доступны поля справа от таблицы — заполним их, как показано на рисунке.

Настройка команды печати и блокировка печатной формы
Чтобы команда печати появилась у пользователей, макет нужно заблокировать. На этом разработка печатной формы завершается, и форма становится доступна пользователям программы.
Порядок команд в подменю «Печать», их видимость по пользователям и ролям настраиваются отдельно — см. главу Консоль команд.
Дальнейшая разработка возможна двумя путями:
- снять блокировку — при этом команда печати пропадёт и до повторной блокировки печатная форма будет пользователям недоступна;
- создать образ для разработки — разработка продолжится в отдельном макете, а результат переносится в оригинал без снятия блокировки.
Тексты запросов
Заголовок раздела «Тексты запросов»Все запросы имеют секцию отбора с условием Т.Ссылка В(&МассивОбъектов). Это условие обрабатывается автоматически.
Печатная форма может формироваться сразу по нескольким документам (ссылкам). В таком случае данные собираются сразу для всех объектов, а при подготовке наборов для каждой ссылки выполняется выборка соответствующих строк из результата запроса — и только затем формируется печатная форма. Сбор данных единым запросом для всех объектов печати позволяет оптимизировать обращения к базе.
Попробуйте удалить этот отбор — программа укажет на ошибку. При этом добавлять запросы, не привязанные к ссылкам объекта метаданных, можно; подробнее — в главе Запросы.
Запрос сформирован программой автоматически; править его не потребовалось — все дополнительные реквизиты получены разворачиванием ссылочных полей в дереве.
ВЫБРАТЬ Т.Организация КАК Организация, Т.Склад КАК Склад, Т.ПодразделениеОрганизации КАК ПодразделениеОрганизации, Т.Контрагент КАК Контрагент, Т.ДоговорКонтрагента КАК ДоговорКонтрагента, Т.АдресДоставки КАК АдресДоставки, Т.ОрганизацияПолучатель КАК ОрганизацияПолучатель, Т.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница, Т.Ответственный КАК Ответственный, Т.Комментарий КАК Комментарий, Т.ВалютаДокумента КАК ВалютаДокумента, Т.КратностьВзаиморасчетов КАК КратностьВзаиморасчетов, Т.СуммаСкидки КАК СуммаСкидки, Т.КурсВзаиморасчетов КАК КурсВзаиморасчетов, Т.СуммаВключаетНДС КАК СуммаВключаетНДС, Т.СуммаДокумента КАК СуммаДокумента, Т.ТипЦен КАК ТипЦен, Т.Руководитель КАК Руководитель, Т.ГлавныйБухгалтер КАК ГлавныйБухгалтер, Т.ДокументБезНДС КАК ДокументБезНДС, Т.ДополнительныеУсловия КАК ДополнительныеУсловия, Т.ЗаГлавногоБухгалтераНаОсновании КАК ЗаГлавногоБухгалтераНаОсновании, Т.ЗаРуководителяНаОсновании КАК ЗаРуководителяНаОсновании, Т.СсылочныйИдентификатор КАК СсылочныйИдентификатор, Т.СпособДоставки КАК СпособДоставки, Т.ВидОперации КАК ВидОперации, Т.Проведен КАК Проведен, Т.Ссылка КАК Ссылка, Т.ПометкаУдаления КАК ПометкаУдаления, Т.Дата КАК Дата, Т.Номер КАК НомерИЗ Документ.СчетНаОплатуПокупателю КАК ТГДЕ Т.Ссылка В(&МассивОбъектов)К автоматически сформированному запросу добавлены только две вычисляемые колонки — их разворачиванием ссылок не получить.
ВЫБРАТЬ Т.Номенклатура КАК Номенклатура, Т.Содержание КАК Содержание, Т.Количество КАК Количество, Т.Цена КАК Цена, Т.Сумма КАК Сумма, Т.ПроцентСкидки КАК ПроцентСкидки, Т.СуммаСкидки КАК СуммаСкидки, Т.СтавкаНДС КАК СтавкаНДС, Т.СуммаНДС КАК СуммаНДС, Т.КлючКалькуляцииРасходов КАК КлючКалькуляцииРасходов, Т.НомерСтроки КАК НомерСтроки, Т.Ссылка КАК Ссылка, ВЫБОР КОГДА Т.Ссылка.СуммаВключаетНДС ТОГДА Т.Сумма - Т.СуммаНДС ИНАЧЕ Т.Сумма КОНЕЦ КАК СуммаБезНДС, ВЫБОР КОГДА Т.Ссылка.СуммаВключаетНДС ТОГДА Т.Сумма ИНАЧЕ Т.Сумма + Т.СуммаНДС КОНЕЦ КАК СуммаСНДСИЗ Документ.СчетНаОплатуПокупателю.Товары КАК ТГДЕ Т.Ссылка В(&МассивОбъектов)