Счет на оплату

Содержание
  1. Визуальное конструирование
  2. Область БанкРеквизиты
  3. Область Заголовок
  4. Области Строка
  5. Область Подвал
  6. Область Подписи
  7. Настройка команды печати
  8. Тексты запросов
    1. Шапка
    2. Товары

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

И так, разработаем печатную форму “Счет на оплату” для конфигурации “Бухгалтерия предприятия”


Пример печатной формы "Счет на оплату"

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

ПРИМЕЧАНИЕ

Все действия, описанные в этой главе будут выполняться на демонстрационной конфигурации 1С:Бухгалтерия.

Визуальное конструирование

Для визуального конструирования печатной формы создадим новый элемент в справочнике “Макеты”. В появившемся окне редактирования введем наименование макета Счет на оплату, заполним при необходимости другие реквизиты описывающие печатную форму.

Кроме того, в табличной части “Метаданные” добавим строку (по кнопке Добавить) и укажем документ “Счет покупателю”, поскольку именно для него создается печатная форма.


Настройка основной информации о печатной форме

ПРИМЕЧАНИЕ

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

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


Макет печатной формы

ПРИМЕЧАНИЕ

Почему рекомендуется на первом этапе создавать именно макет? Содержимое параметров макета определяет данные, которые понадобится извлекать из базы данных. Более того, можно наполнять сбор данных по этапам. Основываясь на областях и тех параметрах, которые требуются для вывода области.

Необходимо отрисовать макет, разметить области и создать параметры согласно приведенному примеру на рисунке 3.3. Более подробно процесс работы с закладкой “Макет” описан в документации (часть 2.7 Макеты).

После окончания отрисовки макета, выполним обновление областей по кнопке “Обновить” над табличной частью “Области макета”. Если макет отрисован верно, в табличной части появятся все требуемые области (и параметры).

Всего на представленном макете выделено 6 областей:

Имя областиОписание данных
БанкРеквизитыБанковские реквизиты организации для оплаты счета
ЗаголовокРеквизиты счета, представление сторон (организации, контрагента)
ШапкаШапка табличной части товаров и услуг
СтрокаСтроки табличной части товаров и услуг
ПодвалПодвал табличной части товаров и услуг
ПодписиПодписи со стороны организации

Разберем заполнение каждой из областей отдельно.

Область БанкРеквизиты

Для начала сделаем вывод информации о банковских реквизитах. Чтобы получить данные, нам необходимо сделать запрос к базе и создать набор данных на основании запроса. Но, если мы создаем новую печатную форму первые запросы и наборы программа сформирует автоматически, если на закладке “Описание” указан объект, для которого создана печатная форма.

Обратите внимание, закладка “Запросы” и “Макеты” в заголовке имеет цифру “(4)”, это означает, что на данной закладке, в основной таблице имеется уже 4 строки. Перейдем на закладку “Запросы” и посмотрим, какие запросы программа добавила автоматически:

  • Шапка
  • Товары
  • ВозвратнаяТара
  • РеквизитыКодаДляОплаты

Для текущего примера нам хватит первых двух запросов (Шапка, Товары), поэтому с целью оптимизации сбора и подготовки данных рекомендуется запросы “ВозвратнаяТара” и “РеквизитыКодаДляОплаты” удалить.


Запросы для формирования печатной формы

Теперь наша задача найти информацию о банковском счете. Один из способов найти необходимый реквизит, это проанализировать имена или типы данных в шапке. Можно так же открыть форму документа (или другого объекта для которого создается печатная форма) и посмотреть заголовок искомого поля. Однако следует учитывать, что заголовки и имена реквизитов могут не совпадать. А в редких случаях даже сильно отличаться. Что мы и видим на текущем примере.

Если посмотрим на состав полей запроса Шапка (табличная часть “Поля запроса”), то увидим там поле СтруктурнаяЕдиница с типом СправочникСсылка.БанковскиеСчета”. Возможно, это то что нужно. Проверить поле мы можем 2мя путями:

  • вызвать консоль запросов, выполнить запрос и посмотреть результат
  • выполнить быструю связь поля с параметром в области макета

Проверим второй путь. Для этого быстро сделаем связь между полем запроса и параметром области макета. А потом протестируем печатную форму.

