1. Главная страница » Компьютеры » 1С управляемая форма командный интерфейс

1С управляемая форма командный интерфейс

Автор: | 16.12.2019

Подсистема в 1С 8.3 — объект древа метаданных, который отвечает за построение командного интерфейса конфигурации.

Подсистемы в 1С 8.2

Ниже в статье речь пойдет о подсистемах начиная с версии 8.2.

Дело в том, что в версии 8.1 (как и для обычного приложения 8.2) тоже были подсистемы, но они служили совершенно для других целей, скорее, для разработчика, чем для пользователя. С помощью подсистем в 8.1 обычно разделяли разный функционал. Также подсистемы помогали при объединении разных конфигураций 1С — можно было указать, какую систему переносить.

Подсистемы 1С и интерфейс для программиста

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

Свойства и настройки

Рассмотрим настройки и свойства подсистем в конфигураторе:

Получите 267 видеоуроков по 1С бесплатно:

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

Кнопка Командный интерфейс открывает панель настройки интерфейса, где можно настроить интерфейсы в зависимости от роли текущего пользователя:

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

На вкладке Функциональные опции указывается список функциональных опций, в которых используется данная подсистема.

Вкладка Состав определяет набор объектов метаданных, участвующих в данной подсистеме.

На вкладке Прочее можно описать справку к подсистеме и указать настройку Включать в содержание справки — включать ли данный раздел справки в общую справочную информацию по конфигурации.

Если не отображается отчет или обработка в управляемом интерфейсе

Эта проблема очень часто возникает у начинающих разработчиков — вроде отчет или обработка была добавлена в состав подсистемы, а её не видно.

Первая причина этого может в том, что у объекта не задана управляемая форма.

Вторая причина — на вкладке Команды объекта установлена галка «Использовать стандартные команды». Связано это с тем, что для открытия обработки может быть описана как своя процедура, так и использована стандартная:

Почему не отражается новая подсистема в интерфейсе 1С?

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

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

  1. Платформа 8.3 позволяет использовать как обычные, так и управляемые формы. Возможность использования обычных и управляемых форм зависит от настроек конфигурации и клиентского приложения (зависит от указания в конфигураторе режима совместимости, и варианта запуска клиента).
  2. Использование обычных форм возможно только втолстом клиенте.
  3. Использование управляемых форм возможно ( в зависимости от настроек конфигурации):
    • в толстом клиенте в режиме обычного приложения;
    • в толстом клиенте в режиме управляемого приложения;
    • в тонком клиенте;
    • в веб-клиенте.
    • Автопреобразование обычных форм в управляемые и обратноне поддерживается (у обычных и управляемых форм разные механизмы и варианты компиляции).
    • Возможность системы создания "налету" форм по умолчанию в режиме "1С:Предприятие"следует использовать во всех случаях, когда не требуется выполнение программных действий в форме, и нет особых требований по отношению внешнего вида формы объекта со стороны пользователя.
    • Количество форм, подчиненных справочнику, не ограничено (может быть создано произвольное количество форм).
    • При обращении к обычной форме "извне" для считывания данных рекомендуется обращаться к реквизитам формы и свойствам расширения формы.
    Читайте также:  Miui 10 список изменений

    Редактор формы используется для создания и редактирования форм объектов прикладного решения.

    Формы объектов используются системой для визуального отображения данных в процессе работы пользователя.

    Составляющие управляемой формы 1С:

    • элемент — объект, определяющий визуальное представление формы и осуществляющий взаимодействие с пользователем;
    • командный интерфейс — совокупность команд, отображаемых в форме;
    • реквизит — объект, данные которого форма использует в своей работе;
    • команда — действие, которое определено в данной конкретной форме;
    • параметр — объект, значения которого характеризует саму форму и используются при ее создании (остаются постоянными в процессе "жизни" формы);
    • модуль — программа на встроенном языке, отвечающая за работу с элементами и за обработку событий.

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

    В отдельном окне, в нижней части редактора, отображается внешний вид формы в режиме 1С:Предприятие.

    Редактирование элементов формы 1С

    Элементы формы 1С

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

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

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

    В элементах управления данные не хранятся!

    Для управляемой формы, список элементов управления доступен из соответствующего окна:

    Редактор форм позволяет разработчику использовать широкий набор возможностей для изменения набора элементов формы и, соответственно, внешнего вида формы — того вида, который форма будет иметь в режиме 1С:Предприятие.

    Цель статьи – показать применение шаблонов Remote Facade и Data Transfer Object к структуризации кода, управляемой формы в среде 1С 8.2.

    Введение

    Начнем с небольшого описания понятия «управляемая форма» и связанных концепций платформы 1С. Знатоки платформы могут пропустить этот раздел.

    В 2008 году стала доступна новая версия платформы 1С: Предприятие 8.2 (далее Управляемое приложение), которая полностью меняет весь слой работы с интерфейсом. Сюда относится и командный интерфейс, и формы, и оконная система. При этом не только меняется модель разработки пользовательского интерфейса в конфигурации, но и предлагается новая архитектура разделения функциональности между клиентским приложением и сервером.
    Управляемое приложение поддерживает следующие типы клиентов:

    • Толстый клиент (обычный и управляемый режим запуска)
    • Тонкий клиент
    • Веб-клиент

    В управляемом приложении используются формы, построенные на новой технологии. Они называются Управляемые формы. Для облегчения перехода прежние формы (т.н. Обычные формы) также поддерживаются, но их функциональность не развивается и они доступны только в режиме запуска толстого клиента.
    Основные отличия управляемых форм для разработчика:

    • Декларативное, а не «по пикселям» описание структуры. Конкретное размещение элементов выполняется системой автоматически при отображении формы.
    • Вся функциональность формы описывается в виде реквизитов и команд. Реквизиты – это данные, с которыми работает форма, а команды – выполняемые действия.
    • Форма выполняется и на сервере и на клиенте.
    • В контексте клиента, недоступны практически все прикладные типы, и соответственно невозможно изменить данные в информационной базе.
    • Для каждого метода или переменной формы обязательно должна быть указана директива компиляции, определяющая, место выполнения (клиент или сервер) и доступ к контексту формы.
    Читайте также:  Olympus mju ii zoom

    Перечислим директивы компиляции методов формы:

    • &НаКлиенте
    • &НаСервере
    • &НаСервереБезКонтекста
    • &НаКлиентеНаСервереБезКонтекста

    Проиллюстрируем перечисленное. На скриншоте пример управляемой формы и ее модуля в режиме разработки. Найдите декларативное описание, реквизиты, директивы компиляции и т.д.

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

    Обозначим проблему

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

    Рассмотрим структуру кода (модуль формы) в нескольких формах одной типовой конфигурации и попробуем найти закономерности.
    Под структурой будем понимать секции кода (чаще всего это блоки комментариев) выделенные разработчиком для группировки методов и директивы компиляции этих методов.
    Пример 1:

    По сути, структура кода отсутствует, или мягче говоря, она аналогична тому, что было в формах 8.1:

    • Неинформативные слова «Общие, Служебные, Вспомогательные».
    • Робкие попытки разделить клиентские и серверные методы.
    • Часто методы группируются по интерфейсным элементам «Работа с табличной частью Товары, Контактной информацией».
    • Произвольное расположение методов и групп кода. Например, Обработчики событий могут быть в одной форме вверху, в другой внизу, в третьей вообще не выделены и т.д.
    • И не будем забывать, что это все в рамках одной конфигурации.
    • Да бывают конфигурации, в которых слова «Общие, Служебные, Вспомогательные» всегда находятся на одних и тех же местах но…

    Зачем нужна структура кода?
    Почему существующий стандарт разработки от фирмы 1С не помогает?

    Посмотрим опубликованные на дисках ИТС и в различных «Пособиях разработчика…» принципы, рекомендуемые при написании управляемой формы.

    • Минимизируйте число серверных вызовов.
    • Максимум вычислений на сервере.
    • Неконтекстные вызовы сервера быстрее контекстных.
    • Программируйте с учетом клиент-серверного взаимодействия.
    • и т.п.

    Это лозунги, абсолютно верные, но как их реализовать? Как минимизировать число вызовов, что значит программировать в клиент-серверном режиме?

    Шаблоны проектирования или мудрость поколений

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

    • Remote Facade (далее Интерфейс удаленного доступа)
    • Data Transfer Object (далее Объект переноса данных)

    Слово Мартину Фаулеру, его описание данных принципов:

    • каждый объект, потенциально предназначенный для удаленного доступа, должен иметь интерфейс с низкой степенью детализации, что позволит максимально уменьшить количество вызовов, необходимых для выполнения определенной процедуры. … Вместо того, чтобы запрашивать счёт и все его пункты отдельно, надо считать и обновить все пункты счёта за одно обращение. Это влияет на всю структуру объекта.…Запомните: интерфейс удаленного доступа не содержит логики домена.
    • …если бы я был заботливой мамой, то обязательно сказал бы своему ребенку: «Никогда не пиши объекты переноса данных!» В большинстве случаев объекты переноса данных представляют собой не более чем раздутый набор полей … Ценность этого омерзительного монстра состоит исключительно в возможности передавать по сети несколько элементов информации за один вызов — прием, который имеет большое значение для распределенных систем.
    Читайте также:  Openvpn настройка клиента windows 7
    Примеры шаблонов в платформе 1С

    Прикладной программный интерфейс доступный разработчику при разработке управляемой формы, содержит много примеров данных принципов.
    Например метод ОткрытьФорму(), типичный «огрубленный» интерфейс.

    Сравните с принятым в v8.1 стилем.

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

    • ДанныеФормыСтруктура
    • ДанныеФормыКоллекция
    • ДанныеФормыСтруктураСКоллекцией
    • ДанныеФормыДерево

    Преобразование системных объектов переноса данных в прикладные типы и обратно выполняется методами:

    • ЗначениеВДанныеФормы()
    • ДанныеФормыВЗначение()
    • КопироватьДанныеФормы()
    • ЗначениеВРеквизитФормы()
    • РеквизитФормыВЗначение()

    Часто явное преобразование используется при адаптации существующего решения. Методы могут ожидать (использовать особенности) входные параметры, например ТаблицаЗначений, а не ДанныеФормыКоллекция, или метод был определен в контексте прикладного объекта и стал недоступен для прямого вызова из формы.
    Пример 1С v8.1:

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

    • Примитивные типы (строка, число, булево)
    • Структура
    • Соответствие
    • Массив
    • Ссылки на прикладные объекты (уникальный идентификатор и текстовое представление)

    Пример: метод принимает список заказов для изменения статуса и возвращает клиенту описание ошибок.

    Структурируем код

    Главные цели, которые должен отражать модуль управляемой формы и подходы к решению.

    • Четкое разделение клиентского и серверного кода. Не будем забывать, в момент выполнения это два взаимодействующих процесса, в каждом из которых существенно отличается доступный функционал.
    • Четкое выделение интерфейса удаленного доступа, какие методы сервера можно вызывать с клиента, а какие нельзя? Названия методов удаленного интерфейса начинаются с префикса «Сервер». Это позволяет, читая код сразу видеть переход управления на сервер, и упрощает использование контекстной подсказки. Отметим, что официальная рекомендация (ИТС) предлагает именовать методы с постфиксами, например, так ИзменитьСтатусЗаказовНаСервере(). Однако повторим не все серверные методы можно вызывать с клиента, и поэтому более важна логическая доступность, а не место компиляции. Поэтому префиксом «Сервер» отмечаем только методы доступные для клиента, метод-пример назовем СерверИзменитьСтатусЗаказов().
    • Удобочитаемость. Дело вкуса, принимаем порядок, когда модуль начинается с процедур создания формы на сервере и методов удаленного доступа.
    • Сопровождаемость. Должно быть однозначно определено место для добавления нового кода. Важный момент, автоматически создаваемые конфигуратором заготовки методов добавляются в конец модуля. Т.к чаще всего автоматически создаются обработчики событий элементов формы, то соответствующий блок расположен последним, чтобы не перетаскивать каждый обработчик в другое место модуля.

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

    • Графический вариант – наглядно показывает основной поток выполнения.
    • Текстовый вариант — это пример оформления шаблона для быстрой вставки структуры в новый модуль формы.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *