Порядок следования закладок в панели разделов

Настройка панели разделов — это один из стандартных интерфейсных механизмов. Он предоставляется платформой и доступен пользователям любых прикладных решений. С его помощью пользователь может изменить внешний вид панели разделов в соответствии со своими предпочтениями — установить порядок следования разделов, добавить/удалить разделы и изменить их внешнее представление.

Например, панель разделов, спроектированная разработчиками, может выглядеть следующим образом:

Пользователь может убрать разделы Товарные запасы и Предприятие и сказать, чтобы разделы отображались только в виде текста.

Вызвать настройку панели разделов можно из главного меню командой Настройки — Настройка панели разделов…

Можно изменять порядок разделов, добавлять и удалять разделы. Нельзя добавить любой, произвольный раздел. Добавить можно только те разделы, которые разработчик разместил в панели разделов, но не включил для них видимость. Они перечислены в окне Доступные разделы.

Можно изменить внешний вид закладок, обозначающих разделы. Стандартно разделы обозначаются картинкой и расположенным под ней текстом. Можно отображать разделы только картинками, или только текстом.

Если возникает необходимость вернуться к тому внешнему виду панели разделов, который «был задуман» разработчиком, то для этого используется команда Еще — Установить стандартные настройки.

Разработка интерфейса прикладных решений на платформе «1С:Предприятие 8»

Авторы: В.А. Ажеронок, А.В. Островерх, М.Г. Радченко, Е.Ю. Хрусталева

Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите как ученик, чтобы получить доступ к материалам школы

Создание конфигураций 1С: добавляем команду

Автор уроков и преподаватель школы: Владимир Милькин

Продолжаем изучение азов создания конфигураций на 1С.

Вернёмся в конфигуратор и откроем дерево конфигурации:

Где находится форма у обработки

Откроем окно настроек обработки «УдалениеУволенныхСотрудников»:

Открылось окно с закладками во многом повторяющими закладки из справочника «Сотрудники». Это совершенно нормально, ведь настройки объектов в конфигураторе во многом похожи друг на друга.

На этот раз нас интересует закладка «Формы» — откроем её:

Найдите на этой закладке объект с именем «Форма» — это и есть наше визуальное представление обработки:

Давайте откроем его двойным щелчком:

Открылось окно со множеством панелей. И нам сейчас очень важно для будущих уроков разобраться что здесь за что отвечает.

Меняем код на встроенном языке 1С для формы

Ну прежде всего обратим внимание в самый низ открывшегося окна. Там мы найдём две закладки «Форма» и «Модуль».

Закладка «Форма» — это и есть визуальное представление. Сейчас на форме находится всего лишь одна кнопка «Удалить сотрудников».

Закладка «Модуль» — это код на встроенном языке 1С, который содержит процедуры и функции, определяющие поведение формы для пользователя.

Попробуем переключиться на закладку «Модуль»:

Здесь присутствует всего одна процедура с именем «УдалитьСотрудников». Очевидно именно она и вызывается при нажатии на кнопку.

Код процедуры сейчас свёрнут — нажмём на плюсик, чтобы развернуть его (не поместился на рисунке справа):

Точно, так и есть. Вот оно место, где выдаётся сообщение о том, что я не стал писать код этой обработки

Изменим этот код следующим образом:

И получим то самое сообщение, которое написали только что:

Закладка «Элементы» у формы

Вернёмся в конфигуратор в нашу форму на закладку «Форма»:

Обратите внимание на закладку «Элементы» в верхней части формы. Содержимое этой закладки дублирует визуальное представление формы. Вы читаете ознакомительную версию урока, полноценные уроки находятся . Можно сказать ещё, что всё, что вы видите в визуальной части формы можно найти на закладке «Элементы».

Например, чтобы открыть свойства кнопки «Удалить сотрудников» на форме — найдём эту кнопку на закладке «Элементы» и сделаем на ней двойной щелчок:

Откроется окно со свойствами кнопки:

Давайте установим для кнопки заголовок «БАХ»:

Форма теперь будет выглядеть так:

Закладка «Реквизиты» у формы

Теперь перейдём к закладке «Реквизиты»:

Эта закладка содержит имена по которым мы можем «достучаться» до данных объекта, которые представляет форма. Вы читаете ознакомительную версию урока, полноценные уроки находятся . Пока на этой закладке всего лишь один реквизит «Объект» и то пустой.

Но если бы мы перешли на аналогичную закладку в форме справочника «Сотрудники», то обнаружили бы тут реквизиты «ДатаРождения», «НомерПаспорта» и «СерияПаспорта». Это означало бы, что мы можем их использовать в коде модуля формы.