Пошагово создание связи в самом простом виде выглядит следующим образом:

  • переходим на закладку “Макеты”
  • активизируем необходимую ячейку в табличном документе или область “БанкРеквизиты”
  • активизировать строку “БанкПредставление” табличной части “Параметры области”
  • перейти в форму выбора доступных полей (двойным кликом на поле “Значение”)
  • выбрать поле НаборыДанных > Шапка > СтруктурнаяЕдиница


Команда обновления полей набора Шапка

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

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

  • при помощи конструктора запроса, по кнопке “Конструктор запроса”
  • вручную при помощи специального расширенного редактора, по кнопке “Открыть в редакторе”
  • доработав запросы в форме “Коноль запросов”
  • вручную в поле “Текст запроса”

Самый простой и визуально наглядный способ: Конструктор запроса. Однако рекомендуем использовать “Консоль запросов”, поскольку так можно не только доработать запрос, но и посмотреть результат собранных данных на примере выбранных документов.

Дополним наш запрос недостающими полями:

	Т.СтруктурнаяЕдиница.Банк.Код КАК БанкБИК,
	Т.СтруктурнаяЕдиница.Банк.КоррСчет КАК БанкКоррСчет,
	Т.СтруктурнаяЕдиница.Банк.Наименование КАК БанкПредставление,
	Т.Организация.ИНН КАК ОрганизацияИНН,
	Т.Организация.КПП КАК ОрганизацияКПП,
	Т.Организация.НаименованиеПолное КАК ОрганизацияНаименование,
	Т.СтруктурнаяЕдиница.НомерСчета КАК ОрганизацияБанкСчет

ПРИМЕЧАНИЕ

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

После редактирования запросов, программа автоматически добавит эти поля в список доступных для подбора в параметрах макета. Можно вернуться на закладку “Макет” и отредактировать параметры области. В результате, связь должна выглядеть следующим образом:


Связь параметров области "Шапка" с данными

Область Заголовок

Для данной табличной части у нас не хватает поля представления контрагента. Конечно, мы могли бы связать параметр “КонтрагентПредставление” с полем “Контрагент”, но связь с полем ссылочного типа не рекомендуется.

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

Поэтому стоит доработать запрос “Шапка” и добавить поле:

	Т.Контрагент.НаименованиеПолное КАК КонтрагентНаименование

После этого выполнить связь параметров области “Заголовок” с полями набора. Дополнительно, на текущем этапе можно отформатировать номер счета и дату. Например: если нам требуется, чтобы номер счета был без учета префикса информационной базы, для этого перейдем в настройку форматирования (колонка справа от колонки “Значение”) и выполним настройку:


Настройка форматирования поля "НомерСчета"

Аналогично можно отформатировать поле “ДатаСчета”.

Области Строка

Поскольку область “Шапка” не содержит никаких параметров, ее настройку пропускаем. Переходим к области “Строка”.

Документ “Счет покупателям” может содержать одну и более строк в табличной части, соответственно, нам необходимо, чтобы область “Строка” была напечатана столько раз, сколько существует строк в табличной части. Для этого необходимо изменить “Способ вывода” области “Строка” (табличная часть “Области макета” закладка “Макет”) на значение “По строкам коллекции” и указать значение набора “Товары”.

Кроме того следует добавить в запрос представление для номенклатуры и единицы измерения. Для этого добавим в запрос “Товары” недостающие поля:

	Т.Номенклатура.Наименование КАК ТоварНаименование,
	Т.Номенклатура.ЕдиницаИзмерения.Наименование КАК ЕдИзм

Вернемся на закладку “Макет”. Для заполнения реквизитов области “Строка” можно нажать кнопку “Заполнить” над табличной частью “Параметры области” и программа автоматически сопоставит параметры печатной формы и поля из набора “Товары”. В результате вы должны увидеть следующее:


настройки области "Строка" и связь параметров области

Рекомендуется на текущем этапе сделать указать форматирование для полей “Количество”, “Цена” и “Сумма”. Чтобы числовые значения в печатной форме выглядели более эстетично. Для этого для “Количество” задать: Длина = 15, Точность = 3. А для “Цена” и “Сумма”: Длина = 15, Точность = 2.

Область Подвал

В области “Подвал” есть несколько сложностей:

  • необходимо отдельно рассчитать сумму без НДС, НДС и с НДС
  • вывести сумму с НДС прописью

