1с параметры авторегистрации печатных форм

Внешние печатные формы. Авторегистрация в базе данных

Одной из самых распространенных задач которую приходится решать большинству разработчиком 1с, является написание и модификация разнообразных печатных форм. Часто бывает нужно реализовать для документа несколько вариантов печатной формы: печать цен с НДС в расходной накладной, печать без НДС, печать с логотипом компании, печать на маленьких листочка, на больших, на наклейках и так далее и тому подобное. Добавление новых печатных форм не очень радовало программистов, поскольку усложняло поддержку конфигурации в последующем, нужно было при обновлении конфигурации помнить, что и где дописывалось и следить, чтобы все обновилось корректно. С выходом 8-ки и внедрением в стандартные конфигурации возможности подключение внешних печатных форма, нелегкая жизнь разработчиков 1с немного упростилась. Теперь добавление новой печатной формы не приводило к изменению конфигурации, что в свою очередь позволяло легче обновлять стандартные конфигурации. Все прекрасно, но для каждой конфигурации, к которой нужно добавить внешнюю печатную форму нужно прописывать вручную к какому документу добавляется печатная форма, какая надпись будет на кнопке, т.д. Сегодня ми постараемся разобраться, как автоматизировать процесс добавления внешних печатных форм в конфигурацию. На самом деле процесс авторегистрации внешней печатной формы очень легкий и происходит в два этапа.

Для начала нужно создать во внешней печатной форме новый макет со специальным названием «Параметры_Авторегистрации ».

После чего указать в первой ячейке макета ссылку, в какой документ будет прописываться наша печатная форма, например «Документы.АвансовыйОтчет».

В поле наименование попадет значение поля «Синоним» внешней печатной формы.

image001

Если вы все сделали правильно тогда при создании в справочнике внешних отчетов и обработок и выборе нашего файла возникнет окно с запросом на применение параметров авторегистрации.

image003

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

image005

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

Источник

Расширенная регистрация внешних печатных форм

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

Новое! Добавлена возможность выбора из имеющихся зарегистрированных печатных форм.
Новое! Добавлены настройки, ускоряющие ввод нескольких форм подряд. Достаточно давить на две кнопки «Заменить» и «Записать».

Для тех, кто не раз регистрировал внешние печатные формы и хотел бы ускорить процесс, этот материал может оказаться интересным. Остальным рекомендую изучить «Внешние печатные формы в восьмерке» //infostart.ru/public/16952/

После того, как я придумал печатную форму с возможностью выбора лица для подписи //infostart.ru/public/60105, захотелось большего. Например, сделать одну форму для нескольких сходных по структуре документов. Сказано – сделано. Благо в печатной форме можно использовать «Дополнительные параметры». При регистрации достаточно для каждой строки таблицы «Принадлежность печатной формы» указать параметр, а в функции Печать() по этому параметру выбрать нужный алгоритм получения табличного документа.

regpf1

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

Но в 1С 8.1 УПП 1.2 есть возможность в печатной форме указать параметры авторегистрации! Увы, максимально, чего можно добиться, это автоматом добавлять в табличную часть уникальные объекты в первую колонку. К счастью, есть исходный код стандартной формы справочника «ВнешниеОбработки». Всё не так запущено. Добавить новые возможности авторегистрации не так уж и сложно. Удивительно, что это не сделали авторы конфигурации.

Поскольку речь идет не о полностью универсальной обработке для тиражирования в массы, то ограничимся минимумом. Условимся, что в макете «Параметры_Авторегистрации» регистрируемой печатной формы третья колонка – это «Заменяемая печатная форма», четвертая – «Дополнительные параметры». При этом параметры пишем в формате «имя параметра1=значение параметра1; имя параметра2=значение параметра2».

regpf3

Сама обработка делается на раз-два. Создаем пустую обработку. Бросаем в формы форму «ФормаЭлемента» из справочника «ВнешниеОбработки» и … всё! Обработку можно использовать! Слава 1С! Правда новая форма будет делать то же самое, что и старая. Т.е. регистрировать внешние печатные формы «без наворотов».

Что ж, и нам есть работа. Правим процедуру «КоманднаяПанельФайлаИсточникаЗаменитьФайл». Добавим новые колонки:

Выберем выберем значения из макета

Дополним СтрокаТаблицыПринадлежности значениями Заменяемой печатной формы и Дополнительных параметров

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

Теперь самое интересное – заполнение «Дополнительных параметров». Выглядит страшно, заполняется просто.

Вот и все! Ах, да. В конце модуля надо добавить

Теперь форма знает, что мы имеем дело не с какой-то обработкой, а с печатной формой.

regpf2

Загружаем обработку «ЗаполнениеПринадлежностиВнешнихПечатныхФорм», из неё загружаем печатную форму с настроенными параметрами авторегистрации и получаем заполненную табличную часть с «Заменяемыми печатными формами» и «Дополнительными параметрами».

Конечно, здесь многое можно добавить. Например, разбирать параметры не только, как строковые значения, но и как числа, даты и более сложные типы. Флаг вам в руки!

Обновление от 09.11.12. Добавлены настройки, ускоряющие ввод нескольких форм подряд. Галка «Новый файл = новая запись» позволяет при загрузке нового файла обработки автоматически создавать новую запись. Если отмечено «Чистить таблицу при смене файла«, то при загрузке нового файла чистится таблица принадлежности, актуально при погашнной «Новый файл = новая запись«. «Авторегистрация» подавляет вопрос «Указанная внешняя печатная форма содержит параметры авторегистрации. Использовать их при регистрации?».

Чтобы не считать в уме, сколько же новых обработок было добавлено, на форме размещен счетчик «Добавленых новых«, а в служебных сообщениях указывается что добавлено.

Следует учесть, что если во ВнешнихОбработках уже есть печатная форма с таким же именем файла, то она заменяется новой без создания новой записи. Счетчик меняться не будет.

Теперь всё ещё проще, достаточно давить на две кнопки » Заменить» и «Записать»!

Источник

Внешние обработки, печатные формы, обработки по заполнению табличных частей

В данном материале описываются особенности реализации механизма подключения «Внешние обработки, печатные формы, обработки по заполнению табличных частей» (далее ВПФО). Также перечисляются требования, предъявляемые к внешним обработкам, для возможности их использования данным механизмом.

Общее описание

Механизм предназначен для подключения (без изменения конфигурации):

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

Для реализации механизма ВПФО используется справочник «Внешние обработки».

Для справочника предусмотрены специализированные реквизиты*:

ПРИМЕЧАНИЕ
Полный перечень реквизитов будет описан ниже, в разделе Техническая реализация механизма «Внешние обработки, печатные формы, обработки по заполнению табличных частей»

Для удобства, формы списков ВПФО вызываются раздельно, с предустановленным отбором по реквизиту «Вид обработки», из подменю «Сервис».

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

Для остальных пользователей назначаются права на чтение(использование) и запись(изменение) по каждому элементу справочника ВПФО.

Преимущества использования механизма ВПФО перед механизмом платформы открытия внешних обработок:

Описание видов справочника ВПФО и требования к подключаемым внешним обработкам

Рассмотрим каждый вид ВПФО по отдельности.

Произвольная обработка

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

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

Основная форма для произвольной обработки должна быть определена обязательно.

Обработка для заполнения ТЧ объектов

Для обработок заполнения ТЧ необходимо указывать внешнюю обработку (файл на диске, с расширением epf), список объектов и их ТЧ, для которых необходимо использовать данную обработку.

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

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

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

Инициализировать (Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта)

Наличие экспортной процедуры «Инициализировать()» в модуле объекта обработки с видом «Заполнение табличных частей» обязательно. В теле данной процедуры должен располагаться программный код, заполняющий табличную часть в соответствии с назначением обработки.

Обработка так же может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки». Макет должен состоять из 2-х колонок – «полное имя объекта» и «имя табличной части».

Пример макета Параметры_Авторегистрации:

Внешняя печатная форма

Для подключаемых внешних печатных форм указывается:

Для каждого типа объекта дополнительно можно указать:

Вызов диалога настройка условий отбора осуществляется при начале выбора значения в колонке «отбор»:

