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