На текущем этапе необходимо доработать запрос “Товары”, чтобы сумма без НДС и с НДС были рассчитаны в нем:

	ВЫБОР
		КОГДА Т.Ссылка.СуммаВключаетНДС
			ТОГДА Т.Сумма - Т.СуммаНДС
		ИНАЧЕ Т.Сумма
	КОНЕЦ КАК СуммаБезНДС,
	ВЫБОР
		КОГДА Т.Ссылка.СуммаВключаетНДС
			ТОГДА Т.Сумма
		ИНАЧЕ Т.Сумма + Т.СуммаНДС
	КОНЕЦ КАК СуммаСНДС
  • выполнить сопоставление всех параметров области “Подвал”, кроме “СуммаПрописью”

Для формирования суммы прописью параметр области “СуммаПрописью” необходимо настроить параметр следующим образом:

  • Тип параметра = Сумма прописью
  • в форме настройки значения
    • Значение = НаборыДанных.Товары.Итог.СуммаСНДС
    • Валюта = НаборыДанных.Шапка.ВалютаДокумента
    • в форме настройки поля “По умолчанию”
      • Добавить название предмета исчисления = Истина
      • Добавить название десятичных частей предмета исчисления
      • Валюта = Российский рубль
      • Данная настройка будет использоваться, если по каким-то причинам в документе валюта не заполнена


настройки области "Подвал" и связь параметров области

В результате настройки, вы должны увидеть следующее:


настройки области "Подвал" и связь параметров области

Область Подписи

Для формирования правильного представления ФИО подписантов (в формате Фамилия И.О.), необходимо отдельно получить поля “Фамилия” и “Инициалы”. Для этого добавим код в текст запроса “Шапка”:

	Т.Руководитель.Фамилия КАК РуководительФамилия,
	Т.Руководитель.Инициалы КАК РуководительИнициалы,
	Т.ГлавныйБухгалтер.Фамилия КАК БухгалтерФамилия,
	Т.ГлавныйБухгалтер.Инициалы КАК БухгалтерИнициалы

Далее необходимо выполнить настройку параметров области. Настройка однотипная для обоих параметров. Рассмотрим на примере параметра “РуководительФИО”

  • установим значение “Конструктор строки” в колонку “Тип”
  • перейдем в настройку конструктора строки (двойной клик в колонке “Значение”)
  • при помощи кнопки “Подбор” (или Добавить) добавим поля “РуководительФамилия” и “РуководительИнициалы” (набор данных “Шапка”)


Настройка конструктора строки для параметра "РуководительФИО"

После выполнения настройки, записываем и закрываем форму. Делаем аналогично для параметра “БухгалтерФИО”. В результате настройки, вы должны увидеть следующее:


Настройки области "Подписи" и связь параметров области

Настройка команды печати

После завершения настройки, выполним финальный тест. На закладке “Описание” нажимаем кнопку “Тест печатной формы” (табличная часть Метаданные) и смотрим на полученный результат. Если все выполнено верно, печатная форма должна быть сформирована полностью.

На текущем этапе нам осталось только сделать настройку, чтобы добавилась команда печати для документа. Для этого, на закладке “Описание” активизируем строку “Счет на оплату покупателю” (табличная часть “Метаданные”) и ставим галочку в поле с картинкой принтера. При установке флажка нам станут доступны поля справа от табличной части. Заполним их, как представлено на картинке.


Настройка команды печати и блокировка печатной формы

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

  • Снять блокировку. При этом команда печати пропадет и до повторной блокировки печатная форма будет недоступна пользователям;
  • Создать образ для разработки. Разработка продолжится в отдельном макете. Результат разработки можно будет перенести в оригинальный макет, без отключения блокировки.

Тексты запросов

Если обратить внимание, все запросы имеют секцию отбора с условием Т.Ссылка В(&МассивОбъектов). Данное условие обрабатывается автоматически.

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

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

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

Шапка