fieldchoice

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

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

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

Для сохраненной внешней обработки:

Наличие реквизита «СсылкаНаОбъект» и экспортной функции «Печать()» в модуле объекта обработки с видом «Внешняя печатная форма» обязательно.

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

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

Пример макета Параметры_Авторегистрации:

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

Техническая реализация механизма «Внешние обработки, печатные формы, обработки по заполнению табличных частей»

В базе данных внешние обработки, печатные формы, обработки по заполнению табличных частей хранятся в справочнике «Внешние обработки». Справочник имеет следующую структуру:

structure

ТабличнаяЧасть.Принадлежность. Хранит типы объектов, для которых задается ВПФО и прочие описанные ниже параметры. Табличная часть используется для элементов с видом обработки: «Печатная форма» или «Заполнение табличных частей».

Реквизиты табличной части:

** Используется только для элементов с видом обработки: «Заполнение табличных частей»
*** Используется только для элементов с видом обработки: «печатная форма».

Подключение дополнительных печатных форм к формам объектов конфигурации

Механизм дополнительных печатных форм является расширением стандартного механизма печатных форм объекта. Добавление дополнительной формы в общий список форм выполняется в процедурах модуля формы объекта перед открытием, после записи и при нажатии на кнопку «Установить печать по умолчанию».
Подменю «Печать» и кнопка «Печать по умолчанию» в форме объекта не должны присутствовать в обязательном порядке. Они формируются программно, в том случае, если есть хоть одна печатная форма и задана печать по умолчанию.

Подключение обработок по заполнению табличных частей к формам объектов конфигурации

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

Источник

Создание печатной формы 1С 8 пошаговая инструкция

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

Создание печатной формы 1С. Постановка задачи

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

В виде таблицы вывести данные табличной части Товары документа. Таблица должна включать в себя следующие колонки:

Файл внешней обработки

1. %D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5 %D1%84%D0%B0%D0%B9%D0%BB%D0%B0 %D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B5%D0%B9 %D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8

В открывшемся окошке выберем пункт Внешняя обработка.

2. %D0%92%D1%8B%D0%B1%D0%BE%D1%80 %D0%B2%D0%B8%D0%B4%D0%B0 %D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0 1%D0%A1

Далее в поле Имя необходимо вписать название внешней обработки. В нашем случае назовем ее просто: «ПечатнаяФорма», поле синоним при этом заполнится автоматически. Обратите внимание, что в поле Имя, внешней обработки, следует писать название без пробелов и знаков препинания.

Добавим реквизит внешней обработки СсылкаНаОбъект и выберем для него тип ДокументСсылка.ПоступлениеТоваровУслуг. Для этого в дереве метаданных внешней обработки 1С выделим пункт Реквизиты и нажмем кнопку Добавить (кнопка с зеленым плюсом). В правой части экрана откроется окно свойств реквизита, в поле Имя впишем — СсылкаНаОбъект. В поле Тип нажмем кнопку с тремя точками.

3. %D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5 %D1%80%D0%B5%D0%BA%D0%B2%D0%B8%D0%B7%D0%B8%D1%82%D0%B0 %D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B5%D0%B9 %D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8

В дереве типов раскроем ветку ДокументСсылка, и найдем там элемент ПоступлениеТоваровУслуг, поставим напротив него галочку и нажмем ОК.

Создание макета печатной формы

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

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

4. %D0%9A%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80 %D0%BC%D0%B0%D0%BA%D0%B5%D1%82%D0%B0 1%D0%A1

Добавление шапки макета

В первую очередь создадим область Шапка, в нее будут выводится данные для заголовка печатной формы. Для данной области нам потребуется семь строк макета. Выделим их и, как я уже писал выше, нажмем сочетание клавиш Ctrl + Shift + N, в поле Имя напишем «Шапка» и нажмем кнопку ОК.

5. %D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5 %D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D0%B8 %D0%BC%D0%B0%D0%BA%D0%B5%D1%82%D0%B0 1%D0%A1

