Управляемые формы 1с 8.3. Под капотом управляемых форм

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

Применимость

В статье рассматривается интерфейс «Такси» конфигурации, разработанной на платформе 1C 8.3.5.1098. Дополнения к текущим релизам платформы (8.3.11) приведены в заключении. Поэтому вся представленная информация актуальна.

Новое в управляемых формах в «1С:Предприятие 8.3»

Разработчики платформы «1С:Предприятие 8.3» в очередной раз основательно поработали над удобством работы пользователей с управляемыми формами.

Ввод по строке

Ранее, в полях ввода, при вводе с клавиатуры начальных символов, система искала подходящие элементы.

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

В конфигураторе у ссылочных объектов метаданных для настройки ввода по строке, была создана отдельная закладка “Поле ввода”:

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

  • использование полнотекстового поиска;
  • поиск по вхождению подстроки или по началу строки;
  • выполнение поиска непосредственно или в фоновом режиме.

В свойстве “Способ поиска строки при вводе по подстроке” можно выбрать – следует ли искать только по первым символам строки или в любой ее части.

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

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

Естественно, использование поиска по любой части строки может привести к ухудшению производительности системы, особенно при большом объеме данных.

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

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

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

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

Результаты полнотекстового поиска, соответствующего введенной поисковой строке, приведены на рисунке:

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

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

Указанные выше обработчики не влияют на представление значений в списке выбора – в списке отражается основное представление объекта.

Однако после выбора в поле отображается ожидаемое переопределенное представление объекта.

Для увеличения нажмите на изображение.

Разработчики считают, что ошибок в таком поведении платформы нет, и что более ценно показать, почему конкретный результат найден (выделить, например, подстроку, по которой объект был найден), чем отобразить оторванное от результата поиска представление соответствующего значения.

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

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

Например, при помощи обработчиков событий АвтоПодбор и ОкончаниеВводаТекста конкретного поля ввода или при помощи обработчика события ОбработкаПолученияДанныхВыбора в модуле менеджера объекта.

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

Для увеличения нажмите на изображение.

Выпадающий список для поля ввода

В платформе 8.3 выпадающий список для поля ввода получил дополнительную функциональность для повышения удобства работы с системой.

Теперь этот список может отображать историю выбранных ранее значений. Список с историей показывается на экране при установке курсора в поле, при нажатии кнопки Выбрать из списка, или кнопки на клавиатуре со Стрелкой вниз.

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

Для увеличения нажмите на изображение.

Использование истории можно переопределить для конкретного реквизита объекта или элемента формы.

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

Также в списке поля ввода есть команда “Создать новый объект”. При этом будет открыта форма нового элемента.

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

Типовой шаблон использования команды “Создать новый элемент” выглядит следующим образом. Пользователь вводит название нужного элемента в поле ввода.

Если такого элемента в базе данных система не обнаружит – будет выведено сообщение об этом. После нажатия кнопки в списке, на экране откроется форма нового элемента с заполненным наименованием.

Рассмотренные новшества позволяют увеличить скорость ввода информации в систему.

Сохранение настроек динамических списков

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

У корневого элемента конфигурации появилось новое свойство – Хранилище пользовательских настроек динамических списков.

Это свойство выбирается из списка хранилищ настроек, определенных в конфигурации.

Для увеличения нажмите на изображение.

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

Внешний вид формы похож на настройку отчетов.

Для увеличения нажмите на изображение.

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

В режиме конфигуратора для этого необходимо заполнить свойство таблицы формы Группа пользовательских настроек.

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

При такой настройке форма будет иметь поля в виде “быстрых отборов”.

Для увеличения нажмите на изображение.

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

Режим просмотра динамического списка (список, дерево, иерархический список) сохраняется вместе с настройками элементов формы.

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

Если режим совместимости конфигурации установлен в значение “Не использовать”, то для динамического списка, у которого в качестве основной таблицы указана таблица журнала документов, кнопка “Создать” автоматически формируется в виде подменю со списком документов, входящих в журнал.

Для увеличения нажмите на изображение.

Этим упростилось создание новых документов пользователем из формы журнала. Также стало возможным быстро создавать на командной панели формы отдельные кнопки для создания нового документа определенного вида.

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

Для увеличения нажмите на изображение.

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

Для увеличения нажмите на изображение.

Т.к. материал в статье описан для платформы 8.3.5, то актуализируем его.

  • До версии 8.3.7 ввод по строке работал недостаточно быстро, поэтому в этом релизе была изменена структура данных индекса полнотекстового поиска, что привело к повышению скорости при работе системы в тех местах, где используется данный механизм. Отметим, что новый формат полнотекстового поиска используется в том случае, если режим совместимости установлен в значение «Не использовать». В режиме совместимости с с версией 8.3.6 поведение не изменилось. Также отметим, что в следующем релизе платформы 1С (8.3.8) механизм ввода по строке и при использовании строки поиска динамического списка был также улучшен, и теперь он обеспечивает поиск данных, которые еще не попали в полнотекстовый поиск. Ранее такого поведения не наблюдалось.
  • Выпадающий список поля ввода управляемой формы также претерпел некоторые улучшения. В версии 8.3.8 он стал автоматически подстраивать свою ширину под ширину отображаемых в нем данных, плюс клавиши Home и End стали обрабатываться прямо в поле ввода. Благодаря этим улучшениям стало удобнее использовать поле ввода с выпадающим списком.
  • Механизм сохранения настроек динамических списков также был улучшен, и в версии 8.3.6 свойства расширения таблицы формы для динамического списка Период и Отображение стали храниться в тех же разрезах, что и другие настройки динамического списка, что сильно упростило работу с ними разработчику. Теперь они стали доступны в обработчике управляемой формы ПриЗагрузкеПользовательскихНастроекНаСервере() , чего ранее не было.

На этом знакомство с управляемыми формами в интерфейсе «Такси» мы завершим, но в следующей статье познакомимся с новыми возможностями, которые представила платформа «1С:Предприятие» редакции 8.3.

Мы все знаем, что у компании "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.3 появился отказ от модальных функций вроде Вопрос , Предупреждение , ОткрытьФормуМодально . Для меня было непонятно, зачем это было сделано.

Каково же было мое удивление, когда в одном из примеров преподаватель вызвал открытие формы с параметром «Заблокировать весь интерфейс», т.е. по сути модально.

Я-то был уверен, что от модальности отказались.

Понимание пришло не сразу.

В 1С не отказались от модальных окон. Есть новые функции, чтобы вывести предупреждение, задать вопрос, открыть модально диалог выбора файла.

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

Т.е. платформа 1С избавилась от рудимента замораживания выполнения кода и перешла на полностью событийное управление формами.

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

В 1С появились мини-конструкторы - рефакторинг. Это упрощает написание обработчиков оповещения для асинхронного режима работы, чтобы не писать их вручную.

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

Новые возможности интерфейса

Меню

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

В свое время еще на 8.1 я делал систему меню в виде прикрепленного слева иерархического справочника, где видимость каждого пункта определялась правами доступа пользователя, для которого отображалось меню.

Я так понял, что 1С посчитало неправильным, что прикладной объект Интерфейс не используют, и решила выпустить ему новую, продвинутую альтернативу.

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

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

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

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

Порядок обхода

Кстати, для производительной работы пользователей важен порядок обхода - многие на автомате уже заучили определенный порядок обхода полей. Так вот, как раз от порядка обхода в 8.2 отказались. Он строго соответствует порядку размещения элементов. К счастью, есть возможность программного перехвата выхода из поля и передачи фокуса другому полю, иначе было бы совсем плохо с заявленной производительностью.

Рабочая область и вложенные формы

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

Намного проще было бы создавать её программным кодом или использовать механизм вложенных форм.

Что так и не реализовано в 8.2-8.3

Я так и не дождался вложенных форм. Увы, их нет, хотя они использовались еще в древнем Access .

Перетаскивания через буфер обмена нет. Т.е. приходится тащить мышкой, нельзя указать - я тащу отсюда и помещаю здесь, не разрывая жесть мышью, увы. Хотя, возможно, здесь на помощь может прийти сторонний софт, т.к. перетаскивание - это системная вещь в Windows .