Закладка «Команды» у формы

Заключительная закладка, которую мы рассмотрим сегодня это закладка «Команды»:

Вообще все команды, которые вы видите на одной из закладок («Команды формы», «Стандартные команды» и «Глобальные команды»), можно смело перетаскивать на закладку «Элементы» и они «волшебным образом» превратятся в кнопки на форме.

Как вы понимаете, нажатие на эти кнопки, будет приводить к выполнению этих команд.

Ну, например, перейдём на закладку «Стандартные команды» и перетащим на закладку «Элементы» команду «Закрыть»:

Вернёмся в конфигуратор в форму обработки и перейдём на закладку «Команды формы»:

На этой закладке мы видим команды формы, которые мы определили сами. В том числе мы можем видеть здесь команду, которую я определил ещё в самом начале с именем «УдалитьСотрудников».

Откроем свойства этой команды (двойным щелчком).

Нас интересует прежде всего поле «Действие», нажмите на кнопку с лупой рядом с ним:

Нас перенесло в процедуру «УдалитьСотрудников» в модуле формы. Это означает, эта команда и эта процедура связаны между собой. И выполнение команды (например, при нажатии на кнопку, в которую она превратилась) приведёт к выполнению кода процедуры.

Добавляем новую команду для формы

Давайте создадим ещё одну команду формы. Для этого вернёмся на закладку «Команды формы» и нажмём зелёную кнопку с плюсом:

На закладку добавилась новая команда «Команда1»:

Откроем её свойства и установим имя «Привет», а затем нажмём на лупу рядом с полем «Действие»:

Нас спрашивают какой именно вид обработчика мы хотим создать.

В целом существует два вида обработчиков — те, что выполняются на клиенте и те, что выполняются на сервере. В нашем случае клиент и сервер — это один и тот же компьютер, но не обязательно это всегда так. Мы ещё вернёмся к этому разговору в следующих модулях, а пока нам думать об этом слишком рано.

Выбираем вариант «НаКлиенте» и нажимаем «ОК»:

Нас перенесло в модуль формы в автоматически созданную процедуру «Привет». Теперь эта процедура связана с командой формы «Привет»:

Давайте напишем в ней вывод строки привет пользователю:

Но как нам теперь заставить выполнять команду (а значит и процедуру) «Привет»? Для этого вернёмся на закладку «Команды формы» и перетащим наш «Привет» на форму, так как мы это сделали ранее с командой «Закрыть»:

На форме появилась ещё одна кнопка. Запустим 1С:Предприятие, откроем обработку и нажмём на кнопку «Привет». Должно получиться вот так:

Вводим от пользователя имя и говорим ему привет

А теперь давайте поставим себе такую задачу. Нужно, чтобы пользователь ввёл своё имя, мы нажали на кнопку и вывелось, например, «Привет, Алексей».

Чтобы мы смогли разместить на форме элементы для ввода данных нам потребуется реквизит формы (закладка «Реквизиты») с которым этот элемент будет связан.
Так как закладка «Реквизиты» у нас практически пустая — создадим новый реквизит.

Переходим на закладку «Реквизиты» и нажимаем зелёную кнопку плюс:

Добавился реквизит с именем «Реквизит1»:

В окне свойств этого реквизита установим имя «Имя» и тип «Строка»:

После этого перетащим уже привычным образом реквизит «Имя» на закладку «Элементы»:

Ага, на форме появился элемент для ввода строки! Что нам и требовалось

Запустим 1С:Предприятие, откроем обработку и попробуем туда ввести своё имя:

Всё получилось, но вот нажатие на кнопку «Привет» пока работает по-прежнему.

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

Перепишем её таким образом, чтобы к строке «Привет, » добавлялось значение реквизита «Имя», который связан с элементом ввода на форме:

Теперь снова запустим 1С:Предприятие, обработку, введём своё имя и нажмём кнопку «Привет»:

То что надо!

Команды, элементы, реквизиты, объект… вы ещё не запутались?

Думаю запутались Спешу вас успокоить, что не стоит переживать по этому поводу. Со временем ситуация прояснится.

А пока я попробую более простыми словами описать вам эти составные части любой формы. А вы после этого можете ещё раз перечитать урок — уверен, многое станет более понятным.

Кнопка — элемент. Надпись — элемент. Поле ввода — тоже элемент

То есть элемент формы — это прежде всего часть её визуального представления. А значит у элемента бывают такие характеристики как цвет, шрифт, положение на форме, размер и многие другие.

Элементы позволяют нам некоторым образом взаимодействовать с формой: читать, нажимать, проматывать и т.п.

Вот например.

Кнопка

Очевидно, что кнопка не может быть сама по себе. Когда пользователь нажимает на неё — должно произойти некоторое действо, задуманное программистом.

Это действо и называется командой

Ну встроенные команды — они на то и встроенные. Что их действие придумано уже до нас. Мы можем лишь перетащить эти команды на форму и превратить их в кнопки. К таким командам относится, например, команда закрытия формы. Нам не нужно ничего программировать — достаточно перетащить стандартную команду «Закрыть» на форму и всё

А команда формы — это команда придуманная нами самими. Это та команда, которую мы сами добавили на закладку «Команды формы», затем нашли в её свойствах пункт «Действие», ткнули на него и запрограммировали код на встроенном языке в автоматически созданном обработчике в модуле формы (например, команда «Привет» из этого урока).

Ну в общем вы поняли: команда — это некоторое действие, запрограммированное на языке 1С (или уже встроенное в программу). А кнопка — это визуальный элемент формы, который при своём нажатии запускает связанную с собой команду.

Надпись

Это просто текст на форме. У такого элемента есть свойство «Заголовок», значение которого мы задаём в редакторе и оно отображается в виде текста.

Поле

А вот это уже интересно. Потому что это такой особый элемент, который не сам по себе (как надпись), а обязательно должен быть связан с какими-то данными или по-другому РЕКВИЗИТАМИ (закладка «Реквизиты»).

Можно сказать, что реквизит — это переменная формы, которую мы объявляем на закладке «Реквизиты», а элемент связанный с реквизитом («Поле») это его представление на форме. Но у самого реквизита есть только имя, тип и значение.

Ну вот представьте, что у нас на форме есть поле для ввода числа. Если бы не было реквизитов — как бы мы из кода узнали, какое число ввёл пользователь? Мы бы обратились к элементу ввода по имени и прочитали некоторое его свойство, отвечающее за значение введённое пользователем.

Так вот в 1С так нельзя. Тут (начиная с «управляемых» форм) представление данных отделено от самих данных.

Получается, что элемент ввода — это элемент формы. А число, которое вводит пользователь, хранится не в самом элементе, а в реквизите, который связан с этим элементом.

Ещё раз. Реквизит — это именно данные (строка, число, дата) . Не визуальное представление (надпись с текстом, поле для ввода числа, поле для ввода даты). Визуальным представлением реквизита является как раз элемент формы «Поле».

И получается, что при написании кода на языке 1С для отображения и изменения данных мы прежде всего должны использовать реквизиты. Мы меняем из кода реквизиты, а связанные с ними поля на форме изменяются при этом автоматически.

И наоборот. Пользователь вводит на форме значения в элементы ввода (числа, текст, даты) и значения реквизитов также меняются автоматически.

Какие преимущества даёт такое отделение элементов формы от данных (реквизитов)? Большие! Программист создает нужные ему реквизиты (для хранения, отображения и ввода некоторых полей на форме) и пишет программный код работая только с этими реквизитами (данными). Он совершенно не задумывается пока как всё это будет выглядеть на форме. Оно ему и не надо! Он пока пишет только программный код.

А уже затем он перетаскивает эти реквизиты на форму, реквизиты превращаются в визуальные элементы формы, он их как-то настраивает, распихивает по закладкам и прочее. В общем на этом этапе (визуального проектирования формы) он работает уже только с элементами. При этом во много раз снижается вероятность сломать уже написанный код.

Ещё пример. Пусть у нас есть реквизит «Возраст» с типом «Число». Этот реквизит хранит только само число, больше ничего. Он не отвечает за то, как будет выглядеть это число, и в каком месте (или на какой закладке) будет располагаться элемент ввода на форме, связанный с этим числом. Реквизит — это только число! Обращаясь к реквизиту мы никак не сможем поменять размер элемента ввода на форме, цвет, видимость… За всё это отвечает не реквизит, а элемент! Меняя реквизит, мы меняем только число, которое отображается в элементе ввода на форме.

В общем: РЕКВИЗИТ — это переменная формы. Поэтому все данные храним в реквизитах (переменных), а для их вывода на форму (или ввода с формы) используем элементы. Именно это отделение логики от представления позволяет 1С с легкостью отображать одни и те же формы на разных клиентах: «толстый», «тонкий», «веб-браузер».

Чтобы обратиться к реквизиту «Возраст» из модуля формы достаточно сразу использовать его имя:

Возраст = 10;

А чтобы обратиться к элементу формы, который связан с этим реквизитом нужно использовать префикс «Элементы.», например:

Элементы.ПолеВводаВозраста.Цвет = «Красный»;

Что такое Объект?

Ну и, наконец, объект. Судя по-тому, что он находится на закладке «Реквизиты» — это тоже реквизит. Всё верно. Но он особенный.

Этот реквизит мы не создаём — он сам появляется на закладке «Реквизиты». В случае с обработкой он пустой, но если бы мы программировали форму какого-нибудь справочника, то реквизит объект как раз и представлял бы из себя поля этого справочника из базы.

Рядом с ним бы появился плюсик и мы могли бы его раскрывать и перетаскивать отдельные его части на форму и они бы также превращались в элементы.

Пройдите тест

Начать тест

Печать (Ctrl+P)

Команды формы

Общая информация

Действия в форме выполняются с помощью команд формы. Сами команды служат лишь описанием выполняемых действий. Для того чтобы команда стала выполнять свою функцию, она должна быть привязана к элементу формы (типа Кнопка). Можно выделить несколько групп команд, которые присутствуют в форме:
● Команды, создаваемые разработчиком в процессе проектирования формы. Для них необходимо создавать обработчик непосредственно в модуле формы.
● Стандартные команды, которые предоставляются расширением основного реквизита формы и расширениями реквизитов, которые являются списками (например, табличная часть объекта, динамический список, набор записей регистра сведений и т. д.), если с этим реквизитом есть связанный элемент формы.
● Глобальные команды – команды, предоставленные глобальным командным интерфейсом . Такие команды могут быть непараметризованными и параметризованными. Параметризованные глобальные команды будут предоставлены форме только в
том случае, если на форме есть источники параметров с соответствующими типами.
Доступность стандартных команд формы и элементов формы определяется свойством Состав команд соответствующего элемента формы.
Команды, которые предоставляет глобальный командный интерфейс (закладка Глобальные команды), могут быть размещены в любом месте формы, точно так же, как и команды формы.
В свойстве Действие указывается обработчик, который реализует действие, выполняемое командой. Если обработчик не задан, то команда будет недоступна для использования. К выбору в этом поле доступны только процедуры и функции без параметров, которые являются клиентскими
Если команда изменяет данные формы, то следует указать на это установкой свойства Изменяет сохраняемые данные. Тогда при попытке выполнения команды будут выполняться следующие действия:
● Попытка выполнить блокировку основного реквизита формы. Если попытка закончится неудачей – команда не будет выполнена.
● Установлен признака изменения у формы (флаг Модифицированность).
Если для команды установлено свойство Изменяет сохраняемые данные и форма находится в режиме Только просмотр, то все элементы формы, связанные с этой командой, также будут находиться в состоянии Только просмотр.
Кроме того, исполнение параметризованной глобальной команды, для которой параметр предоставляется реквизитом с установленным свойством Сохраняемые данные, для нового и несохраненного объекта приведет к попытке записать объект. При этом пользователю будет задан вопрос о необходимости записи. Если ответ будет отрицательный – команда не будет выполнена.
ПРИМЕЧАНИЕ. При автоматическом заполнении командных панелей и контекстных меню, для которых указан источник команд, стандартные команды не добавляются, если в данном элементе есть кнопки, добавленные вручную с такими же командами. Данная логика не распространяется на команды, добавляемые из фрагмента глобального командного интерфейса.
Для упрощения разработки различных диалогов в стандартные команды формы добавлены команды Да, Нет, ОК, Отмена, Повторить, Прервать,Игнорировать. Если такая команда добавлена в форму, то при нажатии пользователем этой кнопки будут выполнены следующие действия:
● Для формы, открытой в модальном режиме, выполняется закрытие формы и возвращается соответствующее значение типа КодВозвратаДиалога.
● Для формы, открытой в немодальном режиме, выполняется только закрытие формы.
При формировании имени обработчика выполнения команды будет использоваться свойство команды Имя.
Стандартная команда формы Справка служит для открытия справочной информации по форме/объекту конфигурации. Расположение этой кнопки на командной панели формы определяется свойством ТолькоВоВсехДействиях этой кнопки. Если данное свойство установлено в значение Авто (и для командной панели с автоматическим заполнением), то фактическое расположение будет следующим:
● Интерфейс Такси – если у формы или родительского объекта конфигурации имеется справочная информация, то кнопка будет располагаться на командной панели. В противном случае кнопка будет располагаться только в меню Еще.
● Другие интерфейсы – кнопка всегда располагается на командной панели формы.
Функциональные опции – определяет, с какими функциональными опциями связан данный реквизит формы.

