1с новый объект управляемые формы

1С 8.3 : Последовательность событий при открытии формы нового элемента

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

62a33ba8847ffefb56dded0ab59029d7

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

f60c2cedc003aa9b513d4c09bb9d279b

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

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

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

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

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

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

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

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

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

Если объект новый, в этом параметре будет пустая ссылка. Если это существующий объект – в этом параметре будет ссылка на этот объект:

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

Для тех кто не хочет читать все что выше, код проверки на ЭтоНовый в Управляемом приложении:

Источник

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

Введение в управляемая форма 1С реквизиты элементы команды

Рекомендуется модифицировать управляемые формы типового решения 1С программно для удобного будущего обновления и исключения конфликтов, а также для удобной работы с изменениями и надежности при использовании механизма расширений.
В некоторых типовых конфигурациях 1С (ЕРП 2, УТ 11) используется механизм упрощенного изменения конфигурации. Статьи о типовом механизме можно найти в разделе полезных ссылок. Данный механизм используется в БСП, и его необходимо знать при модификации типовых конфигураций.
При добавлении элементов на форму программно можно отредактировать практически любое свойство из панель свойств, которое можно установить вручную в конфигураторе.
Также все описанные в текущем разделе процедуры и функции находятся во внешней обработке УпрФормы.

Примеры работы с объектом «ДанныеФормыКоллекция» и созданием дин. списка и таблицы значений программно можно будет посмотреть в части 2.

Для запуска обработки в режиме предприятия необходимо наличие объектов «Справочники.Номенклатура», подчиненный ему «Справочники.ХарактеристикиНоменклатуры» и «РегистрыСведений.ЦеныНоменклатуры”.

Программное переопределение обработчиков событий формы и элементов формы

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

В теле модуля формы:

А в новой процедуре нужно добавить вызов основной, если такая процедура есть.

Аналогично можно поступить и с обработчиками элементов формы:

Программное создание групп формы.

Доступные виды групп формы:

ss2019 12 27at04.46.44

Программное добавление команды на форму.

Удалить команду можно при помощи метода коллекции формы команд: Команды.Удалить( ). Удалять можно только те команды, которые были созданы программно.

Программное создание декораций форм.

Программное добавление реквизита на форму.

Добавлять новые реквизиты в управляемую форму и удалять необходимо с помощью метода ИзменитьРеквизиты(), куда в параметры передается массив добавляемых реквизитов и массив удаляемых. Удалять при этом можно только те реквизиты, которые были созданы программно.

Вывод реквизитов на форму.

Вызов процедур при создании на сервере 1С

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

Некоторые советы при программном редактировании формы

Итак, взглянем на получившийся результат. Все элементы на форме созданы программно:
%D1%80%D0%B5%D0%BA%D0%B2%D0%B8%D0%B7%D0%B8%D1%82%D1%8B %D1%84%D0%BE%D1%80%D0%BC%D1%8B

Источник

РеКС — друг в мире компьютеров

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

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

Клиент-серверная архитектура

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

Диалоговые окна и Управляемые формы

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

И говоря о сообщениях, можно вскользь упомянуть функцию НСтр(), которая несколько упрощает задачу локализации сообщений:

Простые конструкции

Проверка значений реквизитов формы

Проверка отсутствия значения в реквизите в модуле формы

Перечисления

Перечисления полноценно доступны только &НаСервере в коллекции объектов метаданных Перечисления, которое недоступно &НаКлиенте и в запросе непосредственно, а только через

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

Формы

В конфигураторе набор отображаемых свойств формы существенно зависит от реквизита с установленным свойством Основной реквизит.

Передача данных управляемой формы между Сервером и Клиентом

p2094 cdОграничения при передаче данных в управляемую форму

Оптимизация ресурсоемкости передачи данных между Сервером и Клиентом

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

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

При оптимизации серверного вызова для выполнения процедур &НаСервереБезКонтекста используется другая пара процедур:

Важно учесть, что выполнять возврат из серверного вызова допустимо не для любого реквизита формы, для Диаграммы это допустимо, а для ТаблицыЗначений, ДереваЗначений нет и приведет к ошибке « Нельзя изменять поле, содержащее объект данных формы «. В таких случаях для серверного вызова в параметре придется использовать копию реквизита, а после вызова для обновления реквизита придется воспользоваться функцией КопироватьДанныеФормы().

Динамический список

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

p2248 hlРежим отображения иерархии в динамическом списке

Пример кода открытия формы с установкой необходимого режима отображения списка:

