По настоящему
отменная доска объявлений либо не законна, Урок 19. |
Как я и обещал - ближайшие несколько выпусков будут посвящены применению объекта "Список значений" в 1С:Предприятии. Сегодня поговорим о закладках в форме. Что такое закладки - не буду объяснять, надеюсь, все знакомы. Если не знакомы, то после первого же примера - познакомитесь. По этому сразу перейдем к вопросу реализации закладок. Для работы с закладками используется 2 объекта
Как правило закладки в форме организуются в предопределенной процедуре ПриОткрытии(), но можно и в любой другой процедуре, вызываемой, например, при щелчке по кнопке. Рассмотрим небольшой пример. Процедура ПриОткрытии() В результате выполнения процедуры будет добавлено 3 закладки. Называться они будут "Первая", "Вторая", "Третья". Добавленные значения А,.Б, В - пользователю будут недоступны и по этому эти значения Вы можете использовать по своему усмотрению (или не использовать вообще). После выполнения процедуры закладки в форме появятся сразу. Их можно будет переключать - система обеспечивает это автоматически. Но содержимое Вашей формы не будет меняться - это Вы должны обеспечить сами. В модуле формы, где расположены закладки, Вы должны использовать предопределенную процедуру ПриВыбореЗакладки(пар1, пар2). Эта процедура вызывается системой автоматически при смене пользователем закладки. При этом пар1 и пар2 принимают определенные значения. Пар1 - номер закладки, выбранной пользователем; Пар2 - значение закладки - обратите внимание ЗНАЧЕНИЕ, а не представление. В процедуре Вы должны описать как должна измениться форма при выборе закладки. Приведем простейший пример процедуры Процедура ПриВыбореЗакладки(номер, зн) Очевидно, что действия при выборе закладки, чаще всего приводят к тому, что часть реквизитов прячется, а часть показывается. Можно, конечно, воспользоваться конструкцией форма.Реквизит.Видимость(1) или форма.Реквизит.Видимость(0), но это долго и не продуктивно. Более удобном, является использование слоев в форме. Когда Вы находитесь в форме - выберите "Диалог" - "Слои". Откроется небольшое окно, где по умолчанию присутствует один слой - Основной. Но Вы можете добавить столько слоев сколько Вам надо. Подробно на этом останавливаться не буду. Подскажу лишь только, что в открывшемся окне - рисунок "глаз" означает, что слой сейчас видно в форме, рисунок "карандаш" означает, что все реквизиты, которые Вы сейчас будете добавлять - будут находиться в этом слое. "Карандаши" и "глаза" можно переставлять по разным слоям. Одновременно может быть видно несколько слоев (глаз напротив нескольких слоев). А "карандаш" всегда будет находиться только у одного слоя. Рекомендации по работе со слоями и закладками: как правило на каждую закладку создается по одному слою + один делается 1 слой, который будет содержать общие реквизиты, которые видны на любой закладке (например, кнопки "Ок", "Закрыть"). Управление слоями происходит с помощью метода ИспользоватьСлой, применяемого к объекту Форма. В общем виде метод выглядит так: Форма.ИспользоватьСлой(имяСлоя, параметр); ИмяСлоя - строка, название слоя, как оно задано в конфигураторе, можно работать одновременно с несколькими слоями - в этом случае они перечисляются через запятую. Параметр - числовое значение 0 - скрыть слой <ИмяСлоя> в форме; 1 - показать слой <ИмяСлоя> в форме; 2 - показать слой <ИмяСлоя> и скрыть все остальные. Вернемся с нашему примеру с обработкой реакции системы на переключение закладок. Пусть у нас три закладки и 4 слоя "Первый" (для первой закладки), "Второй", "Третий" и "Основной" (слой с кнопками - общий для всех закладок). Как изменится процедура обработки выбора закладки: Процедура ПриВыбореЗакладки(номер, зн) Получается не очень красиво и длинно. Как сделать короче? Когда создаем закладки - в качестве значения надо указать строку с названием слоев, которые должны быть показаны в момент выбора закладки. Покажем на том же примере: Процедура ПриОткрытии() Процедура ПриВыбореЗакладки(номер, зн) Важно: при работе со слоями в процедуре ПриОткрытии() надо не забыть указать слои которые будут видны при открытии формы - иначе отрываемая форма покажет сразу все слои. Задачи для самостоятельно работы: Задача 1. В форме создайте 2 кнопки "Добавить" и "Удалить". Одна кнопка добавляет закладки по одной справа, другая, соответственно удаляет по одной справа. При добавлении закладки называются названиями месяцев, начиная с января. Как только "год" будет заполнен - закладки перестают добавляться. Задача 2. Тот пример, который приводился на уроке доработайте так, чтобы при открытии сразу активной была "Вторая" закладка. Задача 3. В форме добавьте 2 кнопки "Лево" и "Право". При щелчке по кнопке текущая закладка (которая выбрана в форме) должна передвинуться на одну позицию влево или вправо. Задача 4. В форме добавьте 7 флажков, названных днями недели. Форма должна работать просто: если флажок установлен, появляется соответствующая закладка, если флажок снят - закладка пропадает. Условие: закладки называются как дни недели. При этом они должны быть по порядку: "вторник" не может быть слева от "понедельника" - каждая закладка добавляется на свое место, а не справа. Задача 5. Возьмите любой документ, содержащий табличную часть. Доработайте его таким образом, чтобы табличная часть была на отдельной закладке (Табличная Часть), все остальные реквизиты - на закладке "Шапка". Кнопки "Закрыть", "Сохранить", "Печать" - должны присутствовать на обеих закладках. Только для подписчиков рассылки 1С:Школа мы предлагаем:
|