ВЫБРАТЬ
	Т.Организация КАК Организация,
	Т.Склад КАК Склад,
	Т.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
	Т.Контрагент КАК Контрагент,
	Т.ДоговорКонтрагента КАК ДоговорКонтрагента,
	Т.АдресДоставки КАК АдресДоставки,
	Т.ОрганизацияПолучатель КАК ОрганизацияПолучатель,
	Т.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
	Т.Ответственный КАК Ответственный,
	Т.Комментарий КАК Комментарий,
	Т.ВалютаДокумента КАК ВалютаДокумента,
	Т.КратностьВзаиморасчетов КАК КратностьВзаиморасчетов,
	Т.СуммаСкидки КАК СуммаСкидки,
	Т.КурсВзаиморасчетов КАК КурсВзаиморасчетов,
	Т.СуммаВключаетНДС КАК СуммаВключаетНДС,
	Т.СуммаДокумента КАК СуммаДокумента,
	Т.ТипЦен КАК ТипЦен,
	Т.Руководитель КАК Руководитель,
	Т.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
	Т.ДокументБезНДС КАК ДокументБезНДС,
	Т.ДополнительныеУсловия КАК ДополнительныеУсловия,
	Т.ЗаГлавногоБухгалтераНаОсновании КАК ЗаГлавногоБухгалтераНаОсновании,
	Т.ЗаРуководителяНаОсновании КАК ЗаРуководителяНаОсновании,
	Т.СсылочныйИдентификатор КАК СсылочныйИдентификатор,
	Т.СпособДоставки КАК СпособДоставки,
	Т.ВидОперации КАК ВидОперации,
	Т.Проведен КАК Проведен,
	Т.Ссылка КАК Ссылка,
	Т.ПометкаУдаления КАК ПометкаУдаления,
	Т.Дата КАК Дата,
	Т.Номер КАК Номер,
	Т.СтруктурнаяЕдиница.Банк.Код КАК БанкБИК,
	Т.СтруктурнаяЕдиница.Банк.КоррСчет КАК БанкКоррСчет,
	Т.СтруктурнаяЕдиница.Банк.Наименование КАК БанкПредставление,
	Т.Организация.ИНН КАК ОрганизацияИНН,
	Т.Организация.КПП КАК ОрганизацияКПП,
	Т.Организация.НаименованиеПолное КАК ОрганизацияНаименование,
	Т.СтруктурнаяЕдиница.НомерСчета КАК ОрганизацияБанкСчет,
	Т.Контрагент.НаименованиеПолное КАК КонтрагентНаименование,
	Т.Руководитель.Фамилия КАК РуководительФамилия,
	Т.Руководитель.Инициалы КАК РуководительИнициалы,
	Т.ГлавныйБухгалтер.Фамилия КАК БухгалтерФамилия,
	Т.ГлавныйБухгалтер.Инициалы КАК БухгалтерИнициалы
ИЗ
	Документ.СчетНаОплатуПокупателю КАК Т
ГДЕ
	Т.Ссылка В(&МассивОбъектов)

Товары

ВЫБРАТЬ
	Т.Номенклатура КАК Номенклатура,
	Т.Содержание КАК Содержание,
	Т.Количество КАК Количество,
	Т.Цена КАК Цена,
	Т.Сумма КАК Сумма,
	Т.ПроцентСкидки КАК ПроцентСкидки,
	Т.СуммаСкидки КАК СуммаСкидки,
	Т.СтавкаНДС КАК СтавкаНДС,
	Т.СуммаНДС КАК СуммаНДС,
	Т.КлючКалькуляцииРасходов КАК КлючКалькуляцииРасходов,
	Т.НомерСтроки КАК НомерСтроки,
	Т.Ссылка КАК Ссылка,
	Т.Номенклатура.Наименование КАК ТоварНаименование,
	Т.Номенклатура.ЕдиницаИзмерения.Наименование КАК ЕдИзм,
	ВЫБОР
		КОГДА Т.Ссылка.СуммаВключаетНДС
			ТОГДА Т.Сумма - Т.СуммаНДС
		ИНАЧЕ Т.Сумма
	КОНЕЦ КАК СуммаБезНДС,
	ВЫБОР
		КОГДА Т.Ссылка.СуммаВключаетНДС
			ТОГДА Т.Сумма
		ИНАЧЕ Т.Сумма + Т.СуммаНДС
	КОНЕЦ КАК СуммаСНДС
ИЗ
	Документ.СчетНаОплатуПокупателю.Товары КАК Т
ГДЕ
	Т.Ссылка В(&МассивОбъектов)