Особенности применения различных команд

Для расширений управляемой формы для объекта, справочника, документа, плана видов характеристик, бизнес-процесса, задачи и записи регистра сведений существует стандартная команда Показать в списке, которая предназначена для отображения формы списка соответствующего объекта с позиционированием открываемого списка на объекте, из которого выполняется команда. В интерфейсе команда будет недоступна, если ключевой реквизит формы равен пустой ссылке (или пустому ключу записи), т. е. редактируется новый объект.
Если команда используется в форме документа, то для такой команды доступно свойство Параметр, в котором можно выбрать форму, которая будет использоваться для отображения списка. Для выбора доступен собственно документ и все журналы, в состав которых входит используемый документ.
Кнопка, связанная с командой ПоказатьВСписке, отображается на форме вне зависимости от заполненности свойства Параметр. Если значение свойства Параметр задано, то в качестве заголовка по умолчанию у кнопки, связанной с командой ПоказатьВСписке, используется представление списка соответствующего объекта конфигурации (документа или журнала).
При автоматическом заполнении командной панели формы документа анализируются журналы, в которые входит документ, при этом на эти журналы текущий пользователь должен иметь право Просмотр и они (журналы) должны быть включены функциональным опциям . Если есть хотя бы один такой журнал, то в командной панели вместо кнопки Показать в списке размещается группа кнопок с заголовком Показать в списке. Подменю содержит:
● Команду ПоказатьВСписке, для которой свойство Параметр заполняется ссылкой на документ, в форме которого формируется командная панель;
● Команды ПоказатьВСписке (по одной на каждый подходящий журнал), для которых свойство Параметр заполняется ссылкой на соответствующий журнал документов.
Если нет доступных журналов, то в командной панели размещается команда ПоказатьВСписке, у кнопки которой свойство Параметр не задано.
Для отображения используется основная форма списка (с учетом возможности переопределения, подробнее см. здесь) соответствующего объекта конфигурации.
Если необходимо обеспечить функциональность команды ПоказатьВСписке в рамках реализации какого-то другого алгоритма, то для этого следует использовать метод ВыполнитьПереход(), существующий для объекта УправляемаяФорма.
Пример реализации:

Форма = ПолучитьФорму(«Справочник.Контрагенты.ФормаСписка”);
Форма.ВыполнитьПереход(Объект.Ссылка);

Если необходимо каким-то образом обработать открытие формы с позиционированием на нужном объекте, то это можно сделать с помощью обработчика события ОбработкаПерехода (событие вызывается для управляемой формы). Если после исполнения обработчик события ОбработкаПерехода требуется
выполнить стандартные действия (значение параметра СтандартнаяОбработка равна значению Истина), то у первой таблицы управляемой формы, связанной с основным реквизитом формы типа ДинамическийСписок текущая строка устанавливается в значение, переданное в качестве параметра Объект обработчика события. Если основным реквизитом открываемой формы выступает не динамический список – никаких действий
выполнено не будет.

Все-таки, программист — это не только техническая профессия, но и творческая, так как зачастую приходится самому создавать дизайн форм. Недавно мне захотелось поместить поле переключателя в командную панель управляемой формы, но не все так просто…
Элемент управления КоманднаяПанель предназначен для размещения в форме набора команд, с помощью которых производится управление информацией, размещенной в форме. Командная панель представляет собой древовидную структуру кнопок командной панели.
Для примера, создайте внешнюю обработку, у обработки создайте управляемую форму.

1. Управляемая форма обработки

Форма уже имеет стандартную командную панель, но в неё мы можем добавить только кнопки, вообще, командные панели могут содержать только элементы формы кнопки и подменю.
Поэтому, в свойствах стандартной панели нужно снять галочку у свойства Автозаполнение.

2. Свойства командной панели

Добавьте обычную группу в корень формы, в свойствах установите горизонтальную группировку, без отображения и заголовка.

3. Свойства обычной группы

В созданную группу добавьте две командных панели, для правой установите в свойстве Источник команд — Форма, а для левой запретите растягивание по горизонтали. Создайте числовой реквизит формы. Должно получиться следующее:

4. Командные панели формы

Вставьте между командными панелями элемент формы Поле переключателя, который связан с реквизитом формы, а стандартную команду формы Закрыть поместите в левую командную панель. Теперь для пользователя создается впечатление, что командная панель содержит переключатель.

5. Командная панель с элементом формы Поле переключателя

В итоге получилась красивая форма:

6. Итоговый вид формы

Таким способом можно отображать почти все элементы формы в командной панели.