1с программно сменить страницу формы

Программное добавление и изменение элементов управляемых форм

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

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

В управляемой форме можно программно добавить, изменить и удалить:

Все указанные операции возможны только на сервере.

Программное изменение формы имеет ограничения:

Изменение команд формы

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

Изменение реквизитов формы

Внимание!

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

Создадим новый реквизит формы с именем Покупатель:

// Изменения состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );

Изменение элементов формы

Рассмотрим несколько наиболее распространенных на практике примеров работы с командами, реквизитами и элементами формы.

Добавление команды и связанной с ней кнопки:

Добавление реквизита и связанного с ним поля ввода:

Назначение элементу формы обработчика события:

&НаКлиенте
Процедура Подключаемый_ПокупательПриИзменении ( Элемент )
// Действия события
КонецПроцедуры

Внимание!

Внимание!

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

Остались вопросы?
Спросите в комментариях к статье.

2 комментария

Ваш текст:
В параметры ДобавляемыеРеквизиты и УдаляемыеРеквизиты передаются массивы с элементами типа РеквизитФормы.
Верный текст:
(необязательный)
Тип: Массив.
Массив, содержащий СТРОКИ, описывающие ПУТИ к удаляемым реквизитам.

Источник

Программная модификация управляемых форм

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

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

Добавление реквизитов

Для добавления реквизитов используется метод объекта ФормаКлиентскогоПриложения

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

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

Данную процедуру можно заимствовать в расширение, добавить проверку имени формы и вставить код изменения реквизитов:

Для остальных конфигураций придется переопределять другие процедуры. Например

Использование той или иной процедуры следует проверить в модуле редактируемой формы.

Изменение элементов формы

Для добавления нового элемента формы требуется передать в функцию Добавить данной коллекции имя элемента, его тип и родителя (при необходимости). Например:

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

Обработка событий формы

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

Для самых простых случаев (команда или событие без параметров) можно использовать следующие комбинации обработчиков и переопределяемых процедур:

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

Либо вариант с использованием команд:

Полезные советы

Работа с динамическими списками

Переопределение открываемой формы

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

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

Источник

Программное изменение управляемых форм

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

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

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

«ДобавляемыеРеквизиты» и «УдаляемыеРеквизиты» – это массивы с элементами типа «РеквизитФормы». Тут все просто – «Добавляемые» добавляются, «Удаляемые» – удаляются.

Функция РеквизитФормы («ИмяРеквизита», «ТипРеквизита», «Путь», «Заголовок») создает объект типа «РеквизитФормы».

Тут важно понимать, что «ИмяРеквизита» содержит имя без точек. То есть имя без пути реквизита. Если нужно добавить реквизит, например, табличной части объекта, то уже в реквизите «Путь» указать путь к ТЧ реквизита – «Объект.Товары». «ТипРеквизита» задается через объект «ОписаниеТипов». После программного добавления реквизитов на форму нужно добавить элементы на форму или изменить свойства текущих. Для добавления новых элементов на форму есть два метода:

-Элементы.Добавить(«ИмяЭлемента», «ТипЭлемента», «Родитель»).

-Элементы.Вставить(«ИмяЭлемента», «ТипЭлемента», «Родитель», «Элемент»).

«ИмяЭлемента» должно быть уникальным в рамках элементов формы. Лучше добавить какой-то префикс, чтобы не возникло пересечений с типовыми элементами формы.

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

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

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

Получилась вот такая процедура программного заполнения управляемой формы:

Код для копирования:

Специальные предложения

f71a8c4e70c0ff03708038e2b0210df8

9c2808762ec294cd4c55532520b9c521

895fb1e0f7afc3c0ed0d73bf5ee9d9d0

egais promo

b34b292ed32e9501f98cc31df406353e

789363929b9f37ddc5641a069a5fe52e

5b19cd6c4494a88b2abefce64a1b7565

199e2be4fd21dd8f4209d8ec34616c76

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

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

Только из-за того, что расширение нельзя сравнивать с конфигурацией, у нас программное изменение формы.

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

Я об этом читал, но когда сравнивал работу «до» и «после», разница была в 0.3 сек на самой дикоизмененной форме. (остальные с трудом набирают 0.01) Счел затраты оправданными. (Это форма сделки, она итак долго открывается, потому что при открытии проверяет бизнес-процесс на основании себя)

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

