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

04.09.26

Разработка - Инструментарий разработчика

Подсистема позволяет изменять управляемые формы типовой конфигурации с помощью макета табличного документа или текстового документа в формате JSON, что позволяет упростить процесс обновления. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Расширение модификация управляемых форм: версия 1.0.5.4
.cfe 40,61Kb ver:1.0.5.4
2 2 500 руб. Купить
Модификация управляемых форм: версия 1.0.5.4
.cf 48,23Kb ver:1.0.5.4
6 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

1. Модификации управляемых форм

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

МодификацияУправляемыхФорм.ПрименитьМакетИзменений(Форма)

перед первым использованием добавленных объектов формы. Если в конфигурации предусмотрена процедура общего модуля, которая вызывается из всех форм (например ОбщийМодуль.МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере для конфигурации 1C:ERP) – следует добавить вызов в нее, чтобы не добавлять во все модифицируемые формы. Если для формы не предусмотрен вызов общей процедуры или вызов происходит слишком поздно - необходимо добавить следующий фрагмент в раздел инициализации модуля формы (после определения всех процедур и фунций):

#Если Сервер Тогда
МодификацияУправляемыхФорм.ПрименитьМакетИзменений(ЭтаФорма);
#КонецЕсли

Подсистема имеет защиту от повторного вызова, поэтому можно не беспокоиться о возможном вызове процедуры из общего обработчика

1.1. Формат описания изменений формы

Макет изменений может быть указан либо в виде макета табличного документа либо в виде макета тестового документа в формате JSON. При работе с Git рекомендуется использовать формат JSON, т.к. он позволяет выполнять 3-х стороннее объединение. Для упрощения редактирования макета изменений в формате JSON, а рекомендуется использовать расширение конфигурации, которое содержит форму для редактирования макета изменений в виде табличного документа. Пример можно посмотреть в макете: Документ.Приход.Макет.МОД_Модификация_ФормаДокумента

Макет изменений состоит из 3-х областей, любая из которых не является обязательной, порядок расположения также не важен. Рекомендуется для каждой области использовать свой формат строк.

  • Реквизиты – описывается добавление новых или корректировка существующих реквизитов формы. К добавленным реквизитам в модуле формы нужно обращаться с помощью ЭтаФорма.<имя реквизита>
    • Колонки
      • Имя – имя нового или существующего реквизита. Для имени может использоваться несколько подряд идущих колонок с таким именем, либо с объединенной шапкой. С помощью нескольких колонок имени можно добавлять колонки в коллекции данных формы.
      • ОписаниеТипов(ТипЗначения) – тип значения нового реквизита
      • <описание имени свойства> - свойство реквизита
    • Описание каждого реквизита выполняется в отдельной строке. В ячейках указывается <описание значения свойства>
  • Команды – описывается добавление новых или корректировка существующих команд формы
    • Колонки
      • Имя – имя новой или существующей команды
      • <описание имени свойства> - свойство команды
    • Описание каждой команды выполняется в отдельной строке. В ячейках указывается <описание значение свойства>
  • Элементы – описывается добавление новых или корректировка существующих команд формы
    • Колонки
      • Имя – имя нового или существующего элемента. Если Имя = Форма, колонки описывают изменения свойств формы.
        • Для новых элементов типа ПолеФормы вид поля формы зависит от типа реквизита, с которым связан элемент
          • Для реквизита с единственным типом «Булево»: Вид = ВидПоляФормы.ПолеФлажка
          • В остальных случаях Вид = ВидПоляФормы.ПолеВвода
        • Для новых элементов типа ГруппаФормы, которые расположены в других группах или на страницах по-умолчанию устанавливаются следующие значения свойств: Вид = ВидГруппыФормы.ОбычнаяГруппа, Отображение = ОтображениеОбычнойГруппы.Нет, ОтображатьЗаголовок = Ложь
      • Тип – имя типа элемента формы
      • ПутьКДанным – заполнение является обязательным для элементов типа «ПолеФормы». При необходимости вывода на форму полей ссылочного реквизита с вложенностью более 1 необходимо свойство «ПутьКДанным» указать в следующем формате <путь к реквизиту>/<путь к данным реквизита>
      • <описание имени свойства> - свойство элемента
    • Для новых элементов подчинение определяет родителя. Для существующих элементов подчинение выполняет проверку родителя, которого можно изменить с помощью операций Родитель() и МестоРасположения()
    • Описание каждого элемента выполняется в отдельной строке. В ячейках указывается <описание значения свойства>
  • В качестве имени можно указать применение шаблона соответствующего типа в виде <имя шаблона>(<значения параметров шаблона через запятую>). Сам шаблон хранится в области с именем <Тип области>_<Имя шаблона>
  • Доступны стандартные шаблоны
    • _ОтборКомпоновкиДанных_ - добавляет подчиненные элементы для отображения отбора компоновки данных в виде таблицы. Первым параметром передается имя элемента, вторым путь к данным. Если параметры не указаны, они будут выбираться из родителя

