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

Обновлено: 07.07.2024

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

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

Может лучше ПланВидовХарактеристик заюзать для этого.

тады , а вообще: Расширение элементов управления, расположенных в форме ТипЗначения (ValueType) Использование: Чтение и запись. Описание: Тип: ОписаниеТипов. Содержит объект, описывающий допустимые типы значений для элемента управления. Недоступно на сервере 1С:Предприятие. Не используется в модуле внешнего соединения. Примечание: Для элементов управления, не связанных с данными, свойство доступно для записи. Для элементов управления, связанных с данными, свойство доступно только для чтения. ЗАМЕЧАНИЕ. При установке поля ввода или табличного поля в качестве владельца формы, свойство становится недоступно.

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

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

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

еще один совет: не правь типовую форму, а скопируй ее, сделай в копии, что хочешь, а потом подключи вместо типовой. типовую оставь, как есть. тогда проще будет обновляться.

Спс. Знаю это, поэтому и пробовал сначала сделать программно. Тогда проблем бывают редко. Форма "МониторНастроекОбмена". какой-то чудак указал только несколько планов обмена в качестве доступных для отображения в форме. А у нас свои добавлены ПО. Так что в этом случае думаю можно.

Добрый день.
Конфигурация Зарплата и управление персоналом 3.1.1.74.
Платформа 8.3.8.2167.

На форме элемента справочника "Сотрудники" есть реквизит, отображающий текущий процент северной надбавки (скриншот 1). В типовой конфигурации у этого реквизита длина = 4, точность = 2 (скриншот 2). Это не удобно, так как если у сотрудника северная надбавка = 100%, на форме будет отображаться 99,99% (скриншот 1).
Я хотел программно в модуле формы в процедуре ПриСозданииНаСервере() поменять длину и точность этого поля и вывести в него значение 100%. На всякий случай еще раз получаю значение текущего процента северной надбавки, убеждаюсь, что он равен 100. Мой код:

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

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

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

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


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

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

Авто изменение размера полей, подчиненной формы в зависимости от длины текста
Здравствуйте. Можно ли сделать так, чтобы автоматически устанавливались размеры полей,полей со.

Программное изменение формы "поле со списком" в шаблоне на котором основан документ Word
Описание проблемы: Есть шаблон Word, назовем его Карта, на его основе создаются док-ты с полями.


Проверка длины реквизита
Только начал изучение 1С. Пытаюсь написать для реквизита процедуру проверки количества символов.

Поиск реквизита и его длины
Добрый день! 1с Отель. В конфигураторе все на английском. Необходимо изменить длину.

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

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

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

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

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

Переменная ДобавляемыеРеквизиты является массивом объектов типа РеквизитФормы .

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

Процедуру ИзменитьРеквизиты логично вызывать из обработчика ПриСозданииНаСервере , но т.к. мы не заимствуем форму в расширение, то следует найти другую точку входа. Для конфигураций УТ 11, КА 2 и ERP 2 существует типовой механизм упрощенного изменения конфигураций. Нас интересует модуль МодификацияКонфигурацииПереопределяемый , в состав которого входит процедура

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

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

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

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

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

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

По аналогии с добавлением реквизитов, данный код можно выполнять в функциях МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере (УТ, КА, ERP) , ПодключаемыеКоманды.ПриСозданииНаСервере или ВерсионированиеОбъектов.ПриСозданииНаСервере .

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

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

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

  • Создать команду, указать для этой команды имя обработчика события и назначить эту команду элементу формы
  • Выполнить метод УстановитьДействие элемента формы, чтобы указать имя обработчика события в модуле формы

Оба метода предполагают наличие в модуле формы процедуры с сигнатурой, соответствующей обработчику события. Для первого способа в модуле формы должна быть клиентская процедура, принимающая единственный аргумент - Команда. Для второго - всё зависит от события, для которого выполняется обработчик. Так, например, для события ПриИзменении элемента формы с типом ПолеВвода будет требоваться процедура, принимающая единственный аргумент - ЭлементФормы . А для события ПередНачаломДобавления таблицы формы - целых 6 аргументов ( ЭлементФормы , Отказ , Копирование , Родитель , ЭтоГруппа , Параметр ). Поэтому для некоторых событий попросту невозможно подобрать соответствующие клиентские методы в модуле формы и заимствования формы в расширение не избежать.

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

  • обработчик Подключаемый_ВыполнитьПереопределяемуюКоманду с переопределением процедуры МодификацияКонфигурацииКлиентПереопределяемый.ВыполнитьПереопределяемуюКоманду для УТ, КА и ERP;
  • обработчик Подключаемый_ВыполнитьКоманду с переопределением процедуры ПодключаемыеКомандыКлиент.ВыполнитьКоманду

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

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

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

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

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

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

Для небольших изменений гораздо лучше воспользоваться объектом СхемаЗапроса , появившемся в версии платформы 8.3.5. Он позволит всегда иметь актуальный текст запроса, если он поменяется при обновлении конфигурации.

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

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

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

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

Читайте также: