1с скопировать элемент формы программно

Копирование элементов управляемых форм

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

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

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

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

Мое решение вероятно покрывает не все возможные кейсы использования.
Что-то не копируется (например кнопки стандартных команд, если их принудительно вытащить на форму).
Какие-то элементы я копировать не пробовал.
Какие-то свойства элементов мог не докопировать (но это правится элементарно).

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

Замечания к использованию:

Если заголовок элемента-поля расположен сверху, то для всех подобных элементов, кроме первого, заголовок будет скрыт. Для отмены это поведения установить параметр ПервыйВГруппе = Ложь.

Имена копируемых элементов, соответствующих реквизитов и команд должны заканчиваться на «_», иначе:

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

Тестировалось на 1С:Предприятие 8.3 (8.3.14.1694).

Источник

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

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

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

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

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

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

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

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

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

Внимание!

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

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

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

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

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

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

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

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

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

Внимание!

Внимание!

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

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

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

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

Источник

УФ: программное создание и копирование документов с использованием конструкций ДанныеФормыВЗначение, ЗначениеВДанныеФормы

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

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

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

ПРИМЕРЫ:

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

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

3b8912e7799c6cfafd95bce7d7074af7

Для этого я создал соответствующие команды и разместил их на форме.

1. «Создать калькуляцию».

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

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

Источник

Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download

Все для 1C

Технологии Будущего

9309b0c0749f

de525137e3ad

6a1506cbd5d99fc71939873fb5189b17 close

Копирование элементов управляемых форм

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

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

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

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

Мое решение вероятно покрывает не все возможные кейсы использования.
Что-то не копируется (например кнопки стандартных команд, если их принудительно вытащить на форму).
Какие-то элементы я копировать не пробовал.
Какие-то свойства элементов мог не докопировать (но это правится элементарно).

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

Замечания к использованию:

Если заголовок элемента-поля расположен сверху, то для всех подобных элементов, кроме первого, заголовок будет скрыт. Для отмены это поведения установить параметр ПервыйВГруппе = Ложь.

Имена копируемых элементов, соответствующих реквизитов и команд должны заканчиваться на «_», иначе:

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

Тестировалось на 1С:Предприятие 8.3 (8.3.14.1694).

Источник

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