Функциональные опции и видимость элементов

В своё время RLS были созданы для того, чтобы показывать пользователям только отдельные записи таблиц.

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

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

В свое время я доказал, что RLS на изменение уступает программному контролю записи на уровне модуля объекта/подписки. Точно так же подозреваю, что любая функциональная опция уступает обычному алгоритмическому описанию контроля видимости элементов - как в простоте использования, так и в универсальности подхода.

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

Приговор - функциональные опции и видимость через роли - малоэффективны, но их надо знать, т.к. они используются в типовых конфигурациях.

Интерфейс 8.2 и интерфейс Такси

Интерфейс 8.2 и интерфейс такси совместимы, т.е. новых объектов не появилось. Конфигурация может работать или в 8.2 или в Такси, можно позволить пользователю переключаться между этими интерфейсами.

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

Непонятно, зачем было идти таким запутанным путем, если в итоге базовая система меню в 8.1 еще более экономно расходовала рабочее пространство экрана?

Также в Такси изменились принципы отображения окон, в итоге код форм для 8.2 в некоторых местах неудобен. Но в этом направлении разницы я еще не осознал, хотя преподаватель и пытался рассказать основные принципы Такси. Попробую разобраться на практике, хотя и считаю все эти усовершенствования интерфейса избыточными и ненужными на практике пользователям бизнес-приложений.

Кстати, в 8.2 нельзя поменять палитру, это как бы визитная карточка платформы 1С. Точно также и система организации меню в виде 8.2 или Такси приучает пользователей к некоторому стандарту. Однако практика показывает, что на новую систему меню пользователь переучивается практически мгновенно. Вот поменять навыки работы с документами и отчетами намного сложнее.

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

Не проработанная идеология

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

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

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

Сомнения в эффективности

Некоторые подходы 1С к usability вызывают сомнения.

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

Также, например, в платформе невозможно сделать поле ввода в ячейке динамического списка, если источником является не базовая таблица. Не потому что это технически сложно, а из соображений usability .

Возможности сохранения настроек

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

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

Остальные вопросы

Что такое управляемые формы?

В управляемых формах код выполняется на клиенте и на сервере.

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

А сервер находится в непосредственном и быстром соединении с базой данных.

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

Именно так работают управляемые формы. При должной сноровке постоянное обращение к серверу не является сложностью.

Подобная организация эффективнее, чем подключение к серверу через удаленный доступ, кроме того, работа возможна непосредственно через браузер, т.е. на любой платформе - Windows, Linux , Android , Mac OS .

Заметки по 1С россыпью

Здесь приведу заметки, которые писал для себя, они содержат ценные знания:

  1. В окне запуска 1С прописываются уже не информационные базы, а точки входа. Т.е. одна база может присутствовать несколько раз, но прописана для разных пользователей и разных инструментов работы - браузер, тонкий/толстый клиент, вход для администратора.
  2. Для администратора появился ключ, который отключает контроль ролей. Войти в Предприятие таким способом можно, только если доступны административные права на конфигурацию.
  3. Общие реквизиты - не путать их с общими реквизитами в 1С7, в 82 они используются для разделения доступа в интерфейсе.
  4. Часто использовал минимальную высоту списка в форме, чтобы избавиться от лишней полосы прокрутки формы.
  5. Не стоит хранить картинки в реквизите справочника, это приводит к падению производительности справочников, надо использовать регистр сведений.
  6. В процедурах сервера при передаче параметров нужно использовать ЗНАЧ, чтобы параметр не передавался обратно на сервер.
  7. Новые функции СтрНачинаетсяС и СтрЗаканчиваетсяНа , возможно и другие, с платформы 8.3.6.
  8. В 1с 8.2 появился привилегированный режим, т.е. можно отключать контроль прав доступа на уровне ролей на участках кода.
  9. Элементы формы список, таблица значений и дерево значений отличаются тем, что список на сервере и клиенте имеет одинаковое представление, а для таблицы и дерева создаются специальные объекты и их надо преобразовывать на сервере.
  10. Порадовало, что преподаватель любит называть объекты в единственном числе и называть модули с подчеркивания, чтобы эти модули шли первым по порядку в контекстной подсказке.

