Шаг №33: добавляем в модуль формы процедуру поиска
Перейдём в модуль формы (закладка "Модуль") и добавимпроцедуру, которая перебирает все элементы справочника "Люди" (поэтому она выполняется на сервере), находит человека у которого день рождения ближе всего и выводит его данные в надписи на форме:
Я попробовал написать сам, покажите мне эталонный вариант
Шаг №34: добавляем обработчик команды "Поиск"
Чтобы вызвать эту процедуру, добавимобработчик для команды "Поиск". Для этого выделим двойным щелчком команду "Поиск" на закладке "Команды формы":
В открывшемся окне свойств нажмём на кнопку лупа рядом с пунктом "Действие":
Первоначально команда будет срабатывать на клиенте:
Нас перенесёт в модуль формы в автоматически созданную процедуру "Поиск", которая будет вызываться при каждом нажатии на кнопку, которую мы связали с командой "Поиск":
Шаг №35: добавляем вызов процедуры поиска в обработчик
Наконец, напишем в обработчике команды вызов процедуры "ПоискНаСервере", которую мы определили ранее:
Шаг №36: проверяем обработку
Проверим, что получилось. Запустим 1С:Предприятие и откроем нашу обработку ("Сервис"->"Поиск ближайшего дня рождения"):
Нажмём кнопку "Поиск":
И увидим как на форму выведутся данные человека, у которого день рождения ближе всех на сегодняшний день:
Отлично.
Шаг №37: делаем открытие элемента по нажатию на надпись с именем
А давайте сделаем так, чтобы при нажатии на имя и фамилию человека (то есть на элемент "НадписьИмя" у нас происходило открытиеэлемента справочника "Люди" с данными этого человека.
Для этого двойным щелчком откроем свойства элемента "НадписьИмя":
В окне со свойствами установим галку "Гиперссылка" (чтобы можно было нажимать на надпись как на гиперссылку):
и нажмём на кнопку лупа рядом с событием "Нажатие":
Действие при нажатии будет происходить на клиенте:
Нас перенесёт в автоматически созданную процедуру "НадписьИмяНажатие", которая будет вызываться каждый раз при нажатии на надпись:
Но, чтобы открыть элемент справочника - нам нужна ссылка на него. Её мы могли получить только при поиске (переменная "Счастливчик") и, если вы приглядитесь ещё раз к коду процедуры "ПоискНаСервере", то обнаружите, что в самом конце мы сохраняем значение переменной "Счастливчик" в некое имя "СсылкаНаСчастливчика".
Но проблема в том, что код процедуры "ПоискНаСервере" выполняется на сервере, а нажатие на надпись (и соответственно процедура "НадписьИмяНажатие") выполняется на клиенте.
Клиент и сервер - это две разные области выполнения, которые взаимодействуют друг с другом по особым правилам.
И для того, чтобы мы смогли "достучаться" до имени "СсылкаНаСчастливчика" с клиента при том, что установлено оно на сервере - мы должны завести реквизитформы с таким именем.
Для этого перейдём на закладку "Реквизиты" на нашей форме и нажмём зелёную кнопку плюсик:
Добавится реквизит, выделим его двойным щелчком:
Откроется окно со свойствами. В поле "Имя" установим то самое "СсылкаНаСчастливчика", а в поле "Тип" установим "СправочникСсылка.Люди":
Отлично. Теперь допишем процедуру "НадписьИмяНажатие" так, чтобы открылась форма нужного элемента справочника "Люди". Смотрите комментарии - там подробно всё расписано. Код открытия элемента справочника довольно типовой:
Шаг №38: проверяем нажатие
Запустим 1С:Предприятие, чтобы убедиться, что всё работает. Снова откроем обработку, нажмём кнопку "Поиск" и попробуем нажать на имя и фамилию найдённого человека:
Откроется форма элемента справочник с этим человеком:
Эталонная база, после выполнения всех шагов этого урока
Для учеников
Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.