Допускаются следующие варианты <описание имени свойства>:

  • <имя свойства> - в качестве значения свойства используется строка из ячейки.
    • Для свойств Имя и ПутьКДанным элемента формы, если в ячейке есть символ %, то он заменяется на значение ячейки родителя без учета групп.
    • Для свойства Действие команды формы, если в ячейке есть символ %, то он заменяется на <имя команды>.
  • (<имя свойства>) – в качестве значения свойства устанавливается результат выражения из ячейки, выполняемого с помощью функции Вычислить()
  • <имя конструктора>(<имя свойства>) – для вычисления значения свойства используется специальный конструктор. Поддерживаются следующие конструкторы
    • ОписаниеТипов – в ячейке перечисляются типы через запятую, также как они передаются в конструктор объекта ОписаниеТипов. Для примитивных типов поддерживается указание квалификаторов
      • Число(<длина>, <точность>, <имя значения перечисления ДопустимаяДлина>)
      • Строка(<длина>, <имя значения перечисления ДопустимаяДлина >)
      • Дата(<имя значения перечисления ЧастиДаты>)
    • ОпределяемыйТип - в ячейке указывается имя определяемого типа, тип значения которого необходимо получить
    • Характеристика - в ячейке указывается имя плана видов характеристик, тип значения которого необходимо получить
    • СвязьПоТипу - в ячейке указывается путь к связываемому реквизиту и номер элемента. Символ % заменяется на путь родительского элемента
    • ТипМетаданных - я ячейке указываеться путь к объекту метаданных или реквизиту. Символ % заменяется на путь к имени формы
    • ПараметрыВыбора – в ячейке определяется список параметров выбора, разделенный запятыми <имя параметра выбора>(<значение параметра выбора>), где <значение параметра выбора> это вычисляемое выражение на языке 1С
      • Если <имя параметра выбора> = "*" добавляются параметры выбора, заданные в конфигураторе, и с помощью префиксов "+" и "-" можно добавить новые / удалить существующие
    • СвязиПараметровВыбора – в ячейке определяется список параметров выбора, разделенный запятыми <имя параметра выбора>(<путь к данным формы>).
      • Если <имя параметра выбора> = "*" добавляются связи параметров выбора, заданные в конфигураторе, и с помощью префиксов "+" и "-" можно добавить новые / удалить существующие
    • ОбработатьТекст - в ячейке указывается имя шаблона преобразования текущего значения свойства. Шаблон находится в области макета изменений с именем ОТ_<имя шаблона>, при этом если в имени шаблона есть точка (.), она заменяется на подчеркивание (_). Если в ячейке указано %, то имя шаблона формируется как ИмяСвойства + ИмяШаблона. Если с ячейке есть %, то % заменяется на ИмяСвойства. Первая строка шаблона отводится под заголовок и состоит из следующих колонок:
      • Маркер - строка поиска. Если в строке поиска указаны символы ## - строка шаблона используется для вставки, при этом ## определяет место вставки. В противном случае строка шаблона используется для замены
      • Текст - строка замены. В режиме вставки заменит символы ##, в режиме замены заменит Маркер
      • Счетчик - для режима замены определяет сколько значений необходимо искать. Если не заполнено выполняется поиск одного значения.
      • Условие() - в ячейке указывается выражение на языке 1С:Предприятие, при выполнении котором будет учитываться текущая строка изменений
  • <имя операции>() – необходимо выполнить операцию над объектом формы. Поддерживаются следующие операции:
    • Условие - в ячейке указывается выражение на языке 1С:Предприятие, при выполнении котором будет применяться текущая строка изменений и подчиненные строки
    • МестоРасположения – в ячейке задается имя элемента формы, перед которым необходимо разместить текущий элемент. Родитель указанного элемента должен находится в одной из подгрупп родителя текущего элемента
    • Родитель – в ячейке задается имя элемента, которые необходимо установить в качестве родителя для текущего элемента. Новый родитель должен находится в одной из подгрупп родителя текущего элемента. Игнорируется если для текущего элемента указана операция МестоРасположения
    • Вместо - в ячейке задается имя элемента формы, вместо которого необходимо добавить новый. Чаще всего это требуется из-за невозможности изменить некоторые свойства элемента формы после создания. Новый элемент будет добавлен перед заменяемым, его свойства буду заполнены свойствами заменяемого элемента, а подчиненные элементы перенесены
    • Скрыта - в ячейке указывается состояние свернутости группы формы
    • СписокВыбора - в ячейке через запятую указывается имена предопределенных элементов или значений перечисления <имя значения>
      • Если <имя значения> = "*" добавляются значения, заданные в конфигураторе, и с помощью префиксов "+" и "-" можно добавить новые / удалить существующие
    • Для операций МестоРасположения и Вместо для элемента формы, если в ячейке есть символ %, то он заменяется на значение ячейки родителя без учета групп.
  • <имя перечисления>(<имя свойства>) – строка из ячейки используется как имя значения системного перечисления <имя перечисления>
  • [<имя действия>] – в ячейке указывается имя процедуры, которая устанавливается для действия <имя действия>.
    • Если в ячейке установлено значение %, оно заменяется на <имя элемента><имядействия>.
    • Если в ячейке есть значение % оно заменяется на <имя действия> Если <имя свойства> начинается с точки (.), то описывается изменение свойств значения реквизита формы. Например для динамического списка можно менять свойства объекта ДинамическийСписок

1.2. Ручное применение изменений формы

При необходимости ручного применения изменений формы, необходимо выполнить вызов

МодификацияУправляемыхФорм.ИзменитьФорму(Форма, МакетИзменений, ИмяШаблона, ...)

В качестве МакетаИзменений рекомендуется указывать полный путь к общему макету или макету объекта метаданных. В этом случае он будет доступен для редактирования с помощью расширения. Для применения стандартного шаблона параметр МакетИзменений не указывается

Макет изменений текущей формы можно получить с помощью функции

МодификацияУправляемыхФорм.ПолучитьМакетИзменений(Форма)

В макете изменений можно использовать параметры %1...%5, значения которых передаются при ручном применении изменений формы

1.3. Существующие ограничения

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

1.4. Использование расширения

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

Командная панель:

Выбрать форму/макет - загрузить изменения формы или макет, которые открывались в текущем сеансе. Выделенным шрифтом выделяются модифицированные

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

Удалить изменения - удалить изменения макета текущей формы, после чего будет использоваться макет указанный в конфигураторе

Получить JSON - получить макет изменений в формате JSON

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

2026-01-05_17-39-05 - добавление новой области

2026-01-05_17-39-37 - удаление выбранной области

2026-01-03_19-33-10 - отображение для текущей строки только колонок с заполненным свойством

Контекстное меню:

Выбрать значение ячейки (F4) - отображение списка для выбора значения системного перечисления

Добавить колонку справа - увеличение области с именем на одну колонку

Удалить колонку справа - уменьшение области с именем на одну колонку

1.5. Рекомендации по редактированию макета изменений

  • Существующие и новые элементы должны следовать в том же порядке, в котором они следуют в форме

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

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

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

и необходимо добавить Элемент1 в ГруппаЛево, то на первом первом уровне будет ГруппаЛево. Но если после этого необходимо добавить Элемент2 в ГруппаШапка и для этого на верхнем уровне будет ГруппаШапка, то Элемент1 должен быть определен внутри ГруппаЛевоПраво/ГруппаЛево, т.к. ГруппаЛево и ГруппаШапка находятся на разных уровнях

2. Ограничение изменения реквизитов управляемой формы

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

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

#Если Сервер Тогда
МодификацияУправляемыхФорм.ИнициализироватьОграничениеИзмененияРеквизитов(ЭтаФорма);
#КонецЕсли

Ограничение выполняется с помощью вызова на клиенте:

МодификацияУправляемыхФорм.ОграничитьИзменениеРеквизитов(ЭтаФорма, <описание ограничений>)

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

МодификацияУправляемыхФорм.ОграничитьИзменениеРеквизитов(ЭтаФорма, "Утвержден")

По-умолчанию кнопки формы связанные с командами, у которых не установлен признак "ИзменяетСохраняемыеДанные" ограничиваться не будут, для их ограничения необходимо явно указать запрет, либо на кнопку, либо на все командную панель, например:

МодификацияУправляемыхФорм.ОграничитьИзменениеРеквизитов(ЭтаФорма, "-ФормаКоманднаяПанель.*")

Для предоставления доступа ко всем элементам таблицы "Товары", сроме колонки "Цена" цена необходимо выполнить

МодификацияУправляемыхФорм.ОграничитьИзменениеРеквизитов(ЭтаФорма, "Товары.*,-ТоварыЦена")

Для предоставления доступа только к таблице "Проверка" необходимо выполнить

МодификацияУправляемыхФорм.ОграничитьИзменениеРеквизитов(ЭтаФорма, "*,-Проверка")

В общем случае каждый элемент описания ограничений имеет следующий формат (<префикс>)<имя элемента>(.*) где <префикс> - если не указан или "+" - предоставить доступ, если "-" - ограничить доступ .* означает, что описание ограничения влияет в том числе на подчиненные элементы, при этом * означает все элементы Ограничение, установленное на более высоком уровне дерева элементов, имеет приоритет ниже, чем у ограничения, установленных на более низком уровне уровне.

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

МодификацияУправляемыхФорм.ВосстановитьОграничениеИзмененияРеквизитов(ЭтаФорма)

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

МодификацияУправляемыхФорм.ОтменитьОграничениеИзмененияРеквизитов(ЭтаФорма)

 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    79409    404    171    

341

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    277706    1561    423    

1204

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Программист Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    1940    18    0    

11

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    42366    116    54    

131

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    12781    48    62    

59

Инструментарий разработчика Нейросети Платные (руб)

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

15250 руб.

25.08.2025    70515    140    41    

148

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

31720 руб.

27.03.2025    90613    67    44    

77

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    27772    101    46    

107
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. adapter 463 16.10.19 11:49 Сейчас в теме
Привет. Интересное решение! плюсую. А содержимое макета изменений нужно вручную писать? На ИС есть много наработок по декомпиляции и сравнение форм. Вот бы объединить. Чтобы было примерно так

- копируешь форму, добавляешь спец. префикс в имя формы
- модифицируешь копию, добавляешь элементы и т.д.
- обработка сравнивает обе формы и генерит макет изменений
- при открытии происходит программная модификация по макету изменений
2. vadim1980 131 16.10.19 13:59 Сейчас в теме
Да, макет изменений создается вручную. В большей степени как замена модификации формы кодом
Ваше предложение интересное, но есть вариант реализации лучше - в расширении делать измененную форму, выгружать расширение в файлы, результат выгрузки парсить и на основании текущей версии макета изменений формировать новую версию.
3. kalyaka 1183 10.12.19 09:49 Сейчас в теме
(2) еще можно рассмотреть вариант разработки в EDT, тогда форма сразу хранится в XML и доступна для парсинга!
4. almas 264 07.01.25 11:08 Сейчас в теме
Задумка неплохая. особенно с json, но для работы пока не применима.
Видел и использую более удобный, и понятный механизм с добавлением элементов на формы через макет.
Здесь большой плюс, что макет можно на лету менять, но минус нужно макет на пустом месте готовить и задавать области - совсем не весело.
В cf - только один пример, этого мало, чтоб понять как работает.
5. vadim1980 131 09.01.25 16:16 Сейчас в теме
(4) Добавить основные колонки и область не занимает времени больше, чем писать это кодом. Каких примеров вам не хватает?
Для отправки сообщения требуется регистрация/авторизация