О жизни и вокруг 1С

Преподаватель утверждал:

  1. Разработку нужно вести с интерфейса.
    Мое мнение : Утверждение сомнительное, т.к. знание и опыт использование архитектуры платформы позволяет сразу идти от прикладных объектов, а интерфейс уже строить потом.
  2. Руководитель не вводит данные, только смотрит отчеты. А управляет не вводом данных в 1С, а телефоном и через секретаря. Поэтому руководителю достаточно браузера, а поля ввода нужны только для фильтрации данных.
    Мое мнение : Да, это похоже на истину.
  3. Критиковал БСП (Библиотека Стандартных Подсистем). В том плане, что из нее невозможно и очень сложно выделить необходимые модули.
    Мое мнение : Т.к. даже БСП не удалось разбить на модули, то и УПП не получается разбить на модули УТ, ЗУП, БП, Производство. И тут не платформа виновата, а неправильная методология написания типовых - не соблюдается модульность. Тот же
    Navision давно имеет возможность сначала продать клиенту бухгалтерию, а потом он может докупить торговлю, производство и зарплату при необходимости, без переписывания кода и перехода на новую программу.
  4. Типовые стали очень сложными, их затруднительно изменять. Опять же не из-за сложности платформы, а из-за неправильной организации типовых. При этом теряется основной принцип - быстрое и экономное сопровождение и доработка типовых конфигураций при необходимости.
  5. Был продемонстрирован вариант оформления заказа, когда слева в рабочей области находится номенклатура, справа - список заказов. Напротив номенклатуры можно ставить количество, затем перетаскивать ее в список заказов и формируется заказ. Преимущество - не блокируется таблица заказов для создания нового заказа.
    Мое мнение : Преимущество надуманное - все же пользователям привычнее видеть отобранный товар в табличной части, можно сохранить этот заказ как черновик или скопировать заказ из шаблона. В общем, документы придуманы не зря.
  6. Объяснял разницу между разделами «Главное», «Важное», «Перейти», «Смотри также».
    Мое мнение : Лично я понял смутно, а значит, большинство так и не поймет эти заложенные в платформу нюансы
    usability в Такси. Поэтому интерфейсы будут выглядеть как раньше, как уже привыкли и пользователи, и программисты в 1С.
  7. В ячейке табличного поля на форме, источником которого является произвольный запрос, нельзя вводить данные, как в поле ввода. Это сделано в интересах usability , чтобы пользователь фокусировался на вводе данных в отдельном окошке.
    Мое мнение : Я привел пример с вводом в табличные части, где такое поле имеется, смысл запрета мне не понятен.
  8. Разводы возникают от сравнения супруга с другими людьми. Меньше сравнений - крепче брак.
  9. Иностранные языки легче изучать, когда изучаешь их сразу несколько, снимается зашоренность и зацикленность на одном родном языке.
  10. Иностранные языки невозможно изучать, если привязывать иностранное слово к слову на родном языке, нужно привязывать к образу. Цепочка иностранное слово - образ короче чем цепочка иностранное слово - родное слово - образ. В последнем случае мыслить на иностранном не получится.

Заключение

Выражаю благодарность преподавателю.

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

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

Надеюсь, и вы, читающие эту статью, по достоинству оцените управляемые формы.

Тоньше некуда. Теперь клиентское приложение не выполняет запросы к базе данных (это дело сервера). Клиентское приложение просто отображает интерфейс и данные.

Стоит отметить, что структура кода стала сложнее из-за таких преобразований. На клиенте нет ссылок, объектов, таблицы значений... доступны только примитивные типы (строка, дата, булево, массив, структура...). А значит программист должен теперь думать, что получить на сервере, и как это сделать с минимальными затратами.

Взаимодействие клиента и сервера

Новый подход к взаимодействию клиента и сервера позволил создать новую модель пользовательского интерфейса. Теперь интерфейс декларируется(!) проектирование интерфейса начинается с данных, с реквизитов и табличных частей. Создавая реквизит, вы обязаны думать, как он будет выглядеть в интерфейсе, будет ли он обязательным, как связан с другими реквизитами...

