Внесение изменения в формы с помощью расширений, без заимствования формы.

13.09.19

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Расширение формы
.cfe 29,23Kb
11
11 Скачать (1 SM) Купить за 1 850 руб.

Статья не новая, попытку номер 1 я уже описывал, поэтому очередность в обратном порядке, возможно скоро появится и следующие попытки.

ПОПЫТКА номер 2.

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	#Область ШаблонДополнительнойФормы
	МетаданныеОбъекта = Параметры.Ключ.Метаданные();
	ПолноеИмяОбъекта  = МетаданныеОбъекта.ПолноеИмя();
	СохраненныеНастройки     = РасширениеФорм_ОбщегоНазначения.ЗагрузитьОбщиеНастройки(ПолноеИмяОбъекта);
	ОсновнойРеквизитФормы    = РасширениеФорм_ОбщегоНазначения.ПолучитьОсновнойРеквизит(СохраненныеНастройки);	
	#КонецОбласти
	
КонецПроцедуры

#Область ШаблонДополнительнойФормы
&НаКлиенте
Процедура Настройка(Команда)
	
	ШаблонЗаголовка = НСтр("ru='Настройка расширения формы'");
	ТекстЗаголовка  = ШаблонЗаголовка;
	//ТекстЗаголовка = СтрШаблон(ШаблонЗаголовка, ПолноеИмяОбъекта);
	
	ДанныеВладельца = Неопределено;
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ПолноеИмяОбъекта",     ПолноеИмяОбъекта);
	ПараметрыФормы.Вставить("ЗаголовокФормы",       ТекстЗаголовка);
	
	ДопПараметры = РасширениеФорм_ОбщегоНазначенияКлиент.ПодготовитьПарамтрыУниверсальнойФормы(ВладелецФормы.Параметры.Ключ, ВладелецФормы);
	
	ОповещениеОВыборе = Новый ОписаниеОповещения("ФормаНастройкиПослеВыбора", ЭтаФорма, ДопПараметры);
	
	ОткрытьФорму("ОбщаяФорма.РасширениеФорм_ФормаНастройки", 
	ПараметрыФормы, 
	, 
	, 
	, 
	,
	ОповещениеОВыборе,
	РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

&НаКлиенте
Процедура ФормаНастройкиПослеВыбора(РезультатВыбора, ДопПараметры) Экспорт
	
	//ЗаполнитьЗначенияСвойств(Параметры, ДопПараметры);	
	Если РезультатВыбора <> Неопределено Тогда
		
		ИмяФормыРасширения = РасширениеФорм_ОбщегоНазначения.ПолучитьИмяФормы(ДопПараметры);
		
		ОткрытьФорму(ИмяФормыРасширения, 
		ДопПараметры, 
		ВладелецФормы, 
		, 
		ВладелецФормы.Окно, 
		ВладелецФормы.НавигационнаяСсылка,
		,
		РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
		
	КонецЕсли;	
	            
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ПодключитьОбработчикОжидания("ОбновитьДанныеФормыВладельца", 1, Ложь);
	ДопПараметры          = РасширениеФорм_ОбщегоНазначенияКлиент.ПодготовитьПарамтрыУниверсальнойФормы(ВладелецФормы.Параметры.Ключ, ВладелецФормы);
	ОсновнойРеквизитФормы = РасширениеФорм_ОбщегоНазначенияКлиент.ПодготовитьДанныеФормыВлвдельца(ДопПараметры, ВладелецФормы, ОсновнойРеквизитФормы);
		
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьДанныеФормыВладельца()
	
	Если Модифицированность Тогда
		
		КопироватьДанныеФормы(Объект, ВладелецФормы[ОсновнойРеквизитФормы]);
		ВладелецФормы.Модифицированность = Истина;
		Модифицированность = Ложь;
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

Пример использования заимствованной формы и формы-шаблона

 

ПОПЫТКА номер 1.

Дополнения от 13.09.2019

  1. Для ТЧ добавлена возможность добавлять, удалять строки.
  2. Добавлена возможность настраивать формы для "Планы видов расчета".
  3. Настройка видимости по пользователям.
  4. Задавать Имя основного реквизита формы основной конфигурации

Краткая инструкция на примере добавленных реквизитов в документ "Поступления на расчетный счет" конфигурации "Бухгалтерия предприятия, редакция 3.0 БИТ.ФИНАНС 3.1"

  1. Добавим расширение. (не знаете как, используйте поиск по сайту)
  2. Настройка расширения под конкретную конфигурацию. Добавляем объекты в расширение и настраиваем общую команду.

в результате на панели действий формы должна появиться ссылка "Расширение формы"

 

  1. Настройка формы.  Можно добавить реквизиты, стандартные реквизиты, реквизиты ТЧ. (каждый объект настраивается отдельно, настройки сохраняются для всех пользователей)

в результате расширенная форма стала выглядеть так, 

 

При редактировании данные формы расширения переносятся в основную форму. 

Данная форма имеет ограниченный функционал и не является заменой основной формы, рекомендуется к использованию для редактирования реквизитов не отображенных на основной форме. ВНИМАНИЕ: При повторной активации навигационной ссылки "Расширение формы..." данные формы автоматически не обновляются.

Если в открытой форме объекта уже была активирована ссылка расширения, изменения в основной форме не отобразятся в расширении, используйте кнопку обновления. 

Важно - имя основного реквизита формы объекта (формы, которую расширяем) обязательно должно быть "Объект".

Предполагаю, что должно работать на любой конфигурации (не проверял), разрабатывал на платформе 1С:Предприятие 8.3 (8.3.13.1809).

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55604    17    23    

43

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    19918    28    6    

44

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

20.08.2024    23335    mrXoxot    44    

130

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    11892    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    18325    1228    elcoan    53    

125

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

10.04.2023    12857    167    acces969    31    

126

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

1 стартмани

05.07.2022    7909    kalyaka    6    

33

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

Ещё с времен платформы 8.3.13 можно изменять цвет стилей интерфейса главного окна. Данное расширение позволит вам выбрать из подготовленных десятка стилей на свой вкус.

1 стартмани

01.07.2022    26818    422    rpgshnik    69    

101
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Qbik 5 27.05.20 11:04 Сейчас в теме
I. Динамически настраиваемое расширение формы.
1. При изменении данных на динамической форме - данные меняются и в основной форме!
Но при изменении данных в основной форме - на динамической форме остаются исходные данные.

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

II. Форма из конфигурации расширения
1. Не понял порядок работы и подключения:
- скопировал форма-шаблон;
- установил нужный тип основному реквизиту формы "объект"
- произведите необходимую настройку формы - не сделал. Что это?

При выборе этого режима отображается форма как в варианте I. Как увидеть отличия? и В чем суть разницы?
2. duhh 239 29.05.20 14:44 Сейчас в теме
(1)

1. Изменить процедуру
&НаКлиенте
Процедура ОбновитьДанные(Команда)

ДопПараметры = РасширениеФорм_ОбщегоНазначенияКлиент.ПодготовитьПарамтрыУниверсальнойФормы(ВладелецФормы.Параметры.Ключ, ВладелецФормы);
ОсновнойРеквизитФормы = РасширениеФорм_ОбщегоНазначенияКлиент.ПодготовитьДанныеФормыВлвдельца(ДопПараметры, ВладелецФормы, ОсновнойРеквизитФормы);
ОбновитьДанныеФормы(ДопПараметры);

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

2. Разница, в первом случае это динамически программно создаваемая форма, во втором форма настраиваемая в конфигураторе, выбор варианта использования настраивается в предприятии в форме настройки расширяемой формы.
3. lion11 145 26.06.23 10:39 Сейчас в теме
Платформа 8.3.22.1750. БП 3.0.138.25
Если доп. реквизитов много, а основная форма не большая, то доп.форма открывается укороченной, надо постоянно увеличивать пользователю, что не удобно.
Можно ее как-то увеличить изначально?

При использовании 2 варианта с настраиваемой формой не дает сохранить значения доп реквизитов. Выходит окно "Не удалось начать редактирование. Пользователь уже начал редактировать эти данные".
Это можно как-то исправить?
Оставьте свое сообщение