Заполним область макета нужными нам данными. Обычно ни одна печатная форма не обходится без заголовка, поэтому создадим его и в нашей шапке макета. Так как в заголовке помимо названия печатной формы мы будем выводить еще и номер документа из которого она была напечатана, то текст заголовка в макете мы зададим параметром. Параметр макета — это специально обозначенная ячейка макета, в которую при помощи встроенного языка 1С 8 можно выводить различные данные. Заголовок должен выводится на всю ширину печатной формы, поэтому определимся сколько ячеек макета нам будет достаточно для печати на стандартной альбомной ориентации листа.

Заголовок печатной формы должен выделяться среди прочего текста, поэтому еще раз выделим ячейку и при помощи пиктограмм на панели форматирования макета, поставим выравнивание текста По центру и размер шрифта 14.

6. %D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 %D1%8F%D1%87%D0%B5%D0%B9%D0%BA%D0%B8 %D0%BC%D0%B0%D0%BA%D0%B5%D1%82%D0%B0

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

7. %D0%A8%D0%B0%D0%BF%D0%BA%D0%B0 %D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BD%D0%BE%D0%B9 %D1%84%D0%BE%D1%80%D0%BC%D1%8B 1%D0%A1

На рисунке видно, как отличаются параметры макета, от обычного текста.

Добавление шапки таблицы макета

Последнее, что нам необходимо создать в данной области макета — это шапка таблицы, в которую будут выводится данные табличной части Товары. Колонки необходимые для таблицы были описаны в разделе «Постановка задачи». Шапку таблицы также создадим используя объединение ячеек и написания текста (названий колонок). Границы шапки таблицы выделим при помощи инструмента Рамка, который расположен на панели форматирования макета.

8. %D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5 %D1%88%D0%B0%D0%BF%D0%BA%D0%B8 %D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B %D0%B2 %D0%BC%D0%B0%D0%BA%D0%B5%D1%82%D0%B5 1%D0%A1

Добавление таблицы в макет

Создадим в макете еще одну область — Данные. В нее будет выводится таблица данных табличной части Товары. Для данной области нам понадобится только одна строка макета. Чтобы вывести все строки табличной части в печатную форму мы будем заполнять и выводить данную область нужное количество раз. Колонки в области Данные должны совпадать с колонками шапки таблицы, поэтому заполнить ее не составит труда. Единственное отличие — в области Данные нам нужны параметры, а не просто текст. Также заметьте, что по умолчанию числовые параметры форматируются по правому краю, а текстовые по левому. Для выделения колонок, также необходимо использовать инструмент Рамка.

9. %D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C %D0%94%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5 %D0%BC%D0%B0%D0%BA%D0%B5%D1%82%D0%B0 %D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BD%D0%BE%D0%B9 %D1%84%D0%BE%D1%80%D0%BC%D1%8B

Добавление подвала в макет

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

В итоге должен получиться макет следующего вида:

10. %D0%9C%D0%B0%D0%BA%D0%B5%D1%82 %D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BD%D0%BE%D0%B9 %D1%84%D0%BE%D1%80%D0%BC%D1%8B

Создание печатной формы 1С. Программирование

11. %D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4 %D0%B2 %D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C %D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0 %D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BD%D0%BE%D0%B9 %D1%84%D0%BE%D1%80%D0%BC%D1%8B

В модуле объекта внешней печатной формы необходимо создать экспортную функцию Печать().

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

Инициализация основных переменных

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

В переменную Макет получим созданный нами макет печатной формы. Для этого используем встроенную функцию ПолучитьМакет( ).

Все области макета получим в переменные. Для этого используем метод макета ПолучитьОбласть( ).

Вывод шапки печатной формы в табличный документ

Все необходимые переменные инициализированы. Приступим к заполнению и выводу областей макета в табличный документ. В первую очередь заполним заголовок печатной формы, для этого нам необходимо передать в параметр ТекстЗаголовка, который мы создали в макете, нужный нам текст. Для заполнения значений параметров у области макета существует специальная коллекция, которая так и называется — Параметры. Из которой через «.» можно получить любой параметр. В текст заголовка передадим текст: «Печатная форма», а также номер документа.

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

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

Написание запроса для печатной форы

Займемся заполнением и выводом области Данные. Создание печатной формы 1С подразумевает и написание запроса, нам он необходим для получения данных табличной части Товары и цен Номенклатуры на текущую дату будем использовать Запрос. Язык запросов 1С 8 похож на SQL, а точнее практически копирует возможности его оператора SELECT, но при этом весь запрос пишется на русском языке. Поэтому если вы хотя бы отдаленно знакомы с SQL, то и язык запросов 1С 8 поймете легко.

В данной печатной форме запрос будет довольно простым и многие скажут, что можно было бы обойтись и без него, но знание языка запросов и умение его грамотно использовать — одно из главных умений программиста 1С. Запросы позволяют используя меньшие ресурсы получать сложнейшие выборки данных, а также в тексте запроса намного легче разобраться, чем в программном коде написанном без использования запроса (или с минимальным его использованием). К тому же, в 1С 8 есть очень хороший конструктор запросов, позволяющий в интерактивном режиме собирать запрос из нужных таблиц.

Создадим переменную, которая будет содержать в себе запрос.

Текст запроса будем составлять при помощи конструктора запросов. Для начала напишем:

Поставим курсор мышки между кавычками, нажмем правую кнопку мыши. В открывшемся контекстном меню выберем пункт Конструктор запроса, он очень поможет нам в создании печатной формы 1С. После этого откроется окно конструктора запроса, оно содержит много вкладок, но для нашего запроса понадобятся только четыре: «Таблицы и поля», «Связи», «Условия», «Объединения / Псевдонимы».

12. %D0%9A%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80 %D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2 1%D0%A1

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

В левой части окна конструктора найдем столбец База данных. В нем находится дерево всех объектов метаданных, найдем нужные нам. Для этого раскроем ветку Документы и отыщем документ ПоступлениеТоваровУслуг, раскроем его и найдем табличную часть Товары, перетащим ее в столбец конструктора запросов Таблицы. Перетащить можно тремя способами: собственно перетаскиванием, двойным щелчком по таблице или выделив ее и нажав кнопку «>». Раскроем ветку РегистрыСведений и найдем там таблицу ЦеныНоменклатуры.СрезПоследних, также перетащим ее в столбец Таблицы. Этих двух таблиц достаточно для нашего запроса.

Выберем нужные нам поля из полученных таблиц. Для этого в столбце Таблицы раскроем таблицу ПоступлениеТоваровУслугТовары и найдем поля: Номенклатура, Сумма, Цена, Количество и перетащим их в третий столбец конструктора — Поля. Раскроем таблицу ЦеныНоменклатурыСрезПоследних, найдем поле Цена и тоже перетащим его в Поля.

13. %D0%9A%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80 %D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2 %D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B %D0%B8 %D0%BF%D0%BE%D0%BB%D1%8F

Структура таблиц и полей нашего запроса готова, теперь займемся условиями. Нам необходимо чтобы данные табличной части Товары брались не из всех поступлений, а только из того, которое мы печатаем. Для этого наложим условие на таблицу ПоступлениеТоваровУслугТовары. Перейдем на закладку «Условия» конструктора запросов. В колонке Поля расположены выбранные нами ранее таблицы, для условия нам понадобится поле Ссылка из таблицы ПоступлениеТоваровУслугТовары, перетащим его в окно Условия.

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

После того, как в окно Условия мы добавили поле Ссылка, конструктор запросов сам создаст параметр с аналогичным названием и расположит его после знака «=». Данный параметр можно переименовать, если есть желание. В тексте запроса параметры помечаются знаком «&», но в данном случае этого делать не нужно, так как подразумевается, что во второй части условия стоит параметр, это просто надо запомнить. О том как передать значение в параметр запроса 1С будет рассказано ниже.

14. %D0%A3%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1%8F %D0%B2 %D0%BA%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80%D0%B5 %D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2 1%D0%A1

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

Для заполнения параметров виртуальной таблицы перейдем на закладку Таблицы и поля конструктора запроса, в колонке Таблицы выделим таблицу ЦеныНоменклатурыСрезПоследних и нажмем кнопку Параметры виртуальной таблицы, расположенную вверху. В открывшемся окне, в поле Период следует задать параметр, в который будет передаваться дата, на которую будет делаться срез цен. В нашем случае это будет текущая дата (то есть сегодня), поэтому и параметр назовем «&ТекущаяДата». В поле условия напишем условия на тип цен, его мы тоже передадим в параметре, который назовем «&ТипЦен». Получившееся условие будет выглядеть следующим образом (где ТипЦен — измерение регистра Цены номенклатуры):

Параметры виртуальной таблицы заполнены, нажмем кнопку ОК.

16. %D0%97%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5 %D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%BE%D0%B2 %D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9 %D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B

Теперь, когда мы ограничили выборку только нужным нам документом, создадим связи между таблицами запроса. Если этого не сделать, то цены из таблицы ЦеныНоменклатурыСрезПоследних не будут связаны с номенклатурой из поступления. Перейдем на вкладку Связи конструктора запросов. Создадим связь по полю Номенклатура между двумя нашими таблицами. Для этого нажмем кнопку Добавить, в поле Таблица 1 выберем таблицу ПоступлениеТоваровУслугТовары, а в поле Таблица 2 — ЦеныНоменклатурыСрезПоследних. В условиях связи выберем поля Номенклатура из обоих таблиц.

Также следует заметить, что в выборке запроса нам необходимо получить все строки из табчасти Товары и цены только в том случае, если таковые имеются на текущую дату по типу цен документа. Таким образом данные табчасти Товары являются обязательными, а данные среза цен нет. Поэтому в связях между этими таблицами необходимо использовать так называемое ЛЕВОЕ СОЕДИНЕНИЕ, причем левой (или обязательной) таблицей будет ПоступлениеТоваровУслугТовары, а правой (или необязательной) ЦеныНоменклатурыСрезПоследних. Для того чтобы левое соединение таблиц запроса заработало так как я описал выше необходимо поставить галочку Все после поля Таблица 1.

15. %D0%A1%D0%B2%D1%8F%D0%B7%D0%B8 %D0%BC%D0%B5%D0%B6%D0%B4%D1%83 %D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0%D0%BC%D0%B8 %D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0

Запрос практически готов, осталось только немного поработать над псевдонимами полей. Перейдем на закладку Объединения / Псевдонимы и зададим псевдоним для поля ЦеныНоменклатурыСрезПоследних.Цена. Имя псевдонима будет — ЦенаНаСегодня, нужен он для того чтобы имена полей выборки запроса и имена параметров в макете печатной формы совпадали.

17. %D0%9F%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%BD%D0%B8%D0%BC%D1%8B %D0%BF%D0%BE%D0%BB%D0%B5%D0%B9 %D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0 1%D0%A1

Работа в конструкторе запросов на этом закончена, нажмем кнопку ОК. После того, как окно конструктора закроется вы увидите, что строка с текстом запроса заполнена и имеет следующий вид:

Выполнение запроса

Выполним запрос для получения выборки с нужными нам данными. Для этого сначала воспользуемся методом запроса Выполнить(), а затем методом Выбрать().

Заполнение таблицы печатной формы

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

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

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

Осталось заполнить и вывести последнюю область макета — Подвал. Данные для заполнения мы уже подготовили, заполнение и вывод осуществляем по той же схеме.

Табличный документ полностью заполнен, осталось вывести его на экран, чтобы пользователь мог посмотреть печатную форму и при необходимости распечатать. Но в типовых конфигурациях 1С 8 за вывод внешних печатных форм отвечают процедуры специальных модулей. Поэтому достаточно вернуть из функции Печать() заполненный табличный документ.

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

Создание печатной формы 1С. Параметры авторегистрации

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

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

18. %D0%9C%D0%B0%D0%BA%D0%B5%D1%82 %D1%81 %D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0%D0%BC%D0%B8 %D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8

Подключение к базе внешней печатной формы

19. %D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F %D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B5%D0%B9 %D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BD%D0%BE%D0%B9 %D1%84%D0%BE%D1%80%D0%BC%D1%8B

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

Скачать внешнюю печатную форму рассмотренную в статье: Внешняя печатная форма

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с параметр запуска управляемое приложение
  • 1с параметр запуска обычное приложение