Это замечание имеет значение не только для управляемых форм. Любая форма с динамическим списком Подчиненного справочника без отбора элементов по владельцу отображает его в режиме Список, независимо от установленного программно или в конфигураторе режима отображения (иерархия групп отображаться корректно не будет)!

Программное управление порядком сортировки динамического списка

Код установки сортировки по ДатаРеализации и Клиент:

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

p2248 dlsОтбор данных в динамическом списке

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

Отбор в основной таблице

Для отбора следует добавить элемент отбора в коллекцию .Отбор.Элементы, как показано на примере:

Отбор в произвольном запросе

Таблица значений

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

Важно! Строковое значение используется для поиска по подстроке

Дерево значений

Для отображения в управляемой форме иерархической структуры в форме должен быть создан реквизит типа ДеревоЗначений, который может отображаться на форме элементами типа Таблица. В списке реквизитов формы реквизит отображается типом (ДеревоЗначений) в скобках, потому что он проявляет амбивалентность. Реквизит дерева создается и обладает типом ДеревоЗначений на Сервере, но на Клиенте он имеет тип ДанныеФормыДерево, эти два типа отличаться по составу свойств, методов и типов хранимых данных.

При вызове методов формы &НаСервере xdto-преобразование реквизита от типа к типу выполняется прозрачно, но при передаче в возвращаемых параметра серверных вызовов необходимо применять преобразование функциями ЗначениеВРеквизитФормы(), ЗначениеВДанныеФормы(), РеквизитФормыВЗначение(), ДанныеФормыВЗначение().

Типы, свойства и методы для работы с ДеревоЗначений &НаКлиенте и &НаСервере

&НаКлиенте &НаСервере
Тип Дерева ДанныеФормыДерево ДеревоЗначений
колонки .Колонки
корневые строки .ПолучитьЭлементы() .Строки
методы Скопировать()
Тип коллекции строк ДанныеФормыКоллекцияЭлементовДерева КоллекцияСтрокДереваЗначений
Ссылка на владельца коллекции . .Родитель
Изменение состава . .Добавить(), Вставить(), Сдвинуть(), Удалить(), Очистить()
Управление порядком . .Сортировать()
Анализ содержания . .Итог(), Количество()
. .ВыгрузитьКолонку(), ЗагрузитьКолонку()
. .
. .
. .
Тип строки ДанныеФормыЭлементДерева СтрокаДереваЗначений
Коллекция строк верхнего уровня . .Родитель
Коллекция строк нижнего уровня . .Строки
. .Владелец()
Свойства строки .ПолучитьИдентификатор()* .Уровень()*
Тип коллекции колонок КоллекцияКолонокДереваЗначений
. .
. .
. .
. .
Тип колонки КолонкаДереваЗначений
. .
. .
. .
. .
Тип элемента формы
.
.
.
.

&НаСервере

Для работы с Деревом значений на Сервере применяется более функциональная иерархия типов работы со строками и колонками:

Табличный документ

Диаграмма

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

Блокировка данных

Открытие форм

Форма нового объекта с заполнением

Новый объект (справочника, документа) может быть создан в форме до того, как он будет записан в ИБ (а возможно, не будет записан вовсе). При этом форме можно передать данные для начального заполнения. Общие свойства создаваемого объекта задаются структурой ПараметрыФормы, с предопределенным набором свойств, среди которых есть свойство ЗначенияЗаполнения типа структура, задающая значения для заполнения реквизитов объекта (ключи свойств должны соответствовать именам реквизитов заполняемого объекта):

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

Источник

Формы

formy1

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

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

formy1

Наряду с этим, могут существовать общие формы, не принадлежащие конкретным объектам конфигурации — общие формы.

formy2

Основные формы

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

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

formy3

А у документа Поступление товаров и услуг состав основных форм будет уже другим:

formy4

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

Автогенерируемые формы

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

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

Связь формы с данными

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

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

formy5

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

Структура формы

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

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

formy6

Элементы могут представлять собой поля ввода, флажки, переключатели, кнопки и т. д. Кроме того, элемент может быть группой, включающей другие элементы. Группа может представляться как панель с рамкой, панель со страницами (закладками), собственно страница, командная панель. Помимо этого элемент может представлять собой таблицу, которая тоже включает элементы (колонки). Структура элементов описывает то, как будет выглядеть форма.

formy7

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

formy8

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

formy9

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

formy10

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

formy11

Механика работы форм

formy12

formy13

Редактор форм

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

4455f

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

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с новые счета фактуры с 1 июля 2021 обновление
  • 1с новости бухучет налоги