Сейчас это просто 2 общих модуля, которые вызываются из СобытияФорм и СобытияФормКлиент.
Как настанет свободный промежуток, хочу сделать справочник, в котором будут храниться изменения форм (так же с отображением дерева объектов формы, но без сравнений с типовой). Общиймодуль с кэшированием, чтобы вся информация каждый раз не собиралась (Сначала собирается массив всего что нужно сделать с формой, а потом разом все это меняется). Это даст возможность из предприятия добавлять/изменять формы без нужды выгнать всех пользователей (Возможность применить изменения только по субботам 1 час, динамическое обновление не используем потому-что ужасы творит иногда)
И в планах сделать аналог патча. Добавить код, чтобы можно было вызывать определенные процедуры из внешней обработки, в случае косяка в процедуре команды или где-то еще.

Источник

В данной статье описаны примеры программного создания объектов управляемой формы 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

Источник

Программное добавление страницы на управляемую форму 8.2

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

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

Специальные предложения

f71a8c4e70c0ff03708038e2b0210df8

9c2808762ec294cd4c55532520b9c521

895fb1e0f7afc3c0ed0d73bf5ee9d9d0

egais promo

b34b292ed32e9501f98cc31df406353e

789363929b9f37ddc5641a069a5fe52e

5b19cd6c4494a88b2abefce64a1b7565

199e2be4fd21dd8f4209d8ec34616c76

Обновление 25.04.14 20:23

Код открыт Не указано

9b439b969c0a94d73548b65125d67449

См. также

Недокументированное использование стандартных обработок из меню «Все функции». Промо

19.06.2015 120234 ekaruk 137

[ПОТРАЧЕНО] Динамическая таблица формы

История одной разработки в далеком 2020 году.

15.10.2021 3048 rpgshnik 42

Программно свернуть/развернуть узел динамического списка (с основной таблицей). Жирная точка над всеми «i».

08.10.2021 1388 e-9 13

Прогресс-бар в поле динамического списка

Изображаем прогресс-бары в колонке динамического списка

23.08.2021 2649 Yashazz 12

Идея или как сохранить ЦВЕТ, ШРИФТ, ОФОРМЛЕНИЕ пользователя Промо

Простой и оригинальный способ сохранять ЦВЕТОВУЮ СХЕМУ и ОФОРМЛЕНИЕ пользователей. Как сохранить ЦВЕТ

22.06.2015 24920 Tatitutu 12

Перенос расшифровки в пользовательские настройки

Как перенести данные расшифровки в пользовательские настройки.

11.08.2021 676 scientes 1

1С и ODBC

ODBC (Open Database Connectivity) — это программный интерфейс, универсальное средство доступа к базам данных, разработанное для обмена между источниками (базами данных) разного типа. Данный интерфейс принято считать более низкоуровневым, чем библиотека ADOdb, однако причина эта кроется не в более низком качестве, но в том, что ODBC послужила своего рода фундаментом более поздней ADOdb – работу с последней поддерживают все типы баз, работающие и с первой. В данной статье мы расскажем о том, как взаимодействуют ODBC и 1С, а точнее, поговорим о механизме 1С ВнешнийИсточникДанных и его использовании с вышеупомянутым интерфейсом.

02.06.2021 1242 Koder_Line 5

Предотвращение многократного вызова «ПриПолученииДанных» во время поиска в табличном поле в обычных формах

Долго искал решение: как при выводе строк заполнить значениями колонки, которые созданы программно, чтобы, не было тормозов при стандартном поиске. И с минимальными изменениями (легко контролируемыми, при обновлении).

07.04.2021 2010 Vlad_CK 9

Хранение и редактирование дополнительных параметров в регламентированном отчете. Для начинающих. Промо

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

22.01.2014 21044 KapasMordorov 4

Динамический список и поиск. неприятностей

Страх и ненависть в поиске по динамическому списку, или «Кое-что о неоптимальном отборе».

17.03.2021 4291 Yashazz 37

11.12.2020 1044 SizovE 6

Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)

30.11.2020 6141 SizovE 4

Программное генерирование кнопочек для удобного управления уровнями группировки в отчетах (версия 2a). Промо

09.04.2011 47280 mtv:) 75

