Конструктор ввода на основании
Конструктор ввода на основании облегчает задачу разработки процедуры ВводНаОсновании(). Конструктор можно вызвать, выбрав пункт «Ввод на основании...» из меню «Конструкторы» главного меню программы или нажав кнопку на панели инструментов «Конструкторы». При этом должна быть открыта форма документа. При запуске открывается диалог «Конструктор ввода на основании». Он содержит список документов-оснований, список реквизитов документа и список (в виде дерева) реквизитов документа-основания, выбранного в первом списке. В список документов-оснований входят: · документы, отмеченные в правом списке в окне «Ввод на основании». (Это окно открывается при нажатии соответствующей кнопки в окне свойств данного документа); · документы, никак не отмеченные в свойствах данного документа, если для самих этих документов в том же окне «Ввод на основании» установлен флажок «Может являться основанием для документов любого вида». Кнопки «Назад» и «Далее» перемещают курсор вверх и вниз по списку реквизитов документа. При достижении конца списка появляется запрос «Перейти к следующему документу-основанию?», и при выборе «Да», курсор в списке документов-оснований смещается на следующую строку. Такой порядок обеспечивает перебор всех реквизитов документов для каждого документа-основания. Можно также для выделения строки в любом списке пользоваться мытью. В список реквизитов документа нужно поместить формулы, определяющие, как заполнять реквизиты документа по выбранным реквизитам документа-основания. Эти формулы можно создавать «вручную» следующим образом. Формула определяется в поле ввода «Формула заполнения реквизита» для реквизита документа, выделенного в списке. Можно вручную набрать ее в этом поле (а также вручную редактировать в нем созданную ранее формулу). Правильность написания формул Конструктор не проверяет. Можно также двойным щелчком в списке реквизитов документа-основания помещать данные соответствующего реквизита в поле «Формула заполнения реквизита», причем сразу в правильной записи, например, реквизит документа-основания «Товар» — в записи «ДокОснование.Товар». Конструктор не проверяет соответствия типов выбранных реквизитов. Возможна и комбинация двух описанных способов: данные из списка реквизитов документов-оснований при помещении в поле ввода замещают не всю имеющуюся там информацию, а только выделенные символы. По кнопке «Заполнить формулы автоматически», после запроса и подтверждения, программа сама создаст формулы для заполнения по реквизитам документа-основания. Ранее заполненные формулы при автоматическом заполнении не изменяются. Подбор среди реквизитов документа-основания соответствий реквизитам документа осуществляется с учетом имен реквизитов, их идентификаторов и типов. По кнопке «Очистить формулы», после запроса и подтверждения, очищаются все формулы, созданные как автоматически, так и вручную. Формулы, созданные для документа-основания, выбранного в списке документов-оснований, запоминаются при переходе к другому документу-основанию этого списка. Поэтому можно, не прекращая работы Конструктора, создать процедуры ввода на основании для нескольких документов-оснований. Можно также возвращаться к редактированию процедуры для какого-либо документа-основания, снопа выбирая его в списке. Для прекращения работы Конструктора служат кнопки «ОК» и «Отмена» (соответственно, с сохранением и без сохранения сделанных изменений). Кнопка «Обновить» позволяет отразить в модуле формы сделанные изменения без выхода из окна Конструктора. В результате работы Конструктора в модуле формы документа создается процедура ВводНаОсновании(ДокОснование). В начало процедуры Конструктор помещает предупреждение: «Данный фрагмент построен Конструктором. При повторном использовании Конструктора внесенные вручную изменения будут потеряны!». При повторном использовании Конструктора все формулы, сформированные ранее для какого-либо документа-основания, будут появляться в списке реквизитов документа при выделении соответствующего документа-основания в списке документов-оснований. Конструктор предъявит для просмотра и редактирования формулы, сформированные при предыдущем его запуске, как с помощью кнопки «Заполнить формулы автоматически», так и вручную. Более того, он учтет и формулы, вручную внесенные в модуль документа, если они помещены в формируемую им процедуру. Правильность этих формул Конструктор не проверяет. Например, если для какого-то реквизита документа указано заполнение двумя различными реквизитами документа-основания, Конструктор для показа выберет один из них (но алфавиту). Именно он останется в модуле после обновления результатов работы Конструктора, вторая строка, соответствующая тому же реквизиту, будет удалена.
|