Динамическое заполнение управляемой формы по макету (без использования расширений)

11.05.18

Разработка - Работа с интерфейсом

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

Скачать исходный код

Наименование Файл Версия Размер
Динамическое заполнение управляемой формы по макету (без использования расширений):
.dt 46,75Kb
1
.dt 46,75Kb 1 Скачать

Задача: вносить изменения в управляемые формы (особенно в типовых конфигурациях) с минимальными изменениями типовых объектов.

Проблема: Основные типовые конфигурации находятся в режиме совместимости 8.3.10 и ниже, что не позволяет полноценно использовать механизм расширений 1С. Поэтому обычно конфигурацию поставщика снимают с поддержки и изменяют типовые объекты (в частности управляемые формы). А потом получают проблемы при обновлении.

Решение: Вынести изменения реквизитов, команд и элементов в форму-макет. А в типовой форме добавить процедуры заполнения по макету.

Исходные данные: Клиент-серверный вариант установки 1С. Остальное не важно.

Переопределение типовых действий

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

В модуле типовой формы создаём процедуры по типу: <префикс>_<имя типовой процедуры>(<параметры>). Параметры те же, что и у типовых процедур, например так:

&НаСервере
Процедура демо_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

КонецПроцедуры

&НаКлиенте
Процедура демо_ПриОткрытии(Отказ)

КонецПроцедуры

&НаКлиенте
Процедура демо_НомерПоПлануПриИзменении(Элемент)

КонецПроцедуры

В конце модуля типовой формы делаем вызов процедуры общего модуля, например так:

#Если НаСервере Тогда
	демо_РаботаСФормамиСервер.УстановитьДействие(ЭтаФорма, "ПриСозданииНаСервере");
	демо_РаботаСФормамиСервер.УстановитьДействие(ЭтаФорма, "ПриОткрытии");
	демо_РаботаСФормамиСервер.УстановитьДействие(ЭтаФорма, "ПриИзменении", "НомерПоПлану");
#КонецЕсли

Синтаксис простой: УстановитьДействие(<Форма>, <ИмяСобытия>, <ИмяЭлемента>).
Важно выполнять на сервере, т.к. УправляемаяФорма между клиентом и сервером не сериализуется и не передается.

Данная процедура переопределяет переданное действие формы или элемента формы (процедура УстановитьДействие) или кнопки формы (свойство Действие), а также создаёт (если ранее не создан) в указанной форме служебный реквизит типа СписокЗначений. И добавляет в него соответствие старого действия и нового действия (чтобы впоследствии можно было вызвать старое действие). Старое действие вызывается вот так:

Выполнить(демо_РаботаСФормамиКлиентСервер.ПолучитьСтароеДействие(ЭтаФорма, "ПриСозданииНаСервере"));
Выполнить(демо_РаботаСФормамиКлиентСервер.ПолучитьСтароеДействие(ЭтаФорма, "ПриИзменении", "НомерПоПлану"));

Заполнение формы по  макету

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

  1. Создаем копию типовой формы и убираем из неё весь код модуля формы. Называем её <Префикс>_<Имя типовой формы> (хотя не обязательно, но для порядку). Это будет макет.
  2. Изменяем макет (добавляем реквизиты, команды, элементы, изменяем, перемещаем существующие элементы).
  3. Добавляем в макет код, выполняемый на сервере того, что мы поменяли, например вот так:
    #Если НаСервере Тогда
    	// демо_РаботаСФормамиСервер.ДобавитьРеквизитМакета(ЭтаФорма, "???");
    	// демо_РаботаСФормамиСервер.ДобавитьКомандуМакета(ЭтаФорма, Команды.Найти("???"));
    	демо_РаботаСФормамиСервер.ДобавитьЭлементМакета(ЭтаФорма, Элементы.демо_ГруппаНомерПоПлану);
    	демо_РаботаСФормамиСервер.ДобавитьЭлементМакета(ЭтаФорма, Элементы.НомерПоПлану);
    	демо_РаботаСФормамиСервер.ДобавитьЭлементМакета(ЭтаФорма, Элементы.демо_ПрефиксСортировки);
    	демо_РаботаСФормамиСервер.ДобавитьЭлементМакета(ЭтаФорма, Элементы.демо_Декорациясортировка);
    	демо_РаботаСФормамиСервер.ДобавитьЭлементМакета(ЭтаФорма, Элементы.демо_КодСортировки);
    #КонецЕсли

     

  4. В типовую форму добавляем несколько процедур в определенном порядке (что-то на клиенте, что-то на сервере).
    Основная процедура "ПриОткрытии", остальное можно найти в приложенной конфигурации.
    &НаКлиенте
    Процедура демо_ПриОткрытии(Отказ)
    
        Выполнить(демо_РаботаСФормамиКлиентСервер.ПолучитьСтароеДействие(ЭтаФорма, "ПриОткрытии"));
    
    	Макет = ПолучитьФорму(демо_ПолучитьИмяМакета(),,, Истина);
    
    	РеквизитыМакета = демо_РаботаСФормамиКлиент.ПолучитьРеквизитыМакета(Макет);
    	КомандыМакета = демо_РаботаСФормамиКлиент.ПолучитьКомандыМакета(Макет);
    	ЭлементыМакета = демо_РаботаСФормамиКлиент.ПолучитьЭлементыМакета(Макет);
    
    	демо_НастроитьФормуПоМакету(РеквизитыМакета, КомандыМакета, ЭлементыМакета);
    	демо_РаботаСФормамиКлиент.НастроитьФормуПоМакету(ЭтаФорма, Макет);
    	демо_ПереместитьЭлементыПоМакету(ЭлементыМакета);
    
    КонецПроцедуры
    

    Порядок следующий:
     - Получение макета. Процедура ПолучитьФорму доступна только на клиенте.
     - Получение реквизитов, команд и элементов макета. Были добавлены в макет при получении формы выше.
     - Добавляем реквизиты, команды и элементы в типовую форму из макета. Требует перехода на сервер, т.к. форма не передается между клиентом и сервером.
     - Настройка формы по макету. Все свойства уже созданных ранее элементов заполняем на клиенте.
     - Перемещение элементов. Делаем на сервере после заполнения свойств на клиенте, т.к. вид элемента заполняется на клиенте.

Итоги

  • 3 общих процедуры.
  • Макет, в котором визуально редактируем изменения типовых форм.
  • Типовая форма визуально не изменена.
  • В модуле формы добавлены несколько процедур.
  • Все вышеперечисленное выше минимально пересекается с типовыми объектами и удобно для обновления.

Ссылки

Изначально механизм реализовал у себя для обычных форм (лет 7 назад). И успешно экономил кучу времени на обновлении.

Идея и исходный код переопределения взяты отсюда: http://kb.mista.ru/article.php?id=268. Доработано.

Настройка формы по макету отсюда: http://kb.mista.ru/article.php?id=327. Доработано.
 

динамическое заполнение управляемая форма элементы реквизиты команды действия

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62143    43    59    

81

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

2400 руб.

29.06.2020    16937    22    4    

36

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    9721    YA_418728146    6    

146

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2341    29    progmaster    8    

3

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3975    kalyaka    4    

29

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12329    1    5    

10

Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)

Работа с интерфейсом Платформа 1С v8.3 Платные (руб)

Подсистема условного оформления элементов форм (далее подсистема) предназначена для настройки оформления элементов форм (видимость, доступность, цвет фона, цвет текста и прочее) в пользовательском режиме 1С. Также подсистему возможно использовать для ограничения доступа к реквизитам формы для определенных пользователей (или групп пользователей).

6000 руб.

18.01.2022    8969    1    2    

6

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

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Простая и удобная среда разработки 1С:Предприятия позволяет практически любому человеку начать работать под капотом 1С - в конфигураторе. Время идет, новички становятся программистами, специалистами, а об удобных приемах работы узнают годами, по ходу своего карьерного пути. А здорово было бы, если бы все знали удобные приемы в начале своего пути? Эти несколько приемов будут полезны новичкам, так как они затрагивают ту область работы, с которой приходится сталкиваться в начале карьеры.

12.11.2021    17750    acces969    95    

148
Оставьте свое сообщение