Что такое конструктор форм в 1с
Версия 5.1 БП 3.0.73.54 стал делать ВПФ, выяснилось (внезапно), что в общем модуле "УправлениеПечатью" процедура "ПодготовитьКоллекциюПечатныхФорм" лишилась "Экспорт", пришлось вставить немного изменённую в модуль формы ВПФ.
Могу добавить только, что для последних версий БСП и, соответственно, конфигураций на управляемых формах, наметилась тенденция выносить процедуры и функции печати из модуля менеджера в общие модули. Поэтому, чаще всего, созданную конструктором ВПФ придётся допиливать, перенося в модуль ВПФ эти самые процедцры и функции из общих модулей.
Инструкция для управляемого приложения
Создадим ВПФ, например, для документа Счет покупателю, печатная форма Счет-заказ (пример делаю на платформе 8.3.8.1784 БП 3.0.43.247 база ДЕМО).
Создание ВПФ
Исхожу из того, что пользоваться конфигуратором, тот, кто создаёт ВПФ умеет, потому картинки оттуда рисовать не будем. Результатом будет внешняя форма, которая ничем не отличается от типовой печатной формы документа.
Итак, по пунктам:
- Копируем модуль менеджера документа Счет покупателю, открыв его в Конфигураторе. Копируется весь модуль, например, нажав Ctrl +A, потом Ctrl + С.
- Открываем конструктор в режиме учета, выбираем Тип документаСчетНаОплатуПокупателю и нажимаем кнопку Вставить:
- Жмём следующую кнопку Анализ. Получаем на закладке Команды и функции список доступных команд печати, список процедур и функций модуля менеджера, и текст выделенных процедур в правом окне. В левом верхнем окне снимаем все галки (кнопки управление вверху) и отмечаем нужную нам печатную форму СчетЗаказ. В левом нижнем окне нужные для печати выбранной формы процедуры будут отмечены зелёным цветом автоматически. Если необходимо, можно отметить и другие процедуры и функции с помощью кнопки нужна\ не нужна, они будут перенесены в итоговую обработку, но использовать автоматически ВПФ их не будет, поэтому подумайте, оно Вам надо? В правом окне можно просмотреть текст выделенных в левом нижнем окне процедур и функций. Текст можно изменить, правда никогда этой возможностью не пользовался, но мало ли кому понадобится?:
- Следующая кнопка Сформировать. Создаёт текст модуля обработки ВПФ:
- Жмём Скомпилировать – на экране ничего не изменится, просто будет создана ВПФ.
- Кнопка Сохранить предложит выбрать путь, куда сохранить созданную обработку и открыть созданную ВПФ для проверки. ВПФ создаётся со встроенной формой обработки, поэтому её можно отлаживать не прибегая к дополнительным средствам. При открытии ВПФ сразу проверяем работоспособность, выбрав документ и сформировав печатную форму:
Как уже говорилось, сейчас она ничем не отличается от типовой, и если нужно что-то изменить, это придётся делать руками, о чём расскажу ниже. Хочется заметить, что указанный порядок формирования ВПФ минимален, остальное пробуйте сами…или не пробуйте. Здесь фактически просто перечислены шаги быстрого создания ВПФ для последующей доработки.
Что удивило, и типовая и внешняя вместо суммы прописью выдают в демке сумму числом:
Изменение полученной ВПФ
Для исправления ситуации, и добавления чего-то своего в ВПФ, начнём вносить изменения:
- Вставим макет счета в ВПФ (по умолчанию используется тот же, что и в типовой форме счета). Для этого посмотрим, какой макет используется. В модуле объекта ВПФ :
Из процедуры Печать видим, что нам нужен общий макет ПФ_MXL_СчетЗаказ. Копируем его в конфигураторе. Ветка Общие – Общие макеты:
Затем в обработке встаём на Макеты и вставляем, теперь макет есть в ВПФ, нужно изменить код модуля, чтобы использовать именно его, а не общий макет:
<<?>>ВывестиЗаголовокПредупреждение(СведенияОДокументе.Получатель, ТабличныйДокумент, Макет); (Проверка: Сервер).
Поскольку не определена процедура без указания через точку, делам вывод, что она находится в том же общем модуле, что и скопированная нами перед этим функция ПечатьСчетаНаОплату – находим её там, и копируем в модуль ВПФ. И вновь пробуем сохранить. В данном случае нам повезло – ошибок больше нет. В обще-то это редкость, по большому счёту, это самый трудоёмкий момент. Бывает, что может понадобится копирование нескольких процедур и функций, и, может быть, даже не из одного модуля. Главное не просто скопировать, но и правильно их потом вызывать. Универсального рецепта для этого у меня нет.
- Убираем в процедуре печать строку «ПечатьТорговыхДокументов.» - теперь эта функция будет вызываться из модуля ВПФ.
- Сохраняем ВПФ, проверяеем в режиме учёта – всё работает, только теперь, всё, что нужно для изменений, у нас находятся в ВПФ. Теперь можно делать необходимые изменения .
- Изменяем текст модуля ВПФ:
- Вызов встроенного макеета вместо общего – находим строку "ОбщийМакет.ПФ_MXL_СчетЗаказ", видим, что находится она в добавленной функции из общего модуля, и не меняя общий модуль ПечатьТорговыхДокументов (сохраняя типовую конфигурацию на полной поддержке) изменяем функцию модуля ВПФ:
- Исправим сумму прописью – сейчас она почему – то выводится числом, вариантов много, можно, например, использовать форматную строку в ячейке макета СуммаПрописью, но это некрасиво, поэтому попробуем найти место в тексте модуля, где заполняется этот параметр и исправим его. Видим строку:
Отладчиком смотрим, где собака порылась. На вид всё фильдиперсово, однако видим вместо строки число. Видим, что при вызове функции общего модуля ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью в параметре СведенияОДокументе.Валюта пусто. Вариантов исправления много – можно вытащить процедуру СформироватьСуммуПрописью в модуль ВПФ, можно посмотреть заполнение строки СведенияОДокументе и заполнить валюту там, можно проверить заполнение валюты, и если там пусто использовать валюту по умолчанию из константы. Мне лень, поэтому возьмём валюту из договора:
- Теперь добавим в макет новый параметр, например Комментарий и выведем после итоговой строки (пример условный, просто как пример)))):
Обратите внимание, что параметр находится внутри области макета, создал я его так (профи просьба не читать далее)))), встав на СуммаПрописью правой кнопкой – раздвинуть, потом скопировал СуммаПрописью, вставил в среднюю стоку и поменял в третьей строчке СуммаПрописью на Комментарий.
В тексте модуля делаем следующие изменения:
и четырьмя строчками ниже вставляем строку:
В итоге получим кусок кода:
Заключение
Не претендую на полноту и истину в последней инстанции в изложении. Просто показал на простом примере, как быстро создать и немного изменить внешнюю печатную форму счет на оплату покупателю в БП 3.0. Может кому поможет…
Редактор формы используется для создания и редактирования форм объектов прикладного решения. Формы объектов используются системой для визуального отображения данных в процессе работы пользователя.
Любая форма представляет совокупность нескольких составляющих:- элементов — объектов, определяющих визуальное представление формы и осуществляющих взаимодействие с пользователем,
- командного интерфейса — совокупности команд, отображаемых в форме;
- реквизитов — объектов, данные которых форма использует в своей работе.
- команд — действий, которые определены в данной конкретной форме,
- параметров — объектов, значения которых характеризуют саму форму, используются при ее создании и остаются постоянными в процессе «жизни» формы,
- модуля — программы на встроенном языке, отвечающей за работу с элементами и за обработку событий;
Редактор формы содержит несколько закладок, обеспечивающих редактирование всех составляющих формы.
В отдельном окне, в нижней части редактора, отображается внешний вид формы в режиме 1С:Предприятие.
Редактирование элементов
Редактор форм позволяет разработчику использовать широкий набор возможностей для изменения внешнего вида формы — того вида, который форма будет иметь в режиме 1С:Предприятие. Перечислим основные из этих возможностей:
Редактор форм позволяет добавлять в форму специальные элементы, которые помогают придать форме собственный узнаваемый стиль, сделать доступ к данным простым и понятным, а также разместить большой объем информации на ограниченной площади.
Тогда в режиме 1С:Предприятие она будет выглядеть следующим образом:
Заголовок каждой группы — страницы отображается на отдельной закладке. Разработчик имеет возможность задать режим отображения закладок: снизу или сверху:
Например, закладки можно расположить снизу:
Элементы
Редактор позволяет добавлять в форму различные элементы. Добавлять элементы можно с помощью команды добавления или путем перетаскивания реквизитов формы в дерево элементов:
Все элементы формы представляются в виде иерархической структуры, корнем которой является сама форма. Это позволяет быстро перемещаться к нужному элементу формы:
Располагая элементы выше/ниже в дереве, подчиняя их другим элементам и задавая свойства элементов-групп можно задавать порядок, в котором пользователь будет обходить элементы управления формы при вводе и редактировании данных. В режиме 1С:Предприятие элементы формы будут обходиться в порядке их иерархии и в соответствии с тем, какой тип группировки выбран для групп: вертикальная или горизонтальная.
Разделители
Разделители являются специальными элементами, с помощью которых возможно перераспределение пространства формы без изменения ее размеров. Платформа в режиме 1С:Предприятие самостоятельно добавляет эти элементы в форму. Разделитель обладает способностью «захватываться» мышью и перемещаться внутри формы в ее пределах с учетом возможности расположения других элементов и ориентации разделителя:
При перемещении разделителя, все элементы, связанные с разделителем, будут изменять свои размеры или перемещаться.
Модуль формы
Для редактирования модуля формы конфигуратор вызывает редактор текстов и модулей. Этот редактор предоставляет разработчику большое разнообразие возможностей для создания и изменения текста модуля. Подробнее…
Реквизиты формы
Редактирование реквизитов формы выполняется в списке, который позволяет создавать новые реквизиты, изменять имеющиеся и удалять ненужные реквизиты. Свойства реквизитов задаются с помощью палитры свойств.
Если у формы существует основной реквизит, определяющий поведение формы, отличное от типового, — он выделяется жирным шрифтом.
Командный интерфейс формы
Командный интерфейс формы редактируется в дереве. Основные ветви дерева содержат команды, добавленные в панель навигации окна, в котором будет показана форма, и в командную панель формы. Внутри каждой из этих ветвей команды разделены по стандартным группам.
Часть команд в командный интерфейс платформа добавляет автоматически. Наряду с этим разработчик самостоятельно может добавить в командный интерфейс команды, перетащив их из списка команд формы или из списка доступных глобальных команд. Для всех команд, добавленных в командный интерфейс, разработчик может задать их видимость для различных ролей, определенных в конфигурации.
Команды формы
Команды формы редактируются в списке. Разработчик имеет возможность добавить, удалить команды формы и задать их свойства с помощью палитры свойств. В том числе назначить для команды процедуру, которая будет выполняться при вызове этой команды пользователем.
На закладках Стандартные команды и Глобальные команды разработчику предоставляются списки команд, генерируемых платформой и доступных для использования в данной форме. Их свойства изменять нельзя, можно только добавлять их в форму.
С помощью мыши разработчик может перетащить команду в командный интерфейс формы. Также можно перетащить команду и прямо в дерево элементов, если нужно, например, отобразить эту команду в виде кнопки, расположенной в форме.
Параметры формы
Параметры формы редактируются в списке. Разработчик имеет возможность добавить, удалить параметры формы и задать их свойства с помощью палитры свойств.
Конструктор печати 1C предназначен для создания макета печатной формы некоторых объектов прикладного решения и процедуры на встроенном языке, которая будет формировать печатную форму на основании этого макета.
Конструктор печати работает со справочниками, документами, журналами документов, регистрами сведений и пр., и позволяет:
- выбрать вариант работы конструктора (для форм управляемого или обычного режима);
- создать новую команду или изменить существующую;
- определить поля (реквизиты), которые будут печататься в шапке и таблицах макета;
- задать параметры печати.
В результате работы конструктора печати:
Если в конструкторе печати указано имя процедуры, которая будет выполнять построение печатной формы, и такая процедура уже присутствует в модуле, то конструктор перепишет ее заново, при этом введенный ранее в тело процедуры текст будет потерян.Вызов конструктора печати 1С:
Результатом работы конструктора является программный код и макет, в который будут выводиться данные (рисунок отсюда ).
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Узнав о формах 1с, перейдем к более глубокому ознакомлению. Для начала создадим форму, это может быть форма любого объекта, в данном примере это справочник. Способов создать форму существует несколько:
1. Из конструктора объекта 2 способа
2. Из дерева конфигурации через контекстное меню (правой кнопкой мыши на выделенном синим на рисунке объекте).
Конструктор форм
При создании новой формы появляется окно конструктора формы:
Тип формы, который предлагает выбрать конструктор повлияет, на начальное заполнение элементами. Основными вариантами типов являются:
Флажок «Назначить форму основной» означает что, если форм данного типа будет несколько и при вызове формы этого типа не будет указана конкретная, то будет выведена основная. Например: существует форма списка «ФормаСпискаКраткая», которая является основной и «ФормаСпискаПолная», если вызвать форму списка и не указать конкретную, то будет выведена «ФормаСпискаКраткая».
Основные формы видны на закладке «Формы» конструктора изменяемого объекта.
Флажок «Основная форма списка и выбора» означает что, эта форма будет выводиться как для просмотра списка, так и для выбора.
Флажок «Основная форма элемента и группы» означает что, эта форма будет выводиться как для редактирования элемента, так и для группы.
Дальше идёт реквизит «Имя» он является идентификатором этой формы, нельзя создать у одного объекта двух форм с одинаковым идентификатором.
Реквизит «Синоним» будет выводиться в пользовательском режиме как имя этой формы.
Реквизит «Комментарий» хранит какие-либо заметки или пояснения.
Флажки «Командная панель сверху» и «Командня панель снизу» указывают где выводить командные панели. Командная панель это элемент формы который содержит кнопки. Например:
При нажатии кнопки «Далее» форма конструктора измениться, и будет доступно размещение элементов на форме:
Для себя я использую в основном следующий метод создания формы, если объект новый то вызываю конструктор из объекта на закладке «Формы» группа «Основные формы», нажимая на значок «Открыть»(лупа)(рисунок 1). Если объект имеет основные формы, то вызываю конструктор из дерева метаданных методом «Добавить» из контекстного меню ветки «Формы»(рисунок 2).
Сделаю небольшое пояснение о связи формы с объектом. Вообще правильная установка свойств уменьшает необходимость писать код.
У формы есть свойство «Данные» оно является основным для формы и на закладке «Реквизиты» выделяется жирным шрифтом.
Что дает проставление свойства «Данные», в зависимости от выбранного значения добавляются новые события, методы формы и возможность добавить соответствующие кнопки командной панели.
Пример: « ПараметрТекущаяСтрока » - это свойство доступно в модуле формы если тип основного реквизита СправочникСписок.
Узнав о формах 1с, перейдем к более глубокому ознакомлению. Для начала создадим форму, это может быть форма любого объекта, в данном примере это справочник. Способов создать форму существует несколько:
1. Из конструктора объекта 2 способа
2. Из дерева конфигурации через контекстное меню (правой кнопкой мыши на выделенном синим на рисунке объекте).
Конструктор форм
При создании новой формы появляется окно конструктора формы:
Тип формы, который предлагает выбрать конструктор повлияет, на начальное заполнение элементами. Основными вариантами типов являются:
Флажок «Назначить форму основной» означает что, если форм данного типа будет несколько и при вызове формы этого типа не будет указана конкретная, то будет выведена основная. Например: существует форма списка «ФормаСпискаКраткая», которая является основной и «ФормаСпискаПолная», если вызвать форму списка и не указать конкретную, то будет выведена «ФормаСпискаКраткая».
Основные формы видны на закладке «Формы» конструктора изменяемого объекта.
Флажок «Основная форма списка и выбора» означает что, эта форма будет выводиться как для просмотра списка, так и для выбора.
Флажок «Основная форма элемента и группы» означает что, эта форма будет выводиться как для редактирования элемента, так и для группы.
Дальше идёт реквизит «Имя» он является идентификатором этой формы, нельзя создать у одного объекта двух форм с одинаковым идентификатором.
Реквизит «Синоним» будет выводиться в пользовательском режиме как имя этой формы.
Реквизит «Комментарий» хранит какие-либо заметки или пояснения.
Флажки «Командная панель сверху» и «Командня панель снизу» указывают где выводить командные панели. Командная панель это элемент формы который содержит кнопки. Например:
При нажатии кнопки «Далее» форма конструктора измениться, и будет доступно размещение элементов на форме:
Для себя я использую в основном следующий метод создания формы, если объект новый то вызываю конструктор из объекта на закладке «Формы» группа «Основные формы», нажимая на значок «Открыть»(лупа)(рисунок 1). Если объект имеет основные формы, то вызываю конструктор из дерева метаданных методом «Добавить» из контекстного меню ветки «Формы»(рисунок 2).
Сделаю небольшое пояснение о связи формы с объектом. Вообще правильная установка свойств уменьшает необходимость писать код.
У формы есть свойство «Данные» оно является основным для формы и на закладке «Реквизиты» выделяется жирным шрифтом.
Что дает проставление свойства «Данные», в зависимости от выбранного значения добавляются новые события, методы формы и возможность добавить соответствующие кнопки командной панели.
Пример: « ПараметрТекущаяСтрока » - это свойство доступно в модуле формы если тип основного реквизита СправочникСписок.
Читайте также: