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




Всем тем, кто создавал элементы управляемых форм программно — посвящается…

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

  • вы хотите редактировать каждую строку отдельно, а не в таблице
  • у вас множество однотипных закладок

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

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

 

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

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

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

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

 

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

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

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

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

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

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

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *