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