Управляемые формы уф 1с описание. СтавАналит
Мы все знаем, что у компании "1С" было много разных версий платформы 1С, нас сейчас будут интересовать одни из последних версий на момент написания этой статьи, это версии 1С 8.2 и 1С 8.3. Если Вам приходилось работать в обеих этих версиях то Вы, скорее всего, заметили различия в интерфейсах данных версий , для пользователей они отличаются только внешне. По сути, выбор обычного или управляемого приложения говорит системе, какие формы для отображения нужно запускать, обычные или управляемые , а также какой клиент приложения будет использоваться по умолчанию, толстый или тонкий. Более подробную информацию по клиентам читайте в статье «Что такое толстый и тонкий клиент в 1С, а также их различия».
Обычное приложение 1С (обычные формы, обычный интерфейс, версия 1С 8.2)
В 1С 8.2 возможна работа только с обычными формами, в режиме обычного приложения . На изображении ниже показана база в режиме работы "обычное приложение 1С" (обычные формы).
Управляемое приложение 1С (управляемые формы, управляемый интерфейс, версия 1С 8.3)
На платформе 1С 8.3 мы можем работать как с обычными формами (в режиме совместимости) так и с управляемыми. Причем у управляемых форм есть два вида отображения, это стандартный и такси . Пример конфигурации 1С 8.3 со стандартными управляемыми формами показан ниже, а после него показан интерфейс "Такси".
Чем отличаются обычное и управляемое приложение 1С?
Как мы уже выяснили обычное приложение и управляемое приложение это такие виды запуска программы 1С . Причем в зависимости от значения вида запуска 1С (обычное или управляемое приложение ), по умолчанию будет загружаться определенный интерфейс (обычные или управляемые формы ), отсюда и столько синонимов этому понятию. Хотим отметить, что различия в интерфейсах довольно существенные, управляемый интерфейс был переработан полностью. В принципе это и есть все отличия, которые видят рядовые пользователи программы 1С. Что касается программистов, то управляемый интерфейс требует написания видоизмененного кода, ведь разработка уже ведется в 1С 8.3, а не в 1С 8.2, отсюда и все вытекающие последствия. Код также должен быть разделен на клиентский и на серверный, указывается это с помощью соответствующих директив в конфигураторе.
С появлением платформы 1С Предприятие 8.2 механизм разработки пользовательского интерфейса значительно изменился. Появилась возможность создания управляемых форм и приложений (Рисунок 1).
Рисунок 1
Кроме этого предлагается новая система разделения функциональности между клиентским приложением и сервером.
Управляемое приложение поддерживает следующие типы клиентов:
- Толстый клиент (обычный и управляемый режим запуска),
- Тонкий клиент,
- Веб-клиент.
Механизм создания управляемых форм значительно отличается от обычных. В первую очередь управляемые формы отличаются тем, что создаются системой автоматически на основе специальных настроек, программисту теперь нет необходимости прорисовывать детально каждую форму. Вся функциональность формы описывается в виде реквизитов и команд. Реквизиты – это данные, с которыми работает форма, а команды – выполняемые действия. Для каждого метода или переменной формы обязательно должна быть указана директива компиляции, определяющая, место выполнения (клиент или сервер). Директивы компиляции могут быть следующие:
- &НаКлиенте,
- &НаСервере,
- &НаСервереБезКонтекста,
- &НаКлиентеНаСервереБезКонтекста.
Управляемая форма отличается от обычной формы также и типами данных, с которыми она работает. Если обычная форма работает с большинством типов, которые предоставляет 1С: Предприятие (в том числе и вида СправочникОбъект, ДокументОбъект и т. д.), то в управляемой форме можно выделить следующие категории типов:
- типы, которые непосредственно используются в форме – это те типы, которые существуют на стороне тонкого и Веб-клиента (например, Число, СправочникСсылка.Товары, ГрафическаяСхема, ТабличныйДокумент);
- типы, которые будут преобразованы в специальные типы данных – типы данных управляемой формы. Такие типы отображаются в списке реквизитов формы в круглых скобках, например (СправочникОбъект.Товары);
- динамический список.
Функционирование управляемых форм имеет следующие отличительные особенности (Рисунок 2):
- Форма существует и на клиенте и на сервере.
Она осуществляет клиент-серверное взаимодействие (передачу данных и оформительских свойств элементов).
- Форма не работает с прикладными объектами
Рисунок 2
В форме используются специальные универсальные объекты
ДанныеФормы
(Рисунок 3).
Рисунок 3
Прикладные объекты работают только на сервере и только во время выполнения некоторых операций.
При открытии формы:
- Объект считывается из базы данных,
- Объект конвертируется в данные формы,
- Объект удаляется (из памяти),
- Данные формы передаются на клиента.
При записи:
- Данные формы получаются с клиента,
- Данные формы конвертируются в объект,
- Объект записывается в базу данных,
- Объект удаляется (из памяти).
Допустим, есть внешняя обработка, написанная для версии 8.1. Можно ли запустить ее в версии 8.2 так, чтобы работать с ее старой, неуправляемой формой? Обработка нужна всего один раз, для переноса данных, и создавать для нее управляемую форму ради одного раза не хочется...
Для внешних обработок (открываемых из отдельного файла) в управляемом режиме использование обычных форм не поддерживается. Поэтому если в конфигурации, работающей в управляемом режиме, необходимо запустить обработку с неуправляемой формой, и не хочется создавать для этой обработки новую, управляемую форму, то сначала такую обработку нужно включить в состав конфигурации.
Обычные (неуправляемые) формы могут работать только в толстом клиенте. Тонкий и веб-клиенты поддерживают работу только с управляемыми формами.
Поэтому, если нужно открыть обычную форму обработки в управляемом интерфейсе приложения, то это возможно только в толстом клиенте, запущенном в режиме управляемого приложения.
Проще всего запустить толстого клиента в режиме управляемого приложения из конфигуратора, указав это в параметрах: Сервис - Параметры - Запуск 1С:Предприятия - Основные - Толстый клиент (управляемое приложение).
При этом нужно помнить, что запуск клиентов в управляемом режиме возможен только в том случае, если у конфигурации отключена совместимость в версией 8.1 (свойство РежимСовместимости ).
Однако этого недостаточно для того, чтобы платформа откорыла старую, неуправляемую форму обработки.
Возможность использования обычных форм в управляемом режиме регулируется специальным свойством конфигурации - ИспользоватьОбычныеФормыВУправляемомПриложении . Это свойство нужно установить.
В палитре свойств конфигурации это свойство отображается не всегда, а только в случае, если в параметрах конфигуратора выбран режим редактирования конфигурации Управляемое приложение и обычное приложение (Сервис - Параметры - Общие ).
Ну и наконец, у объекта, обычную форму которого вы хотите увидеть в управляемом режиме, должна существовать единственная основная форма объекта, и эта форма должна быть обычной, неуправляемой.
В других случаях (если у объекта нет ни одной основной формы или у объекта есть управляемая основная форма) платформой будет по умолчанию генерироваться или открываться (если она есть) управляемая форма.
Главная проблема что за 10-15 лет уже наколбашено очень много кода под обычные формы. Переписывать это все на клиент-сервер никто не хочет + обучено работе с интерфейсом очень много народу. Обязательный переход на БП 3.0 со следующего года рождает панику в умах разработчиков и бухгалтеров. Фидбек будет очень нелицеприятный. К тому же повышается планка входа в профессию, программировать сложнее, типовые еще сложнее стали. Чего стоит новый алгоритм проведения в типовых документах. УФ отлично смотрятся когда у вас 2-3 кнопочки на документах, УФ супер для работы на мобильных устройствах, но пользуются этим 0.01% компаний. Переходить придется, если 1С не придумает чего-то нового, но будет это долго и мучительно для всех. А деньги платить придется самим компаниям.
Я тоже пока только негатив испытываю от управляемых форм, вот еще минусы нововведения:
- ничего? ну я пару раз столкнулся, например написать и прицепить к конфе ЗУП внеш.печ.форму, обработку там целая эпопея, полно инструкций в инете и страницы кода должны.
на толстом клиенте одна процедура с параметрами т.е. разработка минутное дело.
и тормоза в тонком невооруженным видно - Насчет уметь готовить управляемые формы — это искусство ради искусства, а какой практический смысл, особенно для файловой версии?
- я 3 года ваял в УФ, но теперь перешел обратно на простые формы, и поверьте мне этот переход психологически было сделать довольно сложно, но это мой осознаный выбор ибо то, что 1с предлогает на УФ — это совершенно УГ…. может через пару лет 1с и сделает прорыв, но сейчас она только в поиске того места где этот прорыв делать…
- УФ в конфигураторе открываются намного дольше.
После этого открытие форм в 8.1 — как на самолет пересесть с грузовика! - Гемороя стало больше для всех, пользователи в шоке от нового интерфейса(не все признаются, но тупят значительно больше и по меньшим мелочам), половина программистов стало проф не пригодными, найти работу среднему спецу стало тяжелей да и как выдавать качественный продукт. А самая прикольная маркетинговая тема УФ в том везде парят что переход происходит простым обновлением, только что-то все забывают что с начало надо конфу до последних релизов догнать! Но в принципе мне нравится задумка!
- Незнаю моя практика показывает обратное. Там где бухи в стрых формах бьют уже несколько лет на автомате, в новых УФ типовых каждый месяц начинается «пля, куда теперь 1С после обновления дела эту кнопку и почему теперь это не работает», что согласитесь не добавляет скорость.
- — кода стало больше
— код стал сложнее
— доработка типовых — сильно сложнее
— пользователи которым я давал УТ11 никаких достоинств по сравнению с 10.х не нашли
— зато нашли тормоза и недостаток некоторых функций типа поиска (почему-то хотели именно поиск с вперед-назад а не отбор)
мое мнение — слишком большие жертвы ради веб-клиента и планшетиков. Причем лично я пока реальную работу с веб-клиентом не встречал вообще, кому надо успешно пользуются удаленным доступом - Клиент-серверный бедлам должен быть дать прирост производительности и масштабируемость, при этом в затратах — увеличение кодирования.
Однако прирост выявился не у всех, отсюда и разочарование. А на затраты кодирования нагнули при этом всех.
P.S. Собственно, мне управляемые нравятся, спокойно на них рисую. Но вот типовые стали извратные. - На домашнем (нормальный комп) веду свою бухию по ИП.
8.3, БП3, в шашечках. Основное впечатление — я не работаю, а все время жду. отклик геморройский. ОСВ по счету формируется простая офигеть — такое впечатление что карточка счета за год в мегахолдинге. - УТ11 — дикий тормоз, ужас и вообще кошмар.
УТ10 летает по сравнению с УТ11.
По поводу УФ — баги годами кишат, все кривое, колонки никогда не помещаються на одном экране, растяжение во многих случаях ужасное.
И еще могу минусов нашлепать дофига, из плюсов наверное ничего не скажу. Их попросту нет.
Фирмы конкретно попали с этими формами, тк как разработка стоит доролже, спеов как не было так и нет нормальных.
Плюсов мало, но они конечно есть…
Плюсы :
ответ давно есть, чего дали УП:
кросс платформенность клиента
- работа на плохих линиях связи
- возможность работы через браузер (без установки клиента)
И Data Transfer Object к структуризации кода, управляемой формы в среде 1С 8.2.
Введение
Начнем с небольшого описания понятия «управляемая форма» и связанных концепций платформы 1С. Знатоки платформы могут пропустить этот раздел.В 2008 году стала доступна новая версия платформы 1С: Предприятие 8.2 (далее Управляемое приложение), которая полностью меняет весь слой работы с интерфейсом. Сюда относится и командный интерфейс, и формы, и оконная система. При этом не только меняется модель разработки пользовательского интерфейса в конфигурации, но и предлагается новая архитектура разделения функциональности между клиентским приложением и сервером.
Управляемое приложение поддерживает следующие типы клиентов:
- Толстый клиент (обычный и управляемый режим запуска)
- Тонкий клиент
- Веб-клиент
Основные отличия управляемых форм для разработчика:
- Декларативное, а не «по пикселям» описание структуры. Конкретное размещение элементов выполняется системой автоматически при отображении формы.
- Вся функциональность формы описывается в виде реквизитов и команд . Реквизиты – это данные, с которыми работает форма, а команды – выполняемые действия.
- Форма выполняется и на сервере и на клиенте.
- В контексте клиента, недоступны практически все прикладные типы, и соответственно невозможно изменить данные в информационной базе.
- Для каждого метода или переменной формы обязательно должна быть указана директива компиляции , определяющая, место выполнения (клиент или сервер) и доступ к контексту формы.
- &НаКлиенте
- &НаСервере
- &НаСервереБезКонтекста
- &НаКлиентеНаСервереБезКонтекста
Все дальнейшие рассуждения будут о правой части иллюстрации, о том, как структурировать код модуля и какие принципы позволят реализовать эффективное клиент-серверное взаимодействие.
Обозначим проблему
Прошло уже несколько лет как новая версия платформы 1С активно используется и выпущено множество решений (конфигураций) как фирмой 1С, так и ее многочисленными партнерами.Сложилось ли за это время у разработчиков единое понимание принципов клиент-серверного взаимодействия при создании форм, и изменился ли подход к реализации программных модулей в новых архитектурных реалиях?
Рассмотрим структуру кода (модуль формы) в нескольких формах одной типовой конфигурации и попробуем найти закономерности.
Под структурой будем понимать секции кода (чаще всего это блоки комментариев) выделенные разработчиком для группировки методов и директивы компиляции этих методов.
Пример 1:
Секция обработчиков событий
Метод – наклиенте
Метод – насервере
Метод - наклиенте
Секция служебных процедур и функций
Вспомогательные функции управления вводом
Пример 2:
Служебные процедуры и функции
Документы оплаты
Ценности
Обработчики событий
Пример 3:
Служебные процедуры на сервере
Служебные процедуры на клиенте
Служебные процедуры на сервере без контекста
Обработчики событий шапки
Обработчики событий команд
Пример 4:
Процедуры общего назначения
Обработчики событий формы
Процедуры подсистемы «контактная информация»
По сути, структура кода отсутствует, или мягче говоря, она аналогична тому, что было в формах 8.1:
- Неинформативные слова «Общие, Служебные, Вспомогательные».
- Робкие попытки разделить клиентские и серверные методы.
- Часто методы группируются по интерфейсным элементам «Работа с табличной частью Товары, Контактной информацией».
- Произвольное расположение методов и групп кода. Например, Обработчики событий могут быть в одной форме вверху, в другой внизу, в третьей вообще не выделены и т.д.
- И не будем забывать, что это все в рамках одной конфигурации.
- Да бывают конфигурации, в которых слова «Общие, Служебные, Вспомогательные» всегда находятся на одних и тех же местах но…
Зачем нужна структура кода?
- Упрощение сопровождения.
- Упрощение обучения.
- Фиксация общих/важных/удачных принципов.
- …ваш вариант
Почему существующий стандарт разработки от фирмы 1С не помогает?
Посмотрим опубликованные на дисках ИТС и в различных «Пособиях разработчика…» принципы, рекомендуемые при написании управляемой формы.- Минимизируйте число серверных вызовов.
- Максимум вычислений на сервере.
- Неконтекстные вызовы сервера быстрее контекстных.
- Программируйте с учетом клиент-серверного взаимодействия.
- и т.п.
Шаблоны проектирования или мудрость поколений
Клиент-серверное взаимодействие используется в различных программных технологиях не один десяток лет. Ответ на обозначенные в предыдущем разделе вопросы давно известен и суммирован в двух базовых принципах.- Remote Facade (далее Интерфейс удаленного доступа)
- Data Transfer Object (далее Объект переноса данных)
- … каждый объект, потенциально предназначенный для удаленного доступа, должен иметь интерфейс с низкой степенью детализации , что позволит максимально уменьшить количество вызовов, необходимых для выполнения определенной процедуры. … Вместо того, чтобы запрашивать счёт и все его пункты отдельно, надо считать и обновить все пункты счёта за одно обращение. Это влияет на всю структуру объекта.…Запомните: интерфейс удаленного доступа не содержит логики домена .
- …если бы я был заботливой мамой, то обязательно сказал бы своему ребенку: «Никогда не пиши объекты переноса данных!» В большинстве случаев объекты переноса данных представляют собой не более чем раздутый набор полей … Ценность этого омерзительного монстра состоит исключительно в возможности передавать по сети несколько элементов информации за один вызов - прием, который имеет большое значение для распределенных систем.
Примеры шаблонов в платформе 1С
Прикладной программный интерфейс доступный разработчику при разработке управляемой формы, содержит много примеров данных принципов.Например метод ОткрытьФорму(), типичный «огрубленный» интерфейс.
ПараметрыОткрытия = Новый Структура("Параметр1, Параметр2, Параметр3", Значение1, Значение2, Значение3); Форма = ОткрытьФорму(ИмяФормы, ПараметрыОткрытия);
Сравните с принятым в v8.1 стилем.
Форма = ПолучитьФорму(ИмяФормы); Форма.Параметр1 = Значение1; Форма.Параметр2 = Значение2; Форма.Открыть();
В контексте управляемой формы множество «Объектов переноса данных». Можно выделить системные
и определяемые разработчиком
.
Системные моделируют на клиенте прикладной объект, в виде одного или несколько элементов данных формы. Создать их вне привязки к реквизитам формы нельзя.
- ДанныеФормыСтруктура
- ДанныеФормыКоллекция
- ДанныеФормыСтруктураСКоллекцией
- ДанныеФормыДерево
- ЗначениеВДанныеФормы()
- ДанныеФормыВЗначение()
- КопироватьДанныеФормы()
- ЗначениеВРеквизитФормы()
- РеквизитФормыВЗначение()
Пример 1С v8.1:
// на клиенте в контексте формы ЗаполнитьКэшПользователей(ПодразделениеСсылка)
Пример 1С v8.2:
// на сервере в контексте формы ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ЗаполнитьКэшПользователей(ПодразделениеСсылка); ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
Объекты переноса данных, структура которых определяется разработчиком это небольшое подмножество типов доступных и на клиенте и на сервере. Наиболее часто в качестве параметров и результатов методов «огрубленного» интерфейса используются:
- Примитивные типы (строка, число, булево)
- Структура
- Соответствие
- Массив
- Ссылки на прикладные объекты (уникальный идентификатор и текстовое представление)
&НаСервереБезКонтекста Функция СерверИзменитьСтатусЗаказов(Заказы, НовыйСтатус) Ошибки = Новый Соответствие(); // [заказ][описание ошибки] Для Каждого Заказ Из Заказы Цикл НачатьТранзакцию(); Попытка ДокОб = Заказ.ПолучитьОбъект(); …. другие действия, возможно не только с заказом… Исключение ОтменитьТранзакцию(); Ошибки.Вставить(Заказ, ОписаниеОшибки()); КонецПопытки; КонецЦикла; Возврат Ошибки; КонецФункции // СерверИзменитьСтатусЗаказов()
Структурируем код
Главные цели, которые должен отражать модуль управляемой формы и подходы к решению.- Четкое разделение клиентского и серверного кода. Не будем забывать, в момент выполнения это два взаимодействующих процесса, в каждом из которых существенно отличается доступный функционал.
- Четкое выделение интерфейса удаленного доступа, какие методы сервера можно вызывать с клиента, а какие нельзя? Названия методов удаленного интерфейса начинаются с префикса «Сервер». Это позволяет, читая код сразу видеть переход управления на сервер, и упрощает использование контекстной подсказки. Отметим, что официальная рекомендация (ИТС) предлагает именовать методы с постфиксами, например, так ИзменитьСтатусЗаказовНаСервере(). Однако повторим не все серверные методы можно вызывать с клиента, и поэтому более важна логическая доступность, а не место компиляции. Поэтому префиксом «Сервер» отмечаем только методы доступные для клиента, метод-пример назовем СерверИзменитьСтатусЗаказов().
- Удобочитаемость. Дело вкуса, принимаем порядок, когда модуль начинается с процедур создания формы на сервере и методов удаленного доступа.
- Сопровождаемость. Должно быть однозначно определено место для добавления нового кода. Важный момент, автоматически создаваемые конфигуратором заготовки методов добавляются в конец модуля. Т.к чаще всего автоматически создаются обработчики событий элементов формы, то соответствующий блок расположен последним, чтобы не перетаскивать каждый обработчик в другое место модуля.
- Графический вариант – наглядно показывает основной поток выполнения.
- Текстовый вариант - это пример оформления шаблона для быстрой вставки структуры в новый модуль формы.
//////////////////////////////////////////////////////////////////////////////// // <(c) Автор=""", ИмяПользователя>" Дата=""", ДатаВремя,"ДФ=dd.MM.yyyy">"/> // <Описание> // > // Описание> //////////////////////////////////////////////////////////////////////////////// // ПЕРЕМЕННЫЕ МОДУЛЯ //////////////////////////////////////////////////////////////////////////////// // НА СЕРВЕРЕ //******* СОБЫТИЯ НА СЕРВЕРЕ ******* &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //Вставить содержимое обработчика КонецПроцедуры //******* ИНТЕРФЕЙС УДАЛЕННОГО ДОСТУПА ******* //******* БИЗНЕС-ЛОГИКА НА СЕРВЕРЕ ******* //////////////////////////////////////////////////////////////////////////////// // ОБЩИЕ МЕТОДЫ КЛИЕНТА И СЕРВЕРА //////////////////////////////////////////////////////////////////////////////// // НА КЛИЕНТЕ //******* БИЗНЕС-ЛОГИКА НА КЛИЕНТЕ ******* //******* КОМАНДЫ ******* //******* СОБЫТИЯ НА КЛИЕНТЕ ******* //////////////////////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
Связанные вопросы
В заключение обозначим несколько направлений, о которых полезно подумать при программировании клиент-серверного взаимодействия.- Варианты реализации интерфейса удаленного доступа . Асинхронность, степень детализации...
- Кэширование. В 1С приняли неудачное архитектурное решение, введя кэширование только на уровне вызова методов общих модулей и не предоставив возможности управления (время актуальности, сброс по требованию).
- Неявные серверные вызовы . Не забывайте о технологических особенностях, многие «безобидные» операции на клиенте провоцируют платформу на обращение к серверу.
Возможно, будет полезно почитать:
- Как узнать где воевал мой дед в ВОВ, какие награды у него были? ;
- Перечень необходимой документации для получения разрешения на ввод объекта в эксплуатацию Ввод объекта в эксплуатацию в соответствии ;
- Презентация отчет отдела жкх и благоустройства ;
- Совершенно секретная фортификация ;
- паника в женских журналах ;
- Победитель 17 битвы. сезон — Мохсен Норузи ;
- Олимпийские игры в году бразилия ;
- Российская федерация Когда образована рф ;