[mobile] Переносим HTML интерфейс на 1С

Разберем методы переноса HTML интерфейса на 1С на примере реализации нижнего меню для мобильного приложения. Сравним методы между собой. Данные методы можно применять не только для мобильной разработки, но и для веб-клиента и т.д

02.11.2020 8637 leobrn 78

Цветовая схема конфигуратора в стиле OneScript

Цветовая схема конфигуратора 1С максимально приближенная к стандартной цветовой схеме OneScript в VS Code.

01.10.2020 1361 DmitrySinichnikov 3

Рендеринг элементов управляемого интерфейса

Реализация отображения всего состояния формы проще, чем работа по изменениям. Однако использование идеи разделения алгоритмов на программные слои MVC и построения реактивных систем позволяет получить не только простые и масштабируемые решения, но и производительные интерфейсы. Рассмотрим примеры таких реализаций на основе использования фреймворка «Управление состоянием»: Информационная надпись, Заголовок формы, Свертываемая группа, Отключаемые панели.

22.09.2020 3878 kalyaka 5

Хитрости компоновки данных: программное формирование заголовков отчета и колонок без использования макетов. Промо

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

27.07.2012 32768 milkers 10

Переопределение представления ссылочного значения

Переопределение представления ссылочного значения

17.09.2020 4831 sam441 15

[Общий модуль] Динамическое формирование интерфейса

Версия 2.0.0.1 + добавил GitHub

28.08.2020 12649 rpgshnik 72

Медленно формируются отчеты в БП 3, способ исправления

При формировании любых отчетов, но в особенности оборотно-сальдовой ведомости в бухгалтерии 3, очень долго формировался отчет, ПОЯВЛЯЛСЯ ЖЕЛТЫЙ КОТ, разумеется у бухгалтера невроз, да и у меня тоже. Что только ни делал: тестирование и исправление с пересчетом итогов, настройка SQL, отключение фоновых заданий, обновление платформы и конфигурации, а толку нет, регламентные операции по скулю тоже сделал. И что же сделал, а вот что:

21.07.2020 2991 VID1234 8

Рабочее место кассира для touch-screen и программируемой клавиатуры продавца в «1С: Розница» Промо

Вашему вниманию предлагается текст одного из технических проектов «1С: Розница 8», он описывает процесс разработки интерфейса РМК, с которым, нынче, работают кассиры очень многих магазинов.

29.11.2012 48266 aavolkoff 50

Регистр сведений как дополнение объекта

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

19.05.2020 4942 Infector 14

Перенос инструкций из word во встроенную справку 1С с сохранением картинок и форматирования

Делюсь простым и удобным способом переноса справки/инструкций из ворда (и не только) во встроенную справку 1С с сохранением картинок и форматирования.

22.04.2020 5514 77dream77 21

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

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

24.03.2020 2126 Evilgrym 2

Бухгалтерия предприятия 3.0 интерфейс, аналогичный 1С:Бухгалтерии 7.7; Промо

Бухгалтерия предприятия, редакция 3.0, версия 3.0.14. Добавлена возможность использовать интерфейс, аналогичный 1С:Бухгалтерии 7.7;

20.09.2012 37932 dour-dead 18

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

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

11.03.2020 5856 rule_2 3

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

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

18.02.2020 6461 randomus 20

[Шпаргалка] Предустановка типа для составного реквизита

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

18.02.2020 5365 rpgshnik 6

Выбор вариантов отчета в «Управление торговлей» ред. 11 Промо

В УТ 11 в свойствах конфигурации задано хранилище вариантов отчетов. Исходя из этого, все отчеты будут использовать для своих вариантов именно это хранилище (если, конечно, в свойствах самого отчета не задано другое хранилище). По сути, все варианты для отчетов находятся в справочнике «Варианты отчетов», который заполняется при первом запуске системы. Вполне очевидно, что если Вы создаете свой отчет (внешний или внутренний) с несколькими вариантами, у Вас не будет возможности выбирать нужный вариант (переключаться между вариантами), т.к. в выше указанном справочнике нет никакой информации о вариантах созданного Вами отчета. В этой небольшой статье я покажу один из способов решения данной проблемы.

27.05.2012 48612 1cUserAndrew 25

СКД. Шаг 3. Используем макеты для оформления отчета

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

Источник

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