Отсутствие контекста (состояния) на сервере

Сервер 1С работает по принципу «без состояния» (англ. state-less). Это означает что сервер только отвечает на запросы, и при этом ничего не сохраняет у себя в промежутке между двумя запросами (для этих целей есть временное хранилище).

ДанныеФормыВЗначение, ДанныеФормыКоллекция, ДанныеФормы...

Мы обратились к серверу, он для нас все выполнил, удалил данные и забыл что мы приходили. Все объекты с именами "ДанныеФормы" + "что-то там" помогут нам сохранить свои данные между двумя серверными вызовами.

Временное хранилище

Временное хранилище, это специальное место, в котором (помимо реквизитов формы) можно сохранять состояние на сервере. В хранилище можно хранить данные, которые на клиенте недоступны (т.е. которые нельзя разместить реквизитах формы).

Для работы с временным хранилищем используются методы ПоместитьВоВременноеХранилище() Синтаксис: ПоместитьВоВременноеХранилище(<Данные>, <Адрес>) Описание: Сохраняет сериализуемое значение во временное хранилище. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Вызов метода выполняет обращение к серверу. <Адрес> (необязательный) Тип: УникальныйИдентификатор; Строка. Уникальный идентификатор формы, во временное хранилище которой надо поместить данные и вернуть новый адрес. Или адрес во временном хранилище, по которому надо поместить данные. Адрес должен быть получен ранее с помощью данного метода. В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удаленопосле закрытия этой формы. Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы, то значение будет удалено после завершения сеанса пользователя. Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы. Примечание: Временное хранилище, сформированное в одном сеансе, недоступно из другого сеанса. Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание. Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания. и ПолучитьИзВременногоХранилища() Синтаксис: ПолучитьИзВременногоХранилища(<Адрес>) Описание: Получает значение из временного хранилища. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Вызов метода выполняет обращение к серверу. Примечание: Результат выполнения не кэшируется, вызов сервера осуществляется при каждом вызове метода.

Вызов серверного кода

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

Назначение флагов модулей

  • Флаг показывает, где будет скомпилирован код модуля (на сервере, на клиенте, во внешнем соединении)
  • Если модуль скомпилирован в нескольких местах, то он будет виден только в соответствии с флагами
  • Перенос исполнения кода возможен только если в текущем контексте исполнения нет вызываемого модуля, но он есть в другом месте (если – модуль есть только на сервере, а на клиенте его нет, то будет сделан вызов сервера)

Флаг «Вызов сервера»

Начиная с платформы "1С:Предприятие 8.2" добавился флаг «вызов сервера». Который как раз и помогает "разрулить" условия перехода на другую машину. Если модулю назначить этот флаг, то модуль будет виден с клиента, если нет – то попытка вызова с клиента приведет к ошибке. Код модуля виден не будет, как будто его нет совсем.

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

  • Установлен флажок «Сервер»
  • Установлен флажок «Вызов сервера»
  • Сняты все «клиентские» флажки

В этой статье мы познакомимся с основными аспектам работы с управляемой формой в 1С 8.3. Что такое форма и для чего она нужна? Форма это основной объект, посредством которого осуществляется взаимодействие пользователя с программой. То есть с помощью формы пользователь осуществляет ввод информации в программу, а так же на форму выводиться нужная для пользователя информация.

Основная задача разработчика любой формы (управляемой или обычной) это предоставить пользователю удобный механизм взаимодействия с программой.

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

Подробно вопросы работы с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов» . Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.

Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С

  1. Без сложных технических терминов;
  2. Более 600 страниц практического материала;
  3. Каждый пример сопровождается рисунком (скриншот);

Промо-код на скидку в 15% — 48PVXHeYu

Иногда кажется, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: и «Основы разработки в 1С: Такси»

Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»

  1. Без сложных технических терминов.
  2. Более 700 страниц практического материала.
  3. Каждое задание сопровождается рисунком (скриншот).
  4. Сборник задач для домашней проработки.
  5. Книга написана понятным и простым языком — для новичка.
  6. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы.