Как программно открыть последнюю страницу (закладку), которую посетил пользователь 1С в элементе управления «Панель» при открытии формы?

Доброго времени суток, дорогие друзья! В этой статье вы увидите, как сохранить значение индекса страницы (вкладки) до следующего сеанса работы пользователя 1С, чтобы воспользоваться им при открытии формы. В заметке Как программно переключить страницу (закладку) на «Панели» было показано, как это сделать. Кроме того у формы существует свойство «Панель» и в заметке Как обратиться к текущей странице формы, если на форму не помещён элемент управления формы «Панель»? рассказывалось, как работать с этим свойством формы. Но сейчас другой случай. 

Создание новой внешней обработки 1С

Откроем конфигуратор 1С и создадим новую обработку: Файл | Новый…
Выберем из списка строчку «Внешняя обработка».

Диалог создание новой внешней обработки

Появилось окно редактирования внешней обработки.

Окно редактирования новой внешней обработки

Оставим имя внешней обработки неизменным — «ВнешняяОбработка1». Сохраним её под тем же именем. Теперь в окне редактирования создадим форму обработки. Нажмём на плюсик в зелёном кружке (или клавишу Insert), чтобы добавить новую форму. Затем нажмём кнопку «Готово».

Размещение нового элемента управления «Панель» на форме внешней обработки

Теперь поместим на форму элемент управления «Панель», нажав на кнопку «Панель» Кнопка «Панель» для размещения на форме элемента управления «Панель» на панели инструментов «Элементы управления». Эта панель обычно находится внизу окна Конфигуратора 1С. Теперь наш курсор превратился в крестик. Начиная с левого верхнего угла формы, растянем элемент управления до правого нижнего угла. Как видим на панели только одна страница (закладка) «Страница1».

Новая панель на форме внешней обработки

Как добавить еще одну страницу на панель? Нажимаем правой кнопкой мыши на панели и выбираем в контекстном меню пункт «Добавить страницу». Появилась новая страница «Страница2». Оставим это название.

Программное сохранение значения индекса страницы (вкладки) до следующего
сеанса работы пользователя 1С

Напомню, что задача состоит в том, чтобы при повторном открытии формы внешней обработки пользователь 1С мог сразу же работать с той закладкой, которую он открыл последней. Для начала перейдем на закладку «Модуль» нашей внешней обработки. Затем добавим в модуль две новые процедуры «ПередОткрытием» и «ПриЗакрытии». Для этого нажмём кнопку «Процедуры и функции» Кнопка «Процедуры и функции» для вставки в модуль формы процедур или функций на панели инструментов «Модуль» или пункт меню: Текст | Процедуры и функции. Появился список в нём выберем строки сначала «ПередОткрытием», затем «ПриЗакрытии», нажав кнопку «Перейти».

Открытие процедур и функций модуля Формы внешней обработки из списка

Итак, нам нужно запоминать значение индекса (номер страницы), которую пользователь 1С посетил последней. Делать это будем в тот момент, когда пользователь закроет форму внешней обработки. Поэтому в процедуре модуля формы «ПриЗакрытии» запишем следующий код:

Процедура ПриЗакрытии()
	// Получим текущую страницу панели
	ТекущаяСтраница = ЭлементыФормы.Панель1.ТекущаяСтраница;
	// Получим коллекцию страниц панели
	СтраницыПанели  = ЭлементыФормы.Панель1.Страницы;
	// Получаем индекс страницы в коллекции страниц панели.
	ИндексСтраницы  = СтраницыПанели.Индекс(ТекущаяСтраница);
	// Теперь сохраняем значение для использования не только 
	// в текущем, но и в последующих сеансах работы с программой
	СохранитьЗначение("СтраницаПанели", ИндексСтраницы);
КонецПроцедуры

Теперь при следующем сеансе работы пользователя нам нужно открыть последнюю, посещённую пользователем страницу (вкладку). Для этого получим сохранённый ранее индекс страницы, перед открытием формы. Поэтому в процедуре модуля формы «ПередОткрытием» запишем следующий код:

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	// Получим сохранённый ранее индекс страницы.
	ИндексСтраницы  = ВосстановитьЗначение("ИндексСтраницы");
	// Чтобы избежать ошибки, проверим какой тип восстанавливаем, 
	// первое открытие формы пользователем возвращает Неопределено
	Если ТипЗнч(ИндексСтраницы) = Тип("Число") Тогда
		// Получим коллекцию страниц панели
		СтраницыПанели  = ЭлементыФормы.Панель1.Страницы;
		// Получим текущую страницу панели
		ТекущаяСтраница = СтраницыПанели.Получить(ИндексСтраницы);
		// Меняем текущую страницу панели
    	ЭлементыФормы.Панель1.ТекущаяСтраница = ТекущаяСтраница;
	КонецЕсли;
КонецПроцедуры

Теперь в режиме 1С:Предприятие 8 можно проверить работу этой внешней обработки. Обработку можно скачать отсюда.

ПОДПИСКА

2 ответы
  1. Кайнар говорит:

    Здравствуйте! у меня вопрос? сможете открыть пароль на 1С. Забыл его. как быть?

Комментарии закрыты.