Как подменить форму документа 1с

Обновлено: 06.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


В статье рассмотрим вопрос каким образом можно осуществить настройку и изменение формы документа в 1С: Бухгалтерия 3. Материал также будет актуален и для других конфигураций, к примеру, таких как Зарплата и Управление Персоналом, Управление Торговлей, Управление Нашей Фирмой и др.

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

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

Как сделать изменение формы документа в 1С?

Далее в карточке пользователя нажимаем на кнопку “Права доступа”.

Как сделать изменение формы документа в 1С?

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

Как сделать изменение формы документа в 1С?

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

Как сделать изменение формы документа в 1С?

Откроем первый профиль “Бухгалтер”, который включен пользователю. В списке доступных ролей данного профиля есть роль “Сохранение данных пользователя”, которая отвечает за возможность сохранения внесенных изменений, в том числе измененной формы документов. Эта роль имеется и у второго профиля доступного пользователю.

Как сделать изменение формы документа в 1С?

Далее рассмотрим изменения формы документа на примере поступления. Переходим в раздел “Покупки” и выбираем документ “Поступление (акты, накладные)”. Откроем существующий документ и нажмем кнопку “Еще”. Далее в открывшемся списке выберем действие “Изменить форму”.

Как сделать изменение формы документа в 1С?

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

Как сделать изменение формы документа в 1С?

После внесенных изменений внешний вид шапки документа примет следующий вид.

Как сделать изменение формы документа в 1С?

При необходимости можно вернуть стандартные настройки и документ примет первоначальный внешний вид. Для этого в настройках формы следует нажать на кнопку “Еще” и выбрать действие “Установить